File debian.rules of Package libkolab

#!/usr/bin/make -f

PHPAPI := $(shell php-config --phpapi)
PHPBIN := $(shell php-config --php-binary)
PHPEXT := $(shell php-config --extension-dir)
PHPINC := $(shell php-config --include-dir)

PHP_VERSIONS=8.2 8.1 8.0 7.4 7.3

export DH_VERBOSE=1
export DH_OPTIONS=-v

export DEB_LDFLAGS_MAINT_APPEND="-Wl,--as-needed"

%:
	if [ -f /usr/bin/python ] ; then \
        dh $@ --parallel --with python2,python3 --buildsystem=pybuild ; \
    else \
        dh $@ --parallel --with python3 --buildsystem=pybuild ; \
    fi

override_dh_gencontrol:
	echo "php:Depends=phpapi-${PHPAPI}" >> debian/php-kolab.substvars

	if [ -f /etc/plesk-release ] ; then \
		for version in $(PHP_VERSIONS) ; do \
			if [ ! -f "/opt/plesk/php/$${version}/bin/php-config" ] ; then \
				continue ; \
			fi ; \
			shver=$$(echo $${version} | sed -e 's/\.//g') ; \
			echo "" >> debian/control ; \
			echo "Package: plesk-php$${shver}-kolab" >> debian/control ; \
			echo "Architecture: amd64" >> debian/control ; \
			echo "Depends: libkolab3, plesk-php$${shver}" >> debian/control ; \
			echo "Provides: php-bindings-libkolab" >> debian/control ; \
			echo "Description: Kolab library bindings for Plesk PHP $${version}" >> debian/control ; \
			echo "" >> debian/control ; \
			sed -i -e "/Files:/ i\
 plesk-php$${shver}-kolab deb web extra" debian/control ; \
			echo "opt/plesk/php/$${version}/lib/php/modules/*.so" >> debian/plesk-php$${shver}-kolab.install ; \
			echo "debian/kolab.ini opt/plesk/php/$${version}/etc/php.d" > debian/plesk-php$${shver}-kolab.install ; \
		done ; \
	fi

	if [ -f /usr/bin/python ] ; then \
        echo "" >> debian/control ; \
        echo "Package: python-kolab" >> debian/control ; \
        echo "Architecture: any" >> debian/control ; \
        echo "Section: python" >> debian/control ; \
        echo "Depends: libkolab3 (= ${binary:Version}), {python:Depends}, ${misc:Depends}, ${shlibs:Depends}" >> debian/control ; \
        echo "Conflicts: python-kolab-kde" >> debian/control ; \
        echo "Description: Python bindings for Kolab library." >> debian/control ; \
        echo "" >> debian/control ; \
    fi

	dh_gencontrol

override_dh_auto_build:
	# Build plesk php versions
	if [ -f /etc/plesk-release ] ; then \
		for version in $(PHP_VERSIONS) ; do \
			if [ ! -f "/opt/plesk/php/$${version}/bin/php-config" ] ; then \
				continue ; \
			fi ; \
			if [ $$(/opt/plesk/php/$${version}/bin/php-config --vernum) -gt 70000 ]; then \
				sed -r -i -e 's/-c\+\+ -php[0-9]? -I/-c++ -php7 -I/g' cmake/modules/SWIGUtils.cmake ; \
			else \
				sed -r -i -e 's/-c\+\+ -php[0-9]? -I/-c++ -php5 -I/g' cmake/modules/SWIGUtils.cmake ; \
			fi ; \
			dh_auto_build --buildsystem cmake --builddirectory php-$${version} ; \
		done ; \
	fi

	dh_auto_build --buildsystem cmake --builddirectory php-vanilla

	# Build python versions via pybuild
	dh_auto_build

