#!/usr/bin/make -f

#export DH_VERBOSE=1

DEB_HOST_ARCH_OS    ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)

VARIANTS := pgsql mysql sqlite3
VERSION := $(shell sed -n -e 's/^\#define VERSION.*"\(.*\)"$$/\1/p' src/version.h)

######################################################################

DBC := usr/share/dbconfig-common/data/

CONF_ALL	= \
	--enable-smartalloc \
	--with-tcp-wrappers \
	--with-openssl \
	--with-libiconv-prefix=/usr/include \
	--with-readline=/usr/include/readline \
	--disable-conio \
	--with-libintl-prefix=/usr/include \
	--docdir=\$${prefix}/share/doc/bacula-common \
	--htmldir=\$${prefix}/share/doc/bacula-common/html \
	--libdir=\$${prefix}/lib/bacula \
	--enable-batch-insert \
	--enable-ipv6 \
	--with-dir-password=XXX_DIRPASSWORD_XXX \
	--with-fd-password=XXX_FDPASSWORD_XXX \
	--with-sd-password=XXX_SDPASSWORD_XXX \
	--with-mon-dir-password=XXX_MONDIRPASSWORD_XXX \
	--with-mon-fd-password=XXX_MONFDPASSWORD_XXX \
	--with-mon-sd-password=XXX_MONSDPASSWORD_XXX \
	--with-db-name=XXX_DBNAME_XXX \
	--with-db-user=XXX_DBUSER_XXX \
	--with-db-password=XXX_DBPASSWORD_XXX \
	--config-cache \
	--with-archivedir=/nonexistant/path/to/file/archive/dir \
	--sysconfdir=/etc/bacula \
	--with-scriptdir=/etc/bacula/scripts \
	--sharedstatedir=/var/lib/bacula \
	--localstatedir=/var/lib/bacula \
	--with-logdir=/var/log/bacula \
	--with-pid-dir=/var/run/bacula \
	--with-smtp-host=localhost \
	--with-working-dir=/var/lib/bacula \
	--with-subsys-dir=/var/lock \
	--with-dump-email=root \
	--with-job-email=root \
	--with-mysql --with-postgresql --with-sqlite3 \
	--enable-bat --with-x

#ifeq ($(DEB_HOST_ARCH_OS),linux)
#CONF_ALL	+= --with-systemd=/lib/systemd/system
#endif

ifeq ($(DEB_HOST_ARCH_OS),kfreebsd)
CONF_ALL	+= --disable-acl --disable-xattr
endif

#set to 1 if configured with systemd
#HAVE_SYSTEMD = $(findstring 1,$(shell egrep "^\#define HAVE_SYSTEMD" config.log))

LONGNAME_mysql		= mysql
LONGNAME_pgsql		= postgresql
LONGNAME_sqlite3	= sqlite3

###########################################################################

# Macro for generate file for specified database from specified template
# args: 1 -- template file
#       2 -- db type
define template-subst
sed -e 's/XX_DB_XX/$(2)/' -e 's/XX_DBLONGNAME_XX/$(LONGNAME_$(2))/' -e 's/XX_VERSION_XX/$(VERSION)/' '$(1)' >'$(patsubst %.in,%,$(subst -db.,-$(2).,$(1)))';
endef

# Macro for cleanup file generated for specified database from specified template
# args: 1 -- template file
#       2 -- db type
define template-cleanup
rm -f '$(patsubst %.in,%,$(subst -db.,-$(2).,$(1)))';
endef

