#!/usr/bin/make -f
# rules file for onshore-timesheet
#

package		:= onshore-timesheet
# comment out to disable this package
package-el	:= onshore-timesheet-el

# directory abstraction, main package
prefix		:= debian/tmp
bindir		:= $(prefix)/usr/sbin
libdir		:= $(prefix)/usr/lib/$(package)
perldir		:= $(prefix)/usr/lib/perl5
#cgidir		:= $(prefix)/usr/lib/cgi-bin/$(package)
cgidir		:= $(prefix)/var/www/$(package)
imagedir	:= $(cgidir)/images
docdir		:= $(prefix)/usr/share/doc/$(package)
mandir		:= $(prefix)/usr/share/man
confdir		:= $(prefix)/etc
passfile	:= $(confdir)/onshore-timesheet.passwd
##
## just reflects the default from upstream, no need to pass this thru to make
logfile		:= $(prefix)/var/log/onshore-timesheet-export.log

# don't set logdir, go with the default

# hardcoded in ../etc/timesheet.conf
backupdir	:= $(prefix)/var/lib/onshore-timesheet/backup

# user the CGI will run as
wwwuser		:= www-data

ifdef package-el
el-prefix	:= debian/$(package-el)
el-bindir	:= $(el-prefix)/usr/bin
el-docdir	:= $(el-prefix)/usr/share/doc/$(package-el)
el-lispdir	:= $(el-prefix)/usr/share/emacs/site-lisp/$(package-el)
el-startdir	:= $(el-prefix)/etc/emacs/site-start.d
endif

# tool abstraction
install_file	:= install -o root -g root -m 644 -p
install_script	:= install -o root -g root -m 755 -p
make_directory	:= install -d -o root -g root -m 755
compress	:= gzip -9f

# package version
DEB_REV         := $(shell LC_ALL=C dpkg-parsechangelog | grep ^Version: |	\
			sed 's/^Version: *//')
# upstream version
SRC_REV      := $(shell echo $(DEB_REV) | sed 's/\-.*//')

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

build:
	$(checkdir)
	$(MAKE) doc

clean:
	$(checkdir)
	$(MAKE) clean
	rm -f `find . -name "*~"`
	rm -rf $(prefix) $(prefix-el)
	rm -f debian/files* debian/substvars debian/conffiles	\
		debian/onshore-timesheet-el.conffiles		\
		debian/postinst
	dh_clean

binary-indep:	build
	$(checkdir)
	$(checkroot)
	rm -f debian/files

#	 main package
	rm -rf $(prefix)
	$(make_directory) $(prefix)/DEBIAN
	$(make_directory) $(bindir) $(perldir) $(docdir) $(confdir)	\
		$(cgidir) $(libdir)
#	 special backupdir perms	
	install -d -o root -g postgres -m 775 $(backupdir)

	$(MAKE) APPROOT=$(subst $(prefix),,$(cgidir))			\
		LIBDIR=$(subst $(prefix),,$(perldir))/$(package)	\
		IMAGE_DIR=$(subst $(prefix),,$(imagedir))		\
		PERLINC=$(subst $(prefix),,$(perldir))			\
		CONFDIR=$(subst $(prefix),,$(confdir))			\
		WWWUSER=$(wwwuser)					\
		UTILDIR=$(subst $(prefix),,$(bindir))			\
		PASSFILE=$(subst $(prefix),,$(passfile))		\
		INSTPREFIX=$(prefix) install-timesheet

	$(MAKE) APPROOT=$(subst $(prefix),,$(cgidir))			\
		TIMESHEET_URL=/onshore-timesheet			\
		BACKUP_DIR=$(subst $(prefix),,$(backupdir))		\
		IMAGE_DIR=$(subst $(prefix),,$(imagedir))		\
		CONFDIR=$(subst $(prefix),,$(confdir))			\
		INSTPREFIX=$(prefix) config-timesheet

	: > debian/conffiles
	echo $(subst $(prefix),,$(confdir))/onshore-timesheet.conf	\
		> debian/conffiles
	echo $(subst $(prefix),,$(cgidir))/.htaccess > debian/conffiles
	echo $(subst $(prefix),,$(passfile)) > debian/conffiles

#	 fix permissions -- FIXME in sources
	chmod a-x $(perldir)/$(package)/* $(cgidir)/html/*
	chmod a+x $(bindir)/*
	rm -f $(bindir)/injectjobs.pl

#	 we need to deal with database instantiation after installation
	$(install_script) install/config-timesheet install/install-db	\
		$(libdir)
	$(install_file) db/*.sql $(libdir)

#	 cron scripts
	$(make_directory) $(confdir)/cron.daily $(confdir)/cron.weekly $(confdir)/cron.d
	$(install_script) debian/cron_daily-reports $(confdir)/cron.daily/$(package)-daily-reports
	echo $(subst $(prefix),,$(confdir))/cron.daily/$(package)-daily-reports >> debian/conffiles
	$(install_file) debian/cron_export $(confdir)/cron.d/$(package)-export
	echo $(subst $(prefix),,$(confdir))/cron.d/$(package)-export >> debian/conffiles
	$(install_script) debian/cron_backup $(confdir)/cron.weekly/$(package)-backup
	echo $(subst $(prefix),,$(confdir))/cron.weekly/$(package)-backup >> debian/conffiles

#	 deal with the log file
#	 FIXME: need to deal with log rotation policy?
	$(make_directory) $(shell dirname $(logfile))
	touch $(logfile)

#	 install documentation
	dh_installdocs -p$(package) NEWS BUGS
	$(MAKE) -C doc DESTDIR=`pwd`/$(docdir) install
	$(make_directory) $(mandir)/man8
	set -e									;\
	for i in timesheet-load timesheet-export-hours timesheet-dump; do	\
	  pod2man --section=8 --center="onShore TimeSheet Utilities"		\
	          --release="onShore TimeSheet $(SRC_REV)"			\
			utils/$$i > $(mandir)/man8/$$i.8			;\
	done
	dh_undocumented -i timesheet-daily-report.8 timesheet-export-jobs.8 timesheet-import-clients.8
	dh_installchangelogs ChangeLog

#	 maintainer scripts
	sed -e 's|%{package}|$(package)|;					\
		s|%{libdir}|$(subst $(prefix),,$(libdir))|;'			\
		debian/postinst.in > debian/postinst
#	 check that maintainer scripts are good
	sh -n debian/postinst
	sh -n debian/prerm
	sh -n debian/postrm


ifdef package-el
#	 elisp package
	rm -rf $(el-prefix)
	$(make_directory) $(el-prefix)/DEBIAN
	$(make_directory) $(el-docdir) $(el-lispdir) $(el-bindir) $(el-startdir)

	$(install_file) remote/*.el $(el-lispdir)
	set -e ; cd remote							;\
	  for file in *.pl; do							\
	    $(install_script) $$file ../$(el-bindir)/`basename $$file .pl`	;\
	  done
	$(install_file) debian/site-start.el $(el-startdir)/50onshore-timesheet.el
	echo $(subst $(el-prefix),,$(el-startdir)/50onshore-timesheet.el) 	\
	  > debian/onshore-timesheet-el.conffiles

#	 install documentation
	dh_installdocs -p$(package-el) remote/README.txt
	dh_installchangelogs
	dh_undocumented -p$(package-el) timesheet-log-from.1 timesheet-get-data.1
endif

	dh_compress -i
	dh_fixperms -i
	chmod 0600 $(passfile)
	chmod g+w  $(backupdir) $(logfile)
	chown $(wwwuser) $(logfile) $(passfile)

	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i


binary-arch:	build
#	 nothing to be done

define checkdir
	test -f debian/rules
	test -f viewhours.cgi
endef

# Below here is fairly generic really

define checkroot
	test `id -u` = 0
endef

binary:		binary-indep binary-arch

.PHONY: binary binary-arch binary-indep clean

#Local variables:
#mode: makefile
#End:
