#!/usr/bin/make -f

include /usr/share/dpkg/default.mk

VERSION := $(DEB_VERSION_UPSTREAM)
REVISION := $(shell echo $(DEB_VERSION) | cut -d- -f2)

SPHINX_BUILD = $(shell dpkg -L python3-sphinx | grep -m 1 "/sphinx-build$$")

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

%:
	dh $@ --with autoreconf,python3,sphinxdoc

adapt_meta_file:
	@# Embed the downstream version in the module.
	@sed \
	  -e 's/^Version:.*/Version:      $(VERSION)/' \
	  -e 's/^Release:.*/Release:      $(REVISION)/' \
	  -i.orig META


override_dh_autoreconf: adapt_meta_file
	dh_autoreconf

override_dh_auto_configure:
	@# Build the userland, but don't build the kernel modules.
	dh_auto_configure -- \
	  --bindir=/usr/bin \
	  --sbindir=/sbin \
	  --libdir=/lib/"$(DEB_HOST_MULTIARCH)" \
	  --with-udevdir=/lib/udev \
	  --with-zfsexecdir=/usr/lib/zfs-linux \
	  --enable-systemd \
	  --enable-pyzfs \
	  --with-python=python3 \
	  --with-pammoduledir='/lib/$(DEB_HOST_MULTIARCH)/security' \
	  --with-pkgconfigdir='/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig' \
	  --with-systemdunitdir=/lib/systemd/system \
	  --with-systemdpresetdir=/lib/systemd/system-preset \
	  --with-systemdgeneratordir=/lib/systemd/system-generators \
	  --with-config=user

	for i in $(wildcard $(CURDIR)/debian/*.install.in) ; do \
		basename "$$i" | grep _KVERS_ && continue ; \
		sed 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' "$$i" > "$${i%%.in}" ; \
	done

override_dh_auto_test:
override_dh_auto_test:
ifeq (amd64,$(DEB_HOST_ARCH))
	# Upstream provides an ABI guarantee that we validate here
	-$(MAKE) checkabi
endif

	# The dh_auto_test rule is disabled because
	# `make check` cannot run in an unprivileged build environment.

override_dh_auto_install:
	@# Install the utilities.
	$(MAKE) install DESTDIR='$(CURDIR)/debian/tmp'

	# Use upstream's bash completion
	install -D -t '$(CURDIR)/debian/tmp/usr/share/bash-completion/completions/' \
		'$(CURDIR)/contrib/bash_completion.d/zfs'

	# Move from bin_dir to /usr/sbin
	# Remove suffix (.py) as per policy 10.4 - Scripts
	# https://www.debian.org/doc/debian-policy/ch-files.html#s-scripts
	mkdir -p '$(CURDIR)/debian/tmp/usr/sbin/'
	mv '$(CURDIR)/debian/tmp/usr/bin/arc_summary' '$(CURDIR)/debian/tmp/usr/sbin/arc_summary'
	mv '$(CURDIR)/debian/tmp/usr/bin/arcstat' '$(CURDIR)/debian/tmp/usr/sbin/arcstat'
	mv '$(CURDIR)/debian/tmp/usr/bin/dbufstat' '$(CURDIR)/debian/tmp/usr/sbin/dbufstat'

	@# Zed has dependencies outside of the system root.
	mv '$(CURDIR)/debian/tmp/sbin/zed' '$(CURDIR)/debian/tmp/usr/sbin/zed'

	mkdir -p $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
	for i in `ls $(CURDIR)/debian/tmp/lib/$(DEB_HOST_MULTIARCH)/*.so`; do \
		ln -s /lib/$(DEB_HOST_MULTIARCH)/`readlink $${i}` $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/`basename $${i}`; \
		rm $${i}; \
	done

	chmod a-x '$(CURDIR)/debian/tmp/etc/zfs/zfs-functions'
	chmod a-x '$(CURDIR)/debian/tmp/etc/default/zfs'
	chmod a-x '$(CURDIR)/debian/tmp/usr/share/bash-completion/completions/zfs'

override_dh_python3:
	dh_python3 -p python3-pyzfs

override_dh_makeshlibs:
	dh_makeshlibs -a -V

override_dh_auto_clean:
	find . -name .gitignore -delete
	rm -rf zfs-$(DEB_VERSION_UPSTREAM)
	dh_auto_clean
	@if test -e META.orig; then mv META.orig META; fi

override_dh_install:
	find debian/tmp/lib -name *.la -delete
	dh_install

override_dh_missing:
	dh_missing --fail-missing

override_dh_installsystemd:
	# these to lines prevent the restarting of all systemd services, except
	# zfs-zed - they should not be restarted (importing, mounting, creating
	# links in /dev, and can cause erros in the log
	# (upon major.minor change)
	dh_installsystemd --no-stop-on-upgrade -X zfs-zed.service
	dh_installsystemd --name zfs-zed

override_dh_installdocs:
	dh_installdocs
ifeq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS)))
	http_proxy='127.0.0.1:9' $(SPHINX_BUILD) -N -bhtml "$(CURDIR)/contrib/pyzfs/docs/source/" debian/pyzfs-doc/usr/share/doc/pyzfs-doc/html/
endif

# ------------

debian-copyright:
	cme update dpkg-copyright -file debian/copyright.cme