# Macro for generate from all templates files for specified database
# args: 1 -- db type
define db-templates-subst
$(foreach template,$(wildcard debian/*-db.*.in),$(call template-subst,$(template),$(1)))
endef

# Macro for cleanup all files generated for specified database from templates
# args: 1 -- db type
define db-templates-cleanup
$(foreach template,$(wildcard debian/*-db.*.in),$(call template-cleanup,$(template),$(1)))
endef

%:
	dh $@ --with autotools_dev --parallel

override_dh_shlibdeps:
	# Handle shlibs for the database packages specially so they get
	# the deps on the correct libraries.
	dh_shlibdeps -pbacula-sd-mysql -Lbacula-common-mysql
	dh_shlibdeps -pbacula-director-mysql -Lbacula-common-mysql
	dh_shlibdeps -pbacula-sd-sqlite3 -Lbacula-common-sqlite3
	dh_shlibdeps -pbacula-director-sqlite3 -Lbacula-common-sqlite3
	dh_shlibdeps -pbacula-sd-pgsql -Lbacula-common-pgsql
	dh_shlibdeps -pbacula-director-pgsql -Lbacula-common-pgsql
	# Now build all other shlibdeps.
	dh_shlibdeps -a -Nbacula-sd-mysql -Nbacula-director-mysql \
		-Nbacula-sd-sqlite3 -Nbacula-director-sqlite3 \
		-Nbacula-sd-pgsql -Nbacula-director-pgsql

override_dh_installinit-arch:
	dh_installinit -pbacula-sd -- defaults 90 10
	dh_installinit -pbacula-fd -- defaults 91 9
	dh_installinit -pbacula-director-common --name=bacula-director --no-start -- defaults 92 8

override_dh_install-arch:
	dh_install -a
	######### dbconfig-common stuff
	# The script install-dbconfig needs to be adapted when upstream changes the database format!
	debian/scripts/install-dbconfig # handles install of all upgrade/install scripts to db version 11 and greater
	# fix database type in some scripts
	$(foreach db,$(VARIANTS),sed -i \
	  -e "s/XX_DB_XX/$(db)/" \
		-e "s/XX_DBLONGNAME_XX/$(LONGNAME_$(db))/" \
		debian/bacula-director-$(db)/etc/bacula/scripts/make_catalog_backup \
		debian/bacula-director-$(db)/etc/bacula/scripts/make_catalog_backup.pl;)
#ifeq ($(HAVE_SYSTEMD),1)
#	# only install systemd related files if systemd is enabled during build
#	install -m 644 platforms/systemd/bacula-fd.service -D debian/bacula-fd/lib/systemd/system/bacula-fd.service
#	install -m 644 platforms/systemd/bacula-sd.service -D debian/bacula-sd/lib/systemd/system/bacula-sd.service
#	install -m 644 platforms/systemd/bacula-dir.service -D debian/bacula-director-common/lib/systemd/system/bacula-director.service
#endif

override_dh_installdocs:
	dh_installdocs -pbacula --link-doc=bacula-server
	dh_installdocs -Nbacula-common -Nbacula-client -Nbacula-server --remaining-packages --link-doc=bacula-common
	dh_installdocs --remaining-packages

# avoid compiling anything when building the metapackages
override_dh_auto_configure-indep:
override_dh_auto_build-indep:
override_dh_auto_install-indep:

override_dh_auto_configure-arch:
	$(foreach db,$(VARIANTS),$(call db-templates-subst,$(db)))
	autoconf -I autoconf/ -o configure autoconf/configure.in
	dh_auto_configure -- $(CONF_ALL)

override_dh_makeshlibs:
	dh_makeshlibs -n -Xbpipe-fd.so
	# fix shlibs for bacula-common-* (XXX quite probably needs reviewing)
	$(foreach db,$(VARIANTS), sed -i 's/libbaccats-[a-z0-9]*/libbaccats/' debian/bacula-common-$(db)/DEBIAN/shlibs;)

override_dh_clean:
	$(foreach db,$(VARIANTS),$(call db-templates-cleanup,$(db)))
	dh_autotools-dev_restoreconfig
	dh_clean

override_dh_fixperms-arch:
	dh_fixperms -a
	chmod -x debian/bacula-sd/etc/bacula/scripts/mtx-changer.conf
	chmod -x debian/bacula-common/usr/share/doc/bacula-common/examples/nagios/check_bacula/README

override_dh_auto_test:
