#!/usr/bin/make -f

# Filter out -Wl,-Bsymbolic-functions from default Ubuntu LDFLAGS
export DEB_LDFLAGS_MAINT_STRIP=-Wl,-Bsymbolic-functions

ifeq ($(shell pkg-config --atleast-version 2.6 sigc++-2.0 && echo 1),1)
ifeq ($(shell echo __GNUC__ | gcc -E - | tail -1),5)
# Workaround for too new libsigc++/glibmm, too old gcc combination
export DEB_CXXFLAGS_MAINT_APPEND=-std=c++11
endif
endif

ifeq ($(shell perl -mInline::Python < /dev/null 2>/dev/null && echo 1),1)
N =
else
N = -Nnordugrid-arc-arex-python-lrms
endif

ifeq ($(shell dpkg-query -W -f '$${Depends}' libinline-python-perl 2>/dev/null | grep -q python3 && echo 1),1)
PYVER = 3
WITH_ALT_PYTHON =
P = -Npython-nordugrid-arc
else
PYVER = 2
WITH_ALT_PYTHON = --with-altpython=python3
P = --with python3
endif

ifeq ($(shell type dh_systemd_enable > /dev/null 2> /dev/null && echo 1),1)
WSD = --with systemd
else
WSD =
endif

ifeq ($(shell test -r /usr/include/systemd/sd-daemon.h && echo 1),1)
ifeq ($(DEB_HOST_ARCH_OS),linux)
SYSTEMD = yes
else
SYSTEMD = no
endif
else
SYSTEMD = no
endif

ifeq ($(shell grep -q no-enable /usr/bin/dh_installinit 2>/dev/null && echo 1),1)
SYSVNOENBL = --no-enable
else
SYSVNOENBL =
endif

ifeq ($(shell grep -q no-enable /usr/bin/dh_systemd_enable 2>/dev/null && echo 1),1)
SYSDNOENBL = --no-enable
else
SYSDNOENBL =
endif

ifeq ($(PYVER),3)
TWISTVER = $(shell dpkg-query -W -f '$${Version}' python3-twisted)
else
TWISTVER = $(shell dpkg-query -W -f '$${Version}' python-twisted)
endif

ifeq ($(shell dpkg --compare-versions $(TWISTVER) ge 22 && echo 1),1)
ACIX = no
NA = -Nnordugrid-arc-acix-core -Nnordugrid-arc-acix-scanner -Nnordugrid-arc-acix-index
else
ACIX = yes
NA =
endif

%:
	dh $@ --with autoreconf $(WSD) --with python$(PYVER) $(P) $(N) $(NA)

override_dh_auto_configure:
	if [ ! -f po/POTFILES.in.save ] ; then \
	    cp -p po/POTFILES.in po/POTFILES.in.save ; \
	fi

	LDFLAGS="$(LDFLAGS) -Wl,-z,defs" \
	dh_auto_configure -- \
		    --disable-doc \
		    --libdir=/usr/lib \
		    --libexecdir=/usr/lib \
		    --docdir=/usr/share/doc/nordugrid-arc \
		    --enable-acix=$(ACIX) \
		    --enable-internal \
		    --enable-systemd=$(SYSTEMD) \
		    --with-systemd-units-location=/lib/systemd/system \
		    --with-sysv-scripts-location=/etc/init.d \
		    --with-python=python$(PYVER) \
		    $(WITH_ALT_PYTHON)

override_dh_auto_clean:
	dh_auto_clean

	rm -f debian/nordugrid-arc-arex.arc-arex.init
	rm -f debian/nordugrid-arc-arex.arc-arex-ws.init
	rm -f debian/nordugrid-arc-hed.arched.init
	rm -f debian/nordugrid-arc-datadelivery-service.arc-datadelivery-service.init
	rm -f debian/nordugrid-arc-gridftpd.arc-gridftpd.init
	rm -f debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap.init
	rm -f debian/nordugrid-arc-acix-scanner.arc-acix-scanner.init
	rm -f debian/nordugrid-arc-acix-index.arc-acix-index.init

	rm -f debian/nordugrid-arc-arex.arc-arex.service
	rm -f debian/nordugrid-arc-arex.arc-arex-ws.service
	rm -f debian/nordugrid-arc-hed.arched.service
	rm -f debian/nordugrid-arc-datadelivery-service.arc-datadelivery-service.service
	rm -f debian/nordugrid-arc-gridftpd.arc-gridftpd.service
	rm -f debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap.service
	rm -f debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap-slapd.service
	rm -f debian/nordugrid-arc-acix-scanner.arc-acix-scanner.service
	rm -f debian/nordugrid-arc-acix-index.arc-acix-index.service

	rm -f debian/*.default
	rm -f debian/*.maintscript
	rm -f debian/*.preinst

	if [ -f po/POTFILES.in.save ] ; then \
	    mv po/POTFILES.in.save po/POTFILES.in ; \
	fi

	find python src -name *.pyc -exec rm {} ';'
	find python src -depth -name __pycache__ -exec rm -rf {} ';'
	rm -rf src/services/acix/*/test/_trial_temp
	rm -rf src/services/a-rex/infoproviders/_Inline
	rm -rf src/services/a-rex/infoproviders/test/_Inline

