#!/usr/bin/make -f

export JAVA_HOME=/usr/lib/jvm/default-java

PYVERS := $(shell pyversions -vr)
DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^+]+).*,\1,p')

%:
	dh $@ --with javahelper --with python2

override_dh_auto_build:
	# TODO exclude the fatjar contrib from upstream tarball and include the rest contrib
	mkdir -p build/test/classes
	javacc -OUTPUT_DIRECTORY=src/java/main/org/apache/jute/compiler/generated src/java/main/org/apache/jute/compiler/generated/rcc.jj
	# the upstream build file includes .java files in the jars. Let's create the jars ourselves.
	# see: https://issues.apache.org/jira/browse/ZOOKEEPER-537
	ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 javadoc javadoc-dev jar

	# Compile C library
	cd src/c && autoreconf -i
	cd src/c && ./configure --prefix=/usr
	$(MAKE) -C src/c

	# Compile contribs - bookkeeper
	cd src/contrib && ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 -Ddest.dir=../../build/zookeeper -Divy.jar.exists=true -Divy.initialized=true -Dcontribfilesetincludes="bookkeeper/build.xml"
	# Compile contribs - zooinspector
	cd src/contrib && ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 -Ddest.dir=../../build/zookeeper -Divy.jar.exists=true -Divy.initialized=true -Dcontribfilesetincludes="zooinspector/build.xml"

	# Build Python Bindings
	cd src/contrib/zkpython && \
	  for pv in $(PYVERS); do \
	    python$$pv src/python/setup.py build --build-base=$(CURDIR)/build ;\
	  done

	# Compile zktreeutil and generate man page
	cd src/contrib/zktreeutil && autoreconf -if && ./configure && make
	LD_LIBRARY_PATH=src/c/.libs help2man -N --version-string=0.0 src/contrib/zktreeutil/src/zktreeutil >zktreeutil.man

override_dh_install:
	$(MAKE) -C src/c install DESTDIR=$(CURDIR)/debian/tmp
	cd src/contrib/zkpython && \
	  for pv in $(PYVERS); do \
	    python$$pv src/python/setup.py build --build-base=$(CURDIR)/build \
	               install --root=$(CURDIR)/debian/tmp --install-layout=deb ;\
	  done
	dh_install

#ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
#override_dh_auto_test-arch:
#	# C testing starts/stops zookeeper
#	# this ensures that all the right classes are found
#	for jar in jline log4j-1.2 xercesImpl xmlParserAPIs; do \
#		ln -sf /usr/share/java/$$jar.jar build/lib/$$jar.jar; \
#	done;
#	# Execute multi-threaded test suite
#	$(MAKE) -C src/c zktest-mt
#	cd src/c && ./zktest-mt
#
#override_dh_auto_test-indep:
#	# Run core Java test suite against zookeeper
#	ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 test-core-java
#endif

override_dh_clean:
	dh_clean --exclude=src/java \
             --exclude=src/docs \
             --exclude=src/c \
             --exclude=src/reciped
	jh_clean
	rm -rf debian/*.upstart

# the original build.xml deletes too much
override_dh_auto_clean:
	dh_testdir
	rm -rf .revision
	rm -rf build
	rm -rf src/c/generated
	rm -rf src/java/generated
	rm -rf src/java/main/org/apache/jute/compiler/generated/*.java
	rm -f zookeeper*.jar
	#The following line caused lintian tag debian-rules-ignores-make-clean-error
	#-$(MAKE) -C src/c distclean
	#replaced by
	[ ! -f src/c/Makefile ] || $(MAKE) -C src/c distclean
	rm -f src/c/config.log src/c/config.status
	[ ! -f src/contrib/zktreeutil/Makefile ] || $(MAKE) -C src/contrib/zktreeutil distclean
	rm -rf src/contrib/zktreeutil/autom4te.cache
	rm -rf src/contrib/zktreeutil/Makefile.in
	rm -rf src/contrib/zktreeutil/aclocal.m4
	rm -rf src/contrib/zktreeutil/config.h.in
	rm -rf src/contrib/zktreeutil/configure
	rm -rf src/contrib/zktreeutil/depcomp
	rm -rf src/contrib/zktreeutil/install-sh
	rm -rf src/contrib/zktreeutil/missing
	rm -rf src/contrib/zktreeutil/src/Makefile.in
	rm -rf zktreeutil.man
	rm -rf src/c/Makefile.in
	rm -rf src/c/aclocal.m4
	rm -rf src/c/autom4te.cache
	rm -rf src/c/compile
	rm -rf src/c/config.guess
	rm -rf src/c/config.sub
	rm -rf src/c/configure
	rm -rf src/c/ltmain.sh
	rm -rf src/c/TEST-*

ifeq (,$(findstring nodocs, $(DEB_BUILD_OPTIONS)))
override_dh_installdocs:
	dh_installdocs --link-doc=libzookeeper-java \
	  -plibzookeeper-java -pzookeeper -pzookeeperd -plibzookeeper-java-doc
	dh_installdocs --link-doc=libzookeeper2 \
	  -plibzookeeper2 -plibzookeeper-dev -pzookeeper-bin -ppython-zookeeper
endif

# Install init script for Debian and upstart for Ubuntu
override_dh_installinit:
	if dpkg-vendor --derives-from ubuntu ; then \
		cp debian/zookeeperd.upstart.in debian/zookeeperd.upstart ; \
	fi
	dh_installinit -d

# init/upstart require difference dependencies for zookeeperd
override_dh_gencontrol:
	if dpkg-vendor --derives-from ubuntu ; then \
        dh_gencontrol -- -T$(CURDIR)/debian/ubuntu_control_vars ; \
    else \
        dh_gencontrol -- -T$(CURDIR)/debian/debian_control_vars ; \
    fi
