#!/usr/bin/make -f
#export DH_VERBOSE=1

DJDS=`pwd`/debian/domjudge-domserver
DJJH=`pwd`/debian/domjudge-judgehost
DJDC=`pwd`/debian/domjudge-doc

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp:
	dh_testdir

	# Make paths conform to Debian's desired layout.
	# Set domjudge-user to root for now, since the user 'domjudge'
	# may not exist at all on the build system. We chown the
	# files in postinst.
	./configure \
		--enable-fhs \
		--prefix=/usr \
		--sysconfdir=/etc \
		--localstatedir=/var \
		\
		--with-domjudge_docdir=\$${prefix}/share/doc/domjudge-doc \
		\
		--with-domserver_libdir=\$${prefix}/share/domjudge \
		--with-domserver_libwwwdir=\$${prefix}/share/domjudge/libwww \
		--with-domserver_libsubmitdir=\$${prefix}/share/domjudge \
		\
		--with-judgehost_bindir=\$${prefix}/sbin \
		--with-judgehost_libdir=\$${prefix}/share/domjudge \
		--with-judgehost_libjudgedir=\$${prefix}/lib/domjudge \
		\
		--with-domjudge-user=root

	# 'make build' also builds the very time-consuming misc-tools,
	# skip that for now.
	#$(MAKE) build
	$(MAKE) domserver
	$(MAKE) judgehost

	touch build-stamp

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp 
	$(MAKE) distclean
	dh_clean

install:
install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
	$(MAKE) DESTDIR=$(DJDS) install-domserver
	$(MAKE) DESTDIR=$(DJJH) install-judgehost
	$(MAKE) DESTDIR=$(DJDC) install-docs
	#
	dh_install
	# clean up tmpdirs
	rmdir $(DJDS)/tmp $(DJJH)/tmp $(DJDS)/var/run/domjudge $(DJJH)/var/run/domjudge
	# clean up docs
	cd $(DJDC)/usr/share/doc/domjudge-doc && \
		rm COPYING* README README.country_flags ChangeLog logos/DOMjudgelogo.png
	# This must be shipped in domjudge-common
	rm $(DJDS)/etc/domjudge/common-config.php \
		$(DJDS)/usr/share/domjudge/*.php $(DJDS)/usr/share/domjudge/alert
	# Saviour lib.error.sh before we trash /u/s/d
	# This is in domjudge-common
	rm -r $(DJJH)/usr/share/domjudge/* $(DJJH)/etc/domjudge/common-config.php
	cp lib/lib.error.sh $(DJJH)/usr/share/domjudge/
	# We'd like these to be amendable by the admin
	cd $(DJDS)/usr/share/domjudge/www/images/ && \
		mv teams affiliations ../../../../../var/lib/domjudge/images/
	# This we'll symlink from the system-copy
	rm $(DJJH)/usr/lib/domjudge/sh-static
	rm -r $(DJDS)/usr/lib/domjudge/ext/geshi/
	# Makes no sense to include passwords generated on .deb build host
	rm $(DJJH)/etc/domjudge/dbpasswords.secret \
		$(DJDS)/etc/domjudge/dbpasswords.secret \
		$(DJDS)/etc/domjudge/htpasswd-jury \
		$(DJDS)/etc/domjudge/gendbpasswords \
		$(DJDS)/usr/bin/dj-setup-database
	# TODO: Why is runguard in /usr/sbin? It's never called directly?
	# Doesn't really hurt currently.
	#
	# Needs to be web-writable:
	chgrp www-data $(DJDS)/var/lib/domjudge/submissions \
		$(DJDS)/var/log/domjudge
	chmod g+w $(DJDS)/var/lib/domjudge/submissions \
		$(DJDS)/var/log/domjudge
	sed -i 's#^root #domjudge #' $(DJJH)/etc/domjudge/sudoers-domjudge
	sed -i 's#/\*/proc#/var/lib/domjudge/javachroot*/proc#' $(DJJH)/etc/domjudge/sudoers-domjudge
	sed -i 's#/chroot/domjudge/\*#/var/lib/domjudge/javachroot*/*#' $(DJJH)/etc/domjudge/sudoers-domjudge
	mv $(DJJH)/etc/domjudge/sudoers-domjudge $(DJJH)/etc/sudoers.d/domjudge
	chmod 0440 $(DJJH)/etc/sudoers.d/domjudge
	# Database configuration
	cat sql/mysql_db_structure.sql sql/mysql_db_defaultdata.sql \
		sql/mysql_db_examples.sql > $(DJDS)/usr/share/dbconfig-common/data/domjudge-domserver/install/mysql
	cp debian/src/db_clean.sql $(DJDS)/usr/share/dbconfig-common/data/domjudge-domserver/remove/mysql
	# Upgrades
	for i in sql/upgrade/upgrade_*_*.sql; do \
		T=`echo $$i|sed -r 's#sql/upgrade/upgrade_.*_(.*)\.sql#\1#'`; \
		cp $$i $(DJDS)/usr/share/dbconfig-common/data/domjudge-domserver/upgrade/mysql/$$T; \
	done

# Build architecture-independent files here.
binary-indep: build install
	dh_testdir -i
	dh_testroot -i
	dh_installdebconf -i
	dh_installchangelogs -p domjudge-doc
	dh_installchangelogs -p domjudge-common -p domjudge-domserver -X ChangeLog
	dh_installdocs -i
	dh_installlogrotate -i
	dh_link -i
	dh_compress -i -X .tex -X .pdf
	dh_fixperms -i -X genteammanuals -X gentexconfig
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i -- -Zxz

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir -a
	dh_testroot -a
	dh_installchangelogs -a -X ChangeLog
	dh_installdocs -a
	dh_installinit -a
	dh_installman -a
	dh_installdebconf -a
	dh_installexamples -a
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a -X etc/sudoers.d/domjudge
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a -- -Zxz

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