override_dh_auto_install:
	dh_auto_install

	find debian/tmp -name \*.la -exec rm -fv '{}' ';'

	rm -f debian/tmp/usr/lib/arc/*.a

	rm -f debian/tmp/usr/lib/libarcglobusutils.so

	find debian/tmp -depth -name __pycache__ -exec rm -rf '{}' ';'

	if [ -d debian/tmp/etc/bash_completion.d ]; then \
	    mkdir -p debian/tmp/usr/share/bash-completion; \
		mv debian/tmp/etc/bash_completion.d \
		   debian/tmp/usr/share/bash-completion/completions; \
	fi

	if [ -z "$(SYSVNOENBL)" ] ; then \
	    for x in debian/*.enable ; do \
		cp -p $$x $${x%.enable} ; \
	    done ; \
	else \
	    for x in debian/*.no-enable ; do \
		cp -p $$x $${x%.no-enable} ; \
	    done ; \
	fi

	mv debian/tmp/etc/init.d/arc-arex \
	   debian/nordugrid-arc-arex.arc-arex.init
	mv debian/tmp/etc/init.d/arc-arex-ws \
	   debian/nordugrid-arc-arex.arc-arex-ws.init
	mv debian/tmp/etc/init.d/arched \
	   debian/nordugrid-arc-hed.arched.init
	mv debian/tmp/etc/init.d/arc-datadelivery-service \
	   debian/nordugrid-arc-datadelivery-service.arc-datadelivery-service.init
	mv debian/tmp/etc/init.d/arc-gridftpd \
	   debian/nordugrid-arc-gridftpd.arc-gridftpd.init
	mv debian/tmp/etc/init.d/arc-infosys-ldap \
	   debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap.init
	if [ $(ACIX) = "yes" ] ; then \
	mv debian/tmp/etc/init.d/arc-acix-scanner \
	   debian/nordugrid-arc-acix-scanner.arc-acix-scanner.init ; \
	mv debian/tmp/etc/init.d/arc-acix-index \
	   debian/nordugrid-arc-acix-index.arc-acix-index.init ; \
	fi

	mv debian/tmp/lib/systemd/system/arc-arex.service \
	   debian/nordugrid-arc-arex.arc-arex.service
	mv debian/tmp/lib/systemd/system/arc-arex-ws.service \
	   debian/nordugrid-arc-arex.arc-arex-ws.service
	mv debian/tmp/lib/systemd/system/arched.service \
	   debian/nordugrid-arc-hed.arched.service
	mv debian/tmp/lib/systemd/system/arc-datadelivery-service.service \
	   debian/nordugrid-arc-datadelivery-service.arc-datadelivery-service.service
	mv debian/tmp/lib/systemd/system/arc-gridftpd.service \
	   debian/nordugrid-arc-gridftpd.arc-gridftpd.service
	mv debian/tmp/lib/systemd/system/arc-infosys-ldap.service \
	   debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap.service
	mv debian/tmp/lib/systemd/system/arc-infosys-ldap-slapd.service \
	   debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap-slapd.service
	if [ $(ACIX) = "yes" ] ; then \
	mv debian/tmp/lib/systemd/system/arc-acix-scanner.service \
	   debian/nordugrid-arc-acix-scanner.arc-acix-scanner.service ; \
	mv debian/tmp/lib/systemd/system/arc-acix-index.service \
	   debian/nordugrid-arc-acix-index.arc-acix-index.service ; \
	fi

	chmod 4755 debian/tmp/usr/bin/arc-job-cgroup

override_dh_install:
	dh_install -p libarccommon3 \
	  debian/tmp/usr/lib/python$(PYVER).*/site-packages/arc/__init__.py\*
	if [ $(PYVER) -eq 2 ] ; then \
	  dh_install -p python3-nordugrid-arc \
	    debian/tmp/usr/lib/python3.*/site-packages/arc/__init__.py\* ; fi
	rm debian/tmp/usr/lib/python?.*/site-packages/arc/__init__.py*
	dh_install --remaining-packages --fail-missing