override_dh_auto_configure:
	echo 9 > debian/compat
	# Configure plesk php version
	if [ -f /etc/plesk-release ] ; then \
		for version in $(PHP_VERSIONS) ; do \
			if [ ! -f "/opt/plesk/php/$${version}/bin/php-config" ] ; then \
				continue ; \
			fi ; \
			dh_auto_configure --buildsystem cmake --builddirectory php-$${version} -- \
				-DLIB_INSTALL_DIR=/usr/lib \
                -DBoost_NO_BOOST_CMAKE=ON \
				-DSWIG=/usr/bin/swig \
				-DPHP_BINDINGS=ON \
				-DPHP_INCLUDE_DIR=$$(/opt/plesk/php/$${version}/bin/php-config --include-dir) \
				-DPHP_CONFIG_EXECUTABLE=/opt/plesk/php/$${version}/bin/php-config \
				-DPHP_EXECUTABLE=/opt/plesk/php/$${version}/bin/php \
				-DPHP_INCLUDE_DIR=$$(/opt/plesk/php/$${version}/bin/php-config --include-dir) \
				-DPHP_INSTALL_DIR=$$(/opt/plesk/php/$${version}/bin/php-config --extension-dir) ; \
		done ; \
	fi

	dh_auto_configure --buildsystem cmake --builddirectory php-vanilla -- \
		-DLIB_INSTALL_DIR=/usr/lib \
		-DBoost_NO_BOOST_CMAKE=ON \
	    -DSWIG=/usr/bin/swig \
	    -DPHP_BINDINGS=ON \
		-DPHP_INSTALL_DIR=$(PHPEXT) \
		-DPHP_EXECUTABLE=$(PHPBIN) \
		-DPHP_INCLUDE_DIR=$(PHPINC)

	# Configure python builds via pybuild
	dh_auto_configure -- --configure-args \
		"-DLIB_INSTALL_DIR=/usr/lib \
        -DBoost_NO_BOOST_CMAKE=ON \
		-DPYTHON_BINDINGS=ON \
		-DPYTHON_INSTALL_DIR={install_dir}"

override_dh_install:
	# Install the PHP modules manually, because they depend on PHP the API version,
	# which has to be determined dynamically, so we can't put it into an .install file.
	mkdir -p debian/tmp/usr/share/php
	make -C php-vanilla install DESTDIR=$(PWD)/debian/tmp/
	echo "$(PHPEXT)" >> debian/php-kolab.install

	# Put kolab.ini into place
	if [ -d "/etc/php/8.2/mods-available" ]; then \
		echo "debian/kolab.ini etc/php/8.2/mods-available" >> debian/php-kolab.install ; \
	elif [ -d "/etc/php/8.1/mods-available" ]; then \
		echo "debian/kolab.ini etc/php/8.1/mods-available" >> debian/php-kolab.install ; \
	elif [ -d "/etc/php/8.0/mods-available" ]; then \
		echo "debian/kolab.ini etc/php/8.0/mods-available" >> debian/php-kolab.install ; \
	elif [ -d "/etc/php/7.4/mods-available" ]; then \
		echo "debian/kolab.ini etc/php/7.4/mods-available" >> debian/php-kolab.install ; \
	elif [ -d "/etc/php/7.3/mods-available" ]; then \
		echo "debian/kolab.ini etc/php/7.3/mods-available" >> debian/php-kolab.install ; \
	else \
		echo "debian/kolab.ini etc/php/mods-available" >> debian/php-kolab.install ; \
	fi

	for i in debian/tmp/usr/lib/python*/dist-packages/kolab ; do \
		touch $${i}/__init__.py; \
	done

	if [ -f /etc/plesk-release ]; then \
		for version in $(PHP_VERSIONS) ; do \
			if [ ! -f "/opt/plesk/php/$${version}/bin/php-config" ]; then \
				continue ; \
			fi ; \
			shver=$$(echo $${version} | sed -e 's/\.//g') ; \
			make -C php-$${version} install DESTDIR=$(PWD)/debian/plesk-php$${shver}-kolab/ ; \
			mkdir -p debian/plesk-php$${shver}-kolab/opt/plesk/php/$${version}/etc/php.d/ ; \
			mkdir -p debian/plesk-php$${shver}-kolab/opt/plesk/php/$${version}/share/php/ ; \
			cp -a debian/kolab.ini debian/plesk-php$${shver}-kolab/opt/plesk/php/$${version}/etc/php.d/ ; \
			rm -rf debian/plesk-php$${shver}-kolab/usr/ ; \
		done ; \
	fi

	# Install the packages
	dh_install --list-missing

override_dh_auto_test:
	dh_auto_test || :

override_dh_shlibdeps:
	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info