#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1

# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

DEB_VERSION := $(shell dpkg-parsechangelog -S Version)
DEB_NOEPOCH_VERSION := $(shell echo $(DEB_VERSION) | cut -d: -f2-)
DEB_UPSTREAM_VERSION := $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')

export PETSC4PY_VERSION=$(DEB_UPSTREAM_VERSION)

# use only major.minor as PETSc version (not major.minor.patch)
PETSC_VERSION=$(shell echo $(DEB_UPSTREAM_VERSION) | awk 'BEGIN { FS="."}; {print $$1"."$$2 }')$(PETSC_EXT)
export PETSC_DIR_REAL=/usr/lib/petscdir/petsc$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-real
export PETSC_DIR_COMPLEX=/usr/lib/petscdir/petsc$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-complex

# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed


# main packaging script based on dh7 syntax
%:
	PYBUILD_NAME=petsc4py_real PETSC_DIR=$(PETSC_DIR_REAL)  dh $@ --with python3 --buildsystem=pybuild
	PYBUILD_NAME=petsc4py_complex PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh $@ --with python3 --buildsystem=pybuild

override_dh_clean:
	dh_clean
	rm -rf .eggs

# no need to build anything for arch-indep packages (doc, dummy package)
override_dh_auto_build-indep: ;
override_dh_auto_install-indep: ;

override_dh_auto_build-arch:
	PYBUILD_NAME=petsc4py_real PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_build -ppython3-petsc4py-real -- --build-args=--force
	PYBUILD_NAME=petsc4py_complex PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_build -ppython3-petsc4py-complex
	# petsc4py embeds the deep PETSC_DIR path as RPATH in its library.
	# Swap it out for a standard path, or else dh_shlibdeps gets confused
	chrpath -d .pybuild/*python*/build/petsc4py/lib/PETSc*.so

override_dh_auto_install-arch:
	PYBUILD_NAME=petsc4py_real PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_install -ppython3-petsc4py-real
	for p in debian/python3-petsc4py-real/usr/lib/python3*/dist-packages/petsc4py*; do \
	  mv $$p $$(dirname $$p)/$$( basename $$p | sed "s/petsc4py/petsc4py_real/"); \
	done
	PYBUILD_NAME=petsc4py_complex PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_install -ppython3-petsc4py-complex
	for p in debian/python3-petsc4py-complex/usr/lib/python3*/dist-packages/petsc4py*; do \
	  mv $$p $$(dirname $$p)/$$( basename $$p | sed "s/petsc4py/petsc4py_complex/"); \
	done

override_dh_installdocs-arch:
	dh_installdocs -a debian/README.Debian

override_dh_installdocs-indep:
	dh_installdocs -i debian/README.Debian
	rm debian/python-petsc4py-doc/usr/share/doc/python-petsc4py-doc/usrman/_static/jquery*.js
	ln -sf /usr/share/javascript/jquery/jquery.js debian/python-petsc4py-doc/usr/share/doc/python-petsc4py-doc/usrman/_static/jquery.js
	rm debian/python-petsc4py-doc/usr/share/doc/python-petsc4py-doc/usrman/_static/underscore*.js
	ln -sf /usr/share/javascript/underscore/underscore.js debian/python-petsc4py-doc/usr/share/doc/python-petsc4py-doc/usrman/_static/underscore.js

override_dh_python3:
	dh_python3
	dh_numpy3

override_dh_compress:
	dh_compress -Xpdf

override_dh_installdeb:
	dh_installdeb
	for pkg in $$(dh_listpackages -a); do \
	  sed -i -e 's/__PETSC4PY_VERSION__/$(PETSC4PY_VERSION)/' debian/$$pkg/DEBIAN/*; \
	done
