#!/usr/bin/make -f
#
# Copyright 2000,2001,2002,2003,2005,2006,2007,2008,2009 by Stefan Hornburg (Racke) <racke@linuxia.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
# MA  02110-1301  USA.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

ifndef PERL
	PERL = /usr/bin/perl
endif
TMP = $(shell pwd)/debian/tmp

IC_VERSION := $(shell dpkg-parsechangelog | perl -ne 'print $$1 if /^Version: (.*?)-(.*)$$/')
IC_MAJOR_VERSION := $(shell dpkg-parsechangelog | perl -ne 'print $$1 if /^Version: (\d+\.\d+)(.*?)-(.*)$$/')

build: build-stamp
build-stamp:
	dh_testdir

# Compile main stuff
	env $(PERL) Makefile.PL force=1 \
		INTERCHANGE_USER=interchange \
		PREFIX=/usr/lib/interchange
	$(MAKE)
	pod2man	--section=1p debian/interchangeconfig > blib/man1/interchangeconfig.1p
	pod2man --section=1p eg/te > blib/man1/te.1p

	touch build-stamp

clean:
	dh_testdir
	dh_testroot
	debconf-updatepo
	rm -f build-stamp install-stamp

	# Add here commands to clean up after the build process.
	[ ! -f Makefile ] || $(MAKE) clean

	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

# Add here commands to install the package into debian/tmp.
	env $(MAKE) install PREFIX=$(TMP)/usr INSTALLARCHLIB=$(TMP)/usr/lib/interchange INSTALLPRIVLIB=$(TMP)/usr/lib/interchange INSTALLMAN1DIR=$(TMP)/usr/share/man/man1 INSTALLMAN3DIR=$(TMP)/usr/share/man/man3 INSTALLSCRIPT=$(TMP)/usr/lib/interchange/bin NOCPANINSTALL=1 INTERCHANGE_USER=interchange

# Sample configuration file not needed (code in interchange.PL
# to determine configuration file location will stop to work too)
	rm $(TMP)/usr/lib/interchange/interchange.cfg.dist
# Create symbolic link for the configuration files. Makes
# more sense than script hacking.
	ln -s /etc/interchange/interchange.cfg $(TMP)/usr/lib/interchange
	mkdir -p $(TMP)/etc/interchange
	mv $(TMP)/usr/lib/interchange/etc/jobs $(TMP)/etc/interchange/jobs
	rm -r $(TMP)/usr/lib/interchange/etc
	ln -s /etc/interchange $(TMP)/usr/lib/interchange/etc
# Setup wrapper and config script
	mkdir -p $(TMP)/usr/sbin
	cp debian/interchange.wrapper $(TMP)/usr/sbin/interchange
	cp debian/interchangeconfig $(TMP)/usr/sbin/interchangeconfig
	mkdir -p $(TMP)/usr/bin
	cp debian/makecat.wrapper $(TMP)/usr/bin/makecat
	cp eg/te $(TMP)/usr/bin
	chmod +x $(TMP)/usr/sbin/interchange $(TMP)/usr/sbin/interchangeconfig \
		$(TMP)/usr/bin/makecat $(TMP)/usr/bin/te
# Setup configuration directory
	mkdir -p $(TMP)/etc/interchange/
	cp debian/interchange.cfg debian/catalogs.cfg debian/makecat.cfg \
		dist/robots.cfg dist/subdomains.cfg $(TMP)/etc/interchange    
# build Interchange control program(s)
	mkdir -p $(TMP)/usr/lib/cgi-bin/ic
	$(PERL) scripts/compile_link \
		--nostrip \
		--socket=/var/run/interchange/interchange.sock \
		--port=7786 \
		--host=127.0.0.1 \
		--source=dist/src \
		--build=$(TMP)/usr/lib/cgi-bin/ic
	cd $(TMP)/usr/lib/cgi-bin/ic; rm compile.pl config* mod_perl_tlink.pl mvctl.c syscfg* testcgi tlink.* vlink.* cpan_local_install
# Add link sources
	mkdir -p $(TMP)/usr/lib/interchange/src
	for file in dist/src/*; do if test -f $$file; then cp $$file $(TMP)/usr/lib/interchange/src; fi; done
# UI images and stuff
	mkdir -p $(TMP)/usr/share/interchange-ui
	for dir in $(TMP)/usr/lib/interchange/share/interchange-5/*; do mv $$dir $(TMP)/usr/share/interchange-ui; done
	rm -r $(TMP)/usr/lib/interchange/share/interchange-5
# Apache configuration file snippet for interchange-ui package
	mkdir -p $(TMP)/etc/apache2/conf.d
	install -m 0644 debian/interchange-ui.conf $(TMP)/etc/apache2/conf.d 
# remove empty man pages
	rm $(TMP)/usr/share/man/man1/crontab.1p
# remove unneeded stuff
	rm $(TMP)/usr/lib/interchange/error.log
	rm $(TMP)/usr/lib/interchange/*.pl
	rm $(TMP)/usr/lib/interchange/_session_storable
	rm $(TMP)/usr/lib/interchange/_uid
	rm -rf $(TMP)/usr/lib/interchange/auto/Interchange
# install logrotate configuration file
	install -m 0755 -d $(TMP)/etc/logrotate.d/
	install -m 0644 debian/interchange.logrotate $(TMP)/etc/logrotate.d/interchange
# install global usertags for standard demo
	mkdir -p $(TMP)/usr/lib/interchange/usertag/standard
	install -m 0644 dist/standard/config/*.tag $(TMP)/usr/lib/interchange/usertag/standard
# mimic global pragma for data updates
	cat debian/catalog_before.cfg >> $(TMP)/usr/lib/interchange/catalog_before.cfg

# make VERSION file
	echo 'Variable MAJOR_VERSION $(IC_MAJOR_VERSION)' > $(TMP)/usr/lib/interchange/VERSION
	echo 'Variable VERSION $(IC_VERSION)' >> $(TMP)/usr/lib/interchange/VERSION
	touch install-stamp

# Build architecture-independent files here.
binary-indep: build install
	dh_testdir
	dh_testroot
	dh_installdebconf -i
	dh_installdocs -i -A README.debian
# no init.d script
# no cron scripts
	dh_installchangelogs -i
	dh_install -i --sourcedir=debian/tmp
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_shlibdeps -i
	dh_perl -i usr/lib/interchange
	dh_gencontrol -i 
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installdebconf -a
	dh_installdocs -a -A README.debian
# install init.d script
	dh_installinit -a -- defaults 21 19
# install cron script
	dh_installcron -a
	dh_installchangelogs -a
	dh_install -a -p interchange --sourcedir=debian/tmp --exclude=UI --exclude=standard
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
	# You may want to make some executables suid here.
	dh_installdeb -a
	dh_shlibdeps -a
	dh_perl -a usr/lib/interchange
	dh_gencontrol -a 
	dh_md5sums -a
	dh_builddeb -a

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