override_dh_installinit:
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-hed --name arched
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-arex --name arc-arex
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-arex --name arc-arex-ws
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-datadelivery-service --name arc-datadelivery-service
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-gridftpd --name arc-gridftpd
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-infosys-ldap --name arc-infosys-ldap
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-acix-scanner --name arc-acix-scanner
	dh_installinit $(SYSVNOENBL) -p nordugrid-arc-acix-index --name arc-acix-index

override_dh_systemd_enable:
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-hed --name arched
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-arex --name arc-arex
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-arex --name arc-arex-ws
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-datadelivery-service --name arc-datadelivery-service
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-gridftpd --name arc-gridftpd
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-infosys-ldap --name arc-infosys-ldap
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-infosys-ldap --name arc-infosys-ldap-slapd
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-acix-scanner --name arc-acix-scanner
	dh_systemd_enable $(SYSDNOENBL) -p nordugrid-arc-acix-index --name arc-acix-index

override_dh_systemd_start:
	dh_systemd_start -p nordugrid-arc-hed --name arched
	dh_systemd_start -p nordugrid-arc-arex --name arc-arex
	dh_systemd_start -p nordugrid-arc-arex --name arc-arex-ws
	dh_systemd_start -p nordugrid-arc-datadelivery-service --name arc-datadelivery-service
	dh_systemd_start -p nordugrid-arc-gridftpd --name arc-gridftpd
	dh_systemd_start -p nordugrid-arc-infosys-ldap --name arc-infosys-ldap
	dh_systemd_start -p nordugrid-arc-infosys-ldap --name arc-infosys-ldap-slapd
	dh_systemd_start -p nordugrid-arc-acix-scanner --name arc-acix-scanner
	dh_systemd_start -p nordugrid-arc-acix-index --name arc-acix-index

override_dh_fixperms:
	dh_fixperms -X /usr/bin/arc-job-cgroup

override_dh_compress:
	dh_compress -X arc.conf.reference -X arc.conf.DELETED

ifeq ($(PYVER),2)
override_dh_python2:
	dh_python2

	echo "pydeps:Depends=python-ldap" \
		>> debian/nordugrid-arc-arex.substvars
	echo "pydeps:Depends=python-dnspython" \
		>> debian/nordugrid-arc-community-rtes.substvars
	if [ $(ACIX) = "yes" ] ; then \
	echo "pydeps:Depends=python-twisted, python-openssl" \
		>> debian/nordugrid-arc-acix-core.substvars ; \
	fi
	echo "pydeps:Depends=python-ldap, python-dnspython" \
		>> debian/nordugrid-arc-archery-manage.substvars
	echo "pydeps:Depends=python-nordugrid-arc (= \$${binary:Version})" \
		>> debian/nordugrid-arc-plugins-python.substvars
	echo "pydeps:Depends=python-nordugrid-arc (= \$${binary:Version})" \
		>> debian/nordugrid-arc-arex-python-lrms.substvars
endif

ifeq ($(PYVER),3)
override_dh_python3:
	dh_python3

	echo "pydeps:Depends=python3-ldap" \
		>> debian/nordugrid-arc-arex.substvars
	echo "pydeps:Depends=python3-dnspython" \
		>> debian/nordugrid-arc-community-rtes.substvars
	if [ $(ACIX) = "yes" ] ; then \
	echo "pydeps:Depends=python3-twisted, python3-openssl" \
		>> debian/nordugrid-arc-acix-core.substvars ; \
	fi
	echo "pydeps:Depends=python3-ldap, python3-dnspython" \
		>> debian/nordugrid-arc-archery-manage.substvars
	echo "pydeps:Depends=python3-nordugrid-arc (= \$${binary:Version})" \
		>> debian/nordugrid-arc-plugins-python.substvars
	echo "pydeps:Depends=python3-nordugrid-arc (= \$${binary:Version})" \
		>> debian/nordugrid-arc-arex-python-lrms.substvars
endif
