#!/usr/bin/make -f
# -*- makefile -*-

# Copyrigth: 2005-2014,2017 Instituto Superior Técnico
# Author: Jose M Calhariz <jose.calhariz@ist.utl.pt>

# License: GPL2+ with OpenSSL exception


# "based" on template Makefile for most debian packages version 0.29

include /usr/share/dpkg/pkg-info.mk

PACKNAME=$(shell dh_listpackages)
SOURCENAME=$(shell dpkg-parsechangelog | grep "Source:" | cut -d ' ' -f 2)
DEBVER=$(shell dpkg-parsechangelog | grep "Version:" | cut -d ' ' -f 2)

VER=$(shell dpkg-parsechangelog | grep "Version:" | cut -d ' ' -f 2 | cut -f 1 -d -)
ifeq ($(DEB_VERSION),$(DEB_VERSION_UPSTREAM))
NATIVE=1
else
NATIVE=0
endif
MDIST=stretch
DIST=$(shell dpkg-parsechangelog | grep "Distribution" | cut -d ' ' -f 2)
SECTION=main
#CATEG=my_sources
CATEG=other_sources
BINDIR=/usr/bin
SBINDIR=/usr/sbin
USRSHAREBASE=/usr/share
USRLIBBASE=/usr/lib
VARLIBBASE=/var/lib
SHAREDIR=$(USRSHAREBASE)/$(PACKNAME)
LIBDIR=$(USRLIBBASE)/$(PACKNAME)
DOCDIR=/usr/share/doc/$(PACKNAME)
ETCBASE=/etc
ETCDIR=$(ETCBASE)/$(PACKNAME)
MANDIR=/usr/share/man/man8
LOGROTATEDIR=/etc/logrotate.d
ZIPFILE=file-2.0.0.zip
ZIPDIR=file-2.0.0
TARFILE=file-$(DEB_VERSION_UPSTREAM).tar.gz
TARDIR=untar/$(PACKNAME)-$(DEB_VERSION_UPSTREAM)
ifeq ($(NATIVE),0)
DISTFILE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig.tar.xz
#DISTFILES=$(DISTFILE) $(DEB_SOURCE)_$(DEB_VERSION).diff.gz
DISTFILES=$(DISTFILE) $(DEB_SOURCE)_$(DEB_VERSION).tar.gz
else
DISTFILE=$(DEB_SOURCE)_$(DEB_VERSION).tar.xz
DISTFILES=$(DISTFILE)
endif


all:
	echo $(DEB_VERSION_UPSTREAM) $(DEB_VERSION) $(MDIST) $(DEB_DISTRIBUTION) $(PACKNAME) $(DEB_SOURCE) $(NATIVE)
	echo $(DEB_HOST_GNU_TYPE) $(DEB_BUILD_GNU_TYPE)


unpack:unpack-up-stamp
unpack-up-stamp:
	#unzip $(ZIPFILE)
	#unzip $(ZIPFILE) -d $(ZIPDIR)
	#mkdir untar
	#tar xzf $(TARFILE) -C untar
	#Prepare files for patching
	touch unpack-up-stamp


#configure:unpack debian/stamp-patched configure-up-stamp
configure:unpack configure-up-stamp
configure-up-stamp:
	touch configure-up-stamp


build-arch: configure build-arch-up-stamp
build-arch-up-stamp:
	touch build-arch-up-stamp


build-indep: configure build-indep-up-stamp
build-indep-up-stamp:
	touch build-indep-up-stamp


build: build-arch build-indep


install:build install-up-stamp
install-up-stamp:
	[ -d $(DESTDIR)$(LIBDIR) ] || mkdir -p $(DESTDIR)$(LIBDIR)
	[ -d $(DESTDIR)$(ETCDIR) ] || mkdir -p $(DESTDIR)$(ETCDIR)
	cp nagios-plugins/check_* $(DESTDIR)$(LIBDIR)
	cp nagios-plugins-tp/plugins/check_* $(DESTDIR)$(LIBDIR)
	cp etc-tp-nagios-plugins/check_* $(DESTDIR)$(ETCDIR)
	touch install-up-stamp


clean:
	find -name '*~' -exec rm {} \;
	rm -rf $(ZIPDIR) untar build-dir
	rm -f  configure-up-stamp unpack-up-stamp build-arch-up-stamp build-indep-up-stamp build-up-stamp install-up-stamp


# Create the files ready for distribution, need to be run in a dir
# without SVN control files

# Non-native package
#dist: clean
#	if test -e ../$(DISTFILE) ; then echo "$(DISTFILE) file should be generated only once" ; false ; fi
#	cd .. && GZIP=-9 tar --exclude='.svn' --exclude='debian' --exclude='tmp' --exclude='*~' -czf $(DISTFILE) $(DEB_SOURCE)
#	cd .. && svn add $(DISTFILE)

# Create the files ready for distribution
# Debian native package
#dist: clean
#	cd .. && GZIP=-9 tar --exclude='.svn' --exclude='tmp' --exclude='*~' -czf $(DISTFILE) $(DEB_SOURCE)
#	cd .. && svn add $(DISTFILE)


# Experimental rule to build archive for public distribution
# Non-native package
dist-exp: clean
ifeq ($(NATIVE),0)
	# Non native package
	if test -e ../$(DISTFILE) ; then echo "$(DISTFILE) file should be generated only once" ; false ; fi
	#cp -al ../$(DEB_SOURCE) ../$(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)
	cd .. && tar --exclude='.svn' --exclude='debian' --exclude='tmp' --exclude='*~' -cf - $(DEB_SOURCE) | xz -v9 -c > $(DISTFILE)
	cd .. && svn add $(DISTFILE)
else
	# native package
	cd .. && tar --exclude='.svn' --exclude='tmp' --exclude='*~' -czf - $(DEB_SOURCE) | xz -v9 -c > $(DISTFILE)
	cd .. && svn add $(DISTFILE)
endif


# Create the deb file
deb:
	debuild -i
	debc

packages: deb


# Upload the packages and the distribution files into the rigth places
upload:	
	make -f ../upload upload

# Make tags of the sources as documented by subversion
tag:
	cd .. ; svn add $(DISTFILES) ;\
		echo $(PWD)
	cd .. ; svn add --force \
			$(DEB_SOURCE)_$(DEB_VERSION)_*.changes \
			$(DEB_SOURCE)_$(DEB_VERSION)_*.build \
			$(DEB_SOURCE)_$(DEB_VERSION).dsc
	cd .. ; svn add --force *_$(DEB_VERSION)_*.deb
	cd .. ; svn st ; echo "enter to continue" ; read enter
	cd .. ; shopt -s nullglob ; svn ci -m "released v$(DEB_VERSION)" \
		$(DISTFILES) \
		$(DEB_SOURCE)_$(DEB_VERSION)_*.changes \
		$(DEB_SOURCE)_$(DEB_VERSION)_*.build \
		$(DEB_SOURCE)_$(DEB_VERSION).dsc \
		*_$(DEB_VERSION)_*.deb
	svn mkdir --parents -m "Preparing tag directory for release v$(DEB_VERSION)" $(shell svn info | grep "Repository Root" | cut -d ' ' -f 3)/tags/src/$(DEB_SOURCE)/$(DEB_SOURCE)-$(DEB_VERSION)
	cd .. ; shopt -s nullglob ; svn copy -m "released v$(DEB_VERSION)" \
		$(DISTFILES) \
		$(DEB_SOURCE)_$(DEB_VERSION)_*.changes \
		$(DEB_SOURCE)_$(DEB_VERSION)_*.build \
		$(DEB_SOURCE)_$(DEB_VERSION).dsc \
		*_$(DEB_VERSION)_*.deb \
		$(shell svn info | grep "Repository Root" | cut -d ' ' -f 3)/tags/src/$(DEB_SOURCE)/$(DEB_SOURCE)-$(DEB_VERSION)
	bash -c 'DEBEMAIL="jose.calhariz@tecnico.ulisboa.pt" debchange -i "New release"'


.PHONY: build clean binary-indep binary-arch binary install configure unpack
