#!/usr/bin/make -f

# export DH_VERBOSE=1

PYTHONS        := $(filter-out python2.5, $(shell pyversions --installed; py3versions --installed))
PYTHON_DEFAULT := $(shell pyversions --default)
RUBIES         := $(shell find /usr/bin/ -name ruby1\* | xargs -n1 readlink -f | xargs -n1 basename)
RUBY_DEFAULT   := $(shell which ruby | xargs readlink -f | xargs basename)

DEFAULT_CONFIG_FLAGS = \
	--disable-appliance  \
	--with-readline	     \
	--disable-haskell    \
	--disable-php

BARE_CONFIG_FLAGS = \
	$(DEFAULT_CONFIG_FLAGS) \
	--disable-daemon --disable-fuse \
	--disable-ocaml --disable-perl \
	--disable-erlang --with-java-home=no \
	--disable-gobject

override_dh_auto_clean:
	set -e; for p in \
		default \
		$(filter-out $(PYTHON_DEFAULT), $(PYTHONS)) \
		$(filter-out $(RUBY_DEFAULT), $(RUBIES)) \
	; do \
		dh_auto_clean --builddir=$(CURDIR)/debian/build-$$p ; \
	done

override_dh_auto_configure:
	dh_auto_configure --builddir=$(CURDIR)/debian/build-default \
		-- \
		$(DEFAULT_CONFIG_FLAGS) \
		--enable-install-daemon \
		--with-java-home=/usr/lib/jvm/default-java \
		RUBY=$(RUBY_DEFAULT) \
		RAKE=$(patsubst ruby%,rake%,$(RUBY_DEFAULT)) \
		PYTHON=$(PYTHON_DEFAULT) \
		JNI_INSTALL_DIR='$${libdir}/jni'

	set -e; for v in $(patsubst ruby%,%,$(filter-out $(RUBY_DEFAULT), $(RUBIES))) \
	; do \
		if [ $$v = 1.8 ]; then rake=rake; else rake=rake$$v; fi ; \
		dh_auto_configure --builddir=$(CURDIR)/debian/build-ruby$$v \
			-- \
			$(BARE_CONFIG_FLAGS) \
			--disable-python \
			RUBY=ruby$$v RAKE=$$rake ; \
	done

	set -e; for p in $(filter-out $(PYTHON_DEFAULT), $(PYTHONS)) \
	; do \
		dh_auto_configure --builddir=$(CURDIR)/debian/build-$$p \
			-- \
			$(BARE_CONFIG_FLAGS) \
			--disable-ruby \
			PYTHON=$$p ; \
	done

override_dh_strip:
	dh_strip --dbg-package=libguestfs0-dbg

override_dh_auto_build:
# also build part of appliance
	dh_auto_build --builddir=$(CURDIR)/debian/build-default \
		-- INSTALLDIRS=vendor LD_RUN_PATH=""

	$(MAKE) -C $(CURDIR)/debian/build-default/appliance \
		make.sh \
		packagelist excludelist \
		supermin.d/daemon.img supermin.d/init.img

	set -e; for p in \
		$(filter-out $(PYTHON_DEFAULT), $(PYTHONS)) \
		$(filter-out $(RUBY_DEFAULT), $(RUBIES)) \
	; do \
		dh_auto_build --builddir=$(CURDIR)/debian/build-$$p ; \
	done

override_dh_auto_test:
	set -e; for p in \
		default \
		$(filter-out $(PYTHON_DEFAULT), $(PYTHONS)) \
		$(filter-out $(RUBY_DEFAULT), $(RUBIES)) \
	; do \
		dh_auto_test --builddir=$(CURDIR)/debian/build-$$p \
			-- CFLAGS="$(filter-out -Werror=format-security,$(CFLAGS))"; \
	done

override_dh_auto_install:
# All build trees contain the library plus guestfish and C virt tools.
# We assume that the Python version used for building the Python
# bindings doesn't affect the outcome of those builds.
	set -e; for p in \
		$(filter-out $(PYTHON_DEFAULT), $(PYTHONS)) \
		$(filter-out $(RUBY_DEFAULT), $(RUBIES)) \
		default \
	; do \
		dh_auto_install --builddir=$(CURDIR)/debian/build-$$p ; \
	done

override_dh_install:
	rm -f debian/tmp/usr/lib/python*/dist-packages/libguestfsmod.la

# Workaround for:
# W: libguestfs-perl: script-not-executable usr/lib/perl5/Sys/bindtests.pl
	rm -f debian/tmp/usr/lib/perl5/Sys/bindtests.pl

# Workaround for:
# E: libguestfs-dev: non-empty-dependency_libs-in-la-file usr/lib/libguestfs.la
	find debian/tmp -name *.la | xargs sed -i '/^dependency_libs/ s/^/# /'

# We do not install supermin.d/base.img, but ship make.sh which can be
# used to build it.
	mkdir -p debian/tmp/usr/lib/guestfs/supermin.d
	install -m755 debian/build-default/appliance/make.sh \
		debian/tmp/usr/lib/guestfs
	install -m644 debian/build-default/appliance/*list \
		debian/tmp/usr/lib/guestfs
	install -m644 \
		debian/build-default/appliance/supermin.d/init.img \
		debian/build-default/appliance/supermin.d/daemon.img \
		debian/tmp/usr/lib/guestfs/supermin.d/

	erlang-depends -perlang-guestfs
	dh_install

# Workaround for python3-defaults < 3.2~b2-1
# ("do not rename .so files outside dist-packages directory")
override_dh_python3:
	dh_python3 -p python-guestfs
override_dh_python2:
	dh_python2 -p python-guestfs -V 2.6-

# Workaround for Lintian warning
# "{pre,post}inst-has-useless-call-to-ldconfig"
override_dh_makeshlibs:
	dh_makeshlibs -X/usr/lib/jni

%:
	dh $@ \
	   --without=python-support \
	   --with=autoreconf,ocaml,python2,python3,bash-completion,ruby,gir
