#!/usr/bin/make -f

include /usr/share/dpkg/pkg-info.mk
VERSION := $(shell dpkg-parsechangelog | awk '/^Version:/ { print $$2 }')
ifneq ($(findstring bpo,$(DEB_VERSION)),)
	FLAVOR := debian-backports
else ifneq ($(findstring pgdg,$(DEB_VERSION)),)
	FLAVOR := pgdg
	# for apt.postgresql.org builds, pull in the repository key package
	PGDG_DEPENDS := pgdg-keyring
else
	FLAVOR := default
endif
SUPPORTED_VERSIONS := 14
DEFAULT_VER := 14
# Each major builds its own metapackages (percona-postgresql, -all, ...)
# that depend on that major only, so put the major first in their version
# like upstream ($(DEFAULT_VER)+$${source:Version}): a newer major's repo
# then always sorts higher on a major upgrade. Epoch 2 keeps them above the
# already-released 1:<p-common> versions.
META_VERSION := 2:$(DEFAULT_VER)+$(DEB_VERSION_UPSTREAM_REVISION)

#py2#PYTHON2_PACKAGE=postgresql-plpython-$v

%:
	dh $@

override_dh_builddeb:
	dh_builddeb -- -Zgzip

# The upstream Makefile derives DPKG_VERSION from debian/changelog and uses it
# in a target name; the epoch's ':' makes make reject the whole Makefile.
# Override it with the epoch-less version on every make invocation.
MAKE_VERSION_ARG := DPKG_VERSION=$(DEB_VERSION_UPSTREAM_REVISION)

override_dh_auto_clean:
	dh_auto_clean -- $(MAKE_VERSION_ARG)

override_dh_auto_build:
	dh_auto_build -- $(MAKE_VERSION_ARG)

override_dh_auto_test:
	dh_auto_test -- $(MAKE_VERSION_ARG)

override_dh_auto_install:
	dh_auto_install -- $(MAKE_VERSION_ARG)

# pg_updateaptconfig marks the server packages of every major that has a
# cluster NeverAutoRemove, but its "^postgresql.*-NN" pattern does not match
# our percona-postgresql-NN names; add a pattern for them.
override_dh_install:
	dh_install
	sed -i 's|^\(\s*\)echo "    \\"^postgresql\.\*-$$version\\";" >> $$TMPCONF$$|&\n\1echo "    \\"^percona-postgresql.*-$$version\\";" >> $$TMPCONF|' \
		debian/postgresql-common/usr/share/postgresql-common/pg_updateaptconfig
	grep -q '"^percona-postgresql' debian/postgresql-common/usr/share/postgresql-common/pg_updateaptconfig

override_dh_auto_configure:
	@echo "### Building percona-postgresql-common flavor $(FLAVOR)"
	@echo "### Supported PostgreSQL versions: $(SUPPORTED_VERSIONS) (default version: $(DEFAULT_VER))"

# do not (re)start postgresql.service on postgresql-common install/upgrades
override_dh_installinit:
	dh_installinit -ppostgresql-common --name=postgresql -u'defaults 19 21' --no-start
override_dh_installsystemd:
	# this can be moved to dh-sequence-installsysusers once bullseye and jammy are gone
	# Run before dh_installsystemd: at compat 12 that tool emits the
	# systemd-tmpfiles --create snippet, and on a fresh install it must run
	# after systemd-sysusers has created the postgres user, or the
	# postgres-owned tmpfiles entries (/var/log/postgresql, ...) are skipped.
	dh_installsysusers
	dh_installsystemd --no-start

override_dh_gencontrol:
	dh_gencontrol -ppercona-postgresql-server-dev-all -- -v'$(META_VERSION)' -Vserver-dev-all-depends="$(foreach v,$(SUPPORTED_VERSIONS),percona-postgresql-server-dev-$v,)"

	# the versionless metapackages need to have version numbers which match
	# the server version, not the p-common version
	dh_gencontrol -ppercona-postgresql -ppercona-postgresql-client -ppercona-postgresql-doc -ppercona-postgresql-contrib -ppercona-postgresql-all -- \
		-Vdefault-version="$(DEFAULT_VER)" -v'$(META_VERSION)' \
		-Vpostgresql-all-depends="$(foreach v,$(SUPPORTED_VERSIONS),percona-postgresql-contrib-$v,percona-postgresql-plperl-$v,$(if $(filter 8.% 9.% 10 11, $v), $(PYTHON2_PACKAGE)),percona-postgresql-plpython3-$v,percona-postgresql-pltcl-$v,)"

	dh_gencontrol -ppostgresql-client-common -- \
		-Vpgdg:Depends="$(PGDG_DEPENDS)"

	dh_gencontrol -ppercona-postgresql-all -- -v'$(META_VERSION)' \
		-Vpostgresql-all-depends="$(foreach v,$(SUPPORTED_VERSIONS),percona-postgresql-contrib-$v,percona-postgresql-plperl-$v,$(if $(filter 8.% 9.% 10 11, $v), $(PYTHON2_PACKAGE)),percona-postgresql-plpython3-$v,percona-postgresql-pltcl-$v,)"

	dh_gencontrol --remaining-packages
