#! /usr/bin/make -f
#
# Debian build rules for "Gnats" by Brian White <bcwhite@pobox.com>



package	:= gnats
version	:= 3.101-beta

DATADIR := /var/lib
DBDIR   := $(DATADIR)/gnats/gnats-db
GSITE	:= unknown-site
GADDR	:= unknown-addr
GORG	:= unknown-org
MAKEDEFS:= DEFAULT_SITE=$(GSITE) GNATS_SITE=$(GSITE) GNATS_ADDR=$(GADDR) \
	   DEFAULT_ORGANIZATION=$(GORG) SUBMITTER=$(GORG)
GTKDEFS	:= CHECK_CFG=no
CFLAGS	:= -O2 -fomit-frame-pointer
CONFLAGS:= --prefix=/usr --libexecdir='$${prefix}/lib' --with-gnats-root=$(DBDIR) --with-gnats-service=gnats
PWD	:= $(shell pwd)



default:
	@echo "What to do?"
	@echo " - build-server, build-user, binary, binary-server, binary-user,"
	@echo " - clean, distclean"
	@echo " "



build:
	@echo "There is no general 'build' rule."
	@echo "(appropriate builds will be done as required by the binaries)"



build-server:
	$(checkdir)
	rm -f stamp-build-user
	cd gnats; ln -sf contrib/check-db.sh check-db.sh
	cd gnats; ln -sf contrib/delete-pr/delete-pr.sh delete-pr.sh
#	./configure --prefix=/var --exec-prefix=/usr --srcdir=$(PWD) --with-full-gnats
	cd gnats;   ./configure $(CONFLAGS) --with-full-gnats
	cd send-pr; ./configure $(CONFLAGS) --with-full-gnats
	$(MAKE) -C gnats   all info CFLAGS="$(CFLAGS)" LIBIBERTY="" datadir=$(DATADIR) $(MAKEDEFS)
	$(MAKE) -C send-pr all info CFLAGS="$(CFLAGS)" LIBIBERTY="" datadir=$(DATADIR) $(MAKEDEFS)
	touch stamp-build


build-user:
	$(checkdir)
	rm -f stamp-build
	cd gnats;   ./configure $(CONFLAGS)
	cd send-pr; ./configure $(CONFLAGS)
	$(MAKE) -C gnats   all info CFLAGS="$(CFLAGS)" LIBIBERTY="" datadir=$(DATADIR) $(MAKEDEFS)
	$(MAKE) -C send-pr all info CFLAGS="$(CFLAGS)" LIBIBERTY="" datadir=$(DATADIR) $(MAKEDEFS)
	touch stamp-build-user


build-www:
	$(checkdir)
	cd gnats/contrib/wwwgnats; if [ -x wwwgnats.shar ]; then ./wwwgnats.shar; fi
	touch stamp-build-wwwgnats


build-tk:
	$(checkdir)
	$(MAKE) -C gnats/contrib/tkgnats LDIR=/usr SHRDIR=$(DATADIR) $(MAKEDEFS) $(GTKDEFS) clean
	$(MAKE) -C gnats/contrib/tkgnats LDIR=/usr SHRDIR=$(DATADIR) $(MAKEDEFS) $(GTKDEFS) prefix=/usr
	touch stamp-build-tkgnats



gnatsclean:
	$(checkdir)
	-rm -f stamp-*
	-$(MAKE) -C gnats   -i distclean
	-$(MAKE) -C send-pr -i distclean
	-$(MAKE) -C gnats/contrib/tkgnats clean
	-$(MAKE) distclean
	cd gnats; rm -f check-db.sh delete-pr.sh
	cd gnats; rm -f config.c



clean: gnatsclean
	cd gnats/contrib/wwwgnats; \
	if [ -e wwwgnats.shar ]; then \
		find . ! -name wwwgnats.shar ! -name "." ! -name ".." -print | xargs rm -rf; \
	fi;
	-rm -f build build-user build-tk build-www
	-rm -rf debian/tmp debian/substvars debian/files
	find . \( -name  "*~" -o -name  "#*" -o -name  "*.orig" -o -name  "*.rej" \) -print | xargs rm -f
	find . \( -name ".*~" -o -name ".#*" -o -name ".*.orig" -o -name ".*.rej" \) -print | xargs rm -f



binary-server:
	test -f stamp-build || $(MAKE) -f debian/rules gnatsclean build-server
	-rm -rf debian/tmp
	#
	mkdir -p debian/tmp debian/tmp/DEBIAN
	mkdir -p debian/tmp/usr/info debian/tmp/usr/doc/$(package)
	mkdir -p debian/tmp/etc/emacs/site-start.d
#	mkdir -p debian/tmp/etc/cron.daily debian/tmp/etc/cron.weekly
	mkdir -p debian/tmp/usr/bin debian/tmp/usr/lib/gnats debian/tmp/usr/lib/emacs/site-lisp
	mkdir -p debian/tmp/usr/man/man1 debian/tmp/usr/man/man8
	mkdir -p debian/tmp/var/lib/gnats/dist
	#
	$(MAKE) -C gnats   CFLAGS="$(CFLAGS)" prefix=$(PWD)/debian/tmp/usr install install-info \
		datadir=$(PWD)/debian/tmp$(DATADIR) GNATS_ROOT=$(PWD)/debian/tmp$(DBDIR)
	$(MAKE) -C send-pr CFLAGS="$(CFLAGS)" prefix=$(PWD)/debian/tmp/usr install install-info \
		datadir=$(PWD)/debian/tmp$(DATADIR) GNATS_ROOT=$(PWD)/debian/tmp$(DBDIR)
	#
	for i in gnats/contrib/scripts/*-*; do							\
		j=`basename $$i`;								\
		sed $$i >debian/tmp/usr/lib/gnats/$$j						\
			-e 's|GNATS_ROOT=.*|GNATS_ROOT=$(DBDIR)|'				\
			-e 's|/usr/local|/usr|g'						\
			-e 's|^#!/bin/ksh|#!/usr/bin/ksh|';					\
		chmod 755 debian/tmp/usr/lib/gnats/$$j;						\
		(cd debian/tmp/usr/man/man8; ln -sf ../man7/undocumented.7.gz $$j.8.gz); 	\
	done
	cd debian/tmp/usr/man/man8; ln -sf ../man7/undocumented.7.gz delete-pr.8.gz
	cd debian/tmp/usr/man/man8; ln -sf ../man7/undocumented.7.gz check-db.8.gz
	cat debian/README.contrib-scripts gnats/contrib/scripts/README \
		> debian/tmp/usr/doc/$(package)/README.contrib-scripts
	#
	cd debian/tmp/usr/man; gzip -9fv `find . -type f ! -name "*.gz" -print`
	cd debian/tmp/usr/info; gzip -9fv *
	cd debian/tmp$(DATADIR)/gnats/dist; gzip -9v *
	#
	for i in debian/tmp/usr/bin/*; do							\
		j=`basename $$i`;								\
		if head -1 $$i | egrep -q '^#!'; then						\
			cp $$i /tmp/$$j;							\
			sed -e 's|$$GNATS_ROOT/gnats-bin|/usr/lib/gnats|g'			\
			/tmp/$$j > $$i;								\
		fi;										\
		if [ ! -f debian/tmp/usr/man/man1/$$j.1.gz -a					\
		     ! -f debian/tmp/usr/man/man8/$$j.8.gz ]; then				\
			(cd debian/tmp/usr/man/man8; ln -sf ../man7/undocumented.7.gz $$j.8.gz);\
		fi;										\
	done
	#
	cp debian/gnats.el debian/tmp/etc/emacs/site-start.d/50gnats.el
	#
	cp gnats/ChangeLog debian/tmp/usr/doc/$(package)/changelog
	cp debian/changelog debian/tmp/usr/doc/$(package)/changelog.Debian
	cp debian/copyright debian/tmp/usr/doc/$(package)
	cd debian/tmp/usr/doc/$(package); gzip -9v `find . -type f ! -name "*.gz" -print`
#	cd debian/tmp/usr/doc/$(package); ln -sf ../copyright/GPL copyright
	cp debian/user/.profile debian/tmp$(DBDIR)
	chown -R gnats.gnats debian/tmp$(DATADIR)/gnats
	#
	cat                      debian/scripts/init       >debian/tmp/DEBIAN/preinst
	sed -e 1d -e "/'init'/d" debian/scripts/fixprobs  >>debian/tmp/DEBIAN/preinst
	sed -e 1d -e "/'init'/d" debian/scripts/waitcr    >>debian/tmp/DEBIAN/preinst
	cat                      debian/scripts/init       >debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/addinfo   >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/adduser   >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/addcron   >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/addinetd  >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/addmail   >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/addconfig >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/waitcr    >>debian/tmp/DEBIAN/postinst
	cat                      debian/scripts/init       >debian/tmp/DEBIAN/prerm
	sed -e 1d -e "/'init'/d" debian/scripts/rmmail    >>debian/tmp/DEBIAN/prerm
	sed -e 1d -e "/'init'/d" debian/scripts/rmcron    >>debian/tmp/DEBIAN/prerm
	sed -e 1d -e "/'init'/d" debian/scripts/rminfo    >>debian/tmp/DEBIAN/prerm
	sed -e 1d -e "/'init'/d" debian/scripts/waitcr    >>debian/tmp/DEBIAN/prerm
	cat                      debian/scripts/init       >debian/tmp/DEBIAN/postrm
	sed -e 1d -e "/'init'/d" debian/scripts/rmconfig  >>debian/tmp/DEBIAN/postrm
	sed -e 1d -e "/'init'/d" debian/scripts/rminetd   >>debian/tmp/DEBIAN/postrm
	sed -e 1d -e "/'init'/d" debian/scripts/waitcr    >>debian/tmp/DEBIAN/postrm
	chmod 755 debian/tmp/DEBIAN/*
	cp debian/conffiles debian/tmp/DEBIAN/conffiles
	#
	for i in debian/tmp/usr/bin/* debian/tmp/usr/lib/$(package)/*; do \
		if [ -x $$i ]; then \
			if [ `head -1 $$i | egrep -c ^#!` -eq 0 ]; then \
				strip $$i; \
				j="$$j $$i"; \
			fi; \
		fi; \
	done; \
	if [ -z "$$j" ]; then \
		j=/bin/sh; \
	fi; \
	echo dpkg-shlibdeps $$j; \
	dpkg-shlibdeps $$j
#	dpkg-shlibdeps debian/tmp/usr/bin/query-pr debian/tmp/usr/lib/gnats/*
	dpkg-gencontrol -is -ip -pgnats
	chmod -R go=rX debian/tmp
	find debian/tmp$(DATADIR)/gnats -type d -print | xargs chmod g+s
	dpkg --build debian/tmp
	dpkg-name -o -s .. debian/tmp.deb


binary-user:
	test -f stamp-build-user || $(MAKE) -f debian/rules gnatsclean build-user
	-rm -rf debian/tmp
	#
	mkdir -p debian/tmp debian/tmp/DEBIAN
	mkdir -p debian/tmp/usr/info debian/tmp/usr/doc/$(package)
	mkdir -p debian/tmp/etc/emacs/site-start.d
#	mkdir -p debian/tmp/etc/cron.daily debian/tmp/etc/cron.weekly
	mkdir -p debian/tmp/usr/bin debian/tmp/usr/lib/gnats debian/tmp/usr/lib/emacs/site-lisp
	mkdir -p debian/tmp/usr/man/man1 debian/tmp/usr/man/man8
	mkdir -p debian/tmp/var/lib/gnats/dist
	#
	$(MAKE) -C gnats   CFLAGS="$(CFLAGS)" prefix=$(PWD)/debian/tmp/usr install install-info \
		datadir=$(PWD)/debian/tmp$(DATADIR) GNATS_ROOT=$(PWD)/debian/tmp$(DBDIR)
	$(MAKE) -C send-pr CFLAGS="$(CFLAGS)" prefix=$(PWD)/debian/tmp/usr install install-info \
		datadir=$(PWD)/debian/tmp$(DATADIR) GNATS_ROOT=$(PWD)/debian/tmp$(DBDIR)
	#
	rm -rf debian/tmp$(DATADIR)/gnats/*
	#
	cd debian/tmp/usr/info; gzip -9fv *
	cd debian/tmp/usr/man; gzip -9fv `find . -type f ! -name "*.gz" -print`
	#
	for i in debian/tmp/usr/bin/*; do							\
		j=`basename $$i`;								\
		if [ ! -f debian/tmp/usr/man/man1/$$j.1.gz -a					\
		     ! -f debian/tmp/usr/man/man8/$$j.8.gz ]; then				\
			(cd debian/tmp/usr/man/man8; ln -sf ../man7/undocumented.7.gz $$j.8.gz);\
		fi;										\
	done
	#
	cp debian/gnats.el debian/tmp/etc/emacs/site-start.d/50gnats.el
	#
	cp send-pr/ChangeLog debian/tmp/usr/doc/$(package)/changelog
	cp debian/changelog debian/tmp/usr/doc/$(package)/changelog.Debian
	cp debian/copyright debian/tmp/usr/doc/$(package)
	cd debian/tmp/usr/doc/$(package); gzip -9fv `find . -type f ! -name "*.gz" -print`
#	cd debian/tmp/usr/doc/$(package); ln -sf ../copyright/GPL copyright
	#
	cat                      debian/scripts/init            >debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/addinfo-user   >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/adduser-user   >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/addconfig-user >>debian/tmp/DEBIAN/postinst
	sed -e 1d -e "/'init'/d" debian/scripts/waitcr         >>debian/tmp/DEBIAN/postinst
	cat                      debian/scripts/init            >debian/tmp/DEBIAN/prerm
	sed -e 1d -e "/'init'/d" debian/scripts/rmconfig-user  >>debian/tmp/DEBIAN/prerm
	sed -e 1d -e "/'init'/d" debian/scripts/rminfo-user    >>debian/tmp/DEBIAN/prerm
	sed -e 1d -e "/'init'/d" debian/scripts/waitcr         >>debian/tmp/DEBIAN/prerm
	cat                      debian/scripts/init            >debian/tmp/DEBIAN/postrm
	sed -e 1d -e "/'init'/d" debian/scripts/rmconfig-user  >>debian/tmp/DEBIAN/postrm
	sed -e 1d -e "/'init'/d" debian/scripts/waitcr         >>debian/tmp/DEBIAN/postrm
	chmod 755 debian/tmp/DEBIAN/*
	#
	for i in debian/tmp/usr/bin/* debian/tmp/usr/lib/$(package)/*; do \
		if [ -x $$i ]; then \
			if [ `head -1 $$i | egrep -c ^#!` -eq 0 ]; then \
				strip $$i; \
				j="$$j $$i"; \
			fi; \
		fi; \
	done; \
	if [ -z "$$j" ]; then \
		j=/bin/sh; \
	fi; \
	echo dpkg-shlibdeps $$j; \
	dpkg-shlibdeps $$j
	dpkg-gencontrol -is -ip -pgnats-user
	chmod -R go=rX debian/tmp
	dpkg --build debian/tmp
	dpkg-name -o -s .. debian/tmp.deb



binary-tk:
	test -f stamp-build-tkgnats || $(MAKE) -f debian/rules build-tk
	-rm -rf debian/tmp
	#
	mkdir -p debian/tmp debian/tmp/DEBIAN
	mkdir -p debian/tmp/usr/doc/$(package)-tk
	mkdir -p debian/tmp/usr/man/man1
	#
	$(MAKE) -C gnats/contrib/tkgnats prefix=$(PWD)/debian/tmp/usr $(GTKDEFS) install
	cp gnats/contrib/tkgnats/tkgnats.1 debian/tmp/usr/man/man1
	#
	cp gnats/contrib/tkgnats/CHANGES debian/tmp/usr/doc/$(package)-tk/changelog
	cd debian/tmp/usr/doc/$(package)-tk; ln -sf ../$(package)/changelog.Debian.gz changelog.Debian.gz
	cp debian/copyright debian/tmp/usr/doc/$(package)-tk
#	cd debian/tmp/usr/doc/$(package); gzip -9fv `find . -type f ! -name "*.gz" -print`
#	cd debian/tmp/usr/doc/$(package); ln -sf ../copyright/GPL copyright
	#
	dpkg-gencontrol -is -ip -pgnats-tk
	chmod -R go=rX debian/tmp
	dpkg --build debian/tmp
	dpkg-name -o -s .. debian/tmp.deb


binary-www:
	test -f stamp-build-wwwgnats || $(MAKE) -f debian/rules build-www
	-rm -rf debian/tmp
	#
	mkdir -p debian/tmp debian/tmp/DEBIAN
	mkdir -p debian/tmp/usr/doc/$(package)-www
	mkdir -p debian/tmp/usr/lib/cgi-bin/$(package)-www
	#
	
	#
	cd debian/tmp/usr/doc/$(package)-www; ln -sf ../$(package)/changelog.Debian.gz changelog.Debian.gz
	cp debian/copyright debian/tmp/usr/doc/$(package)
#	cd debian/tmp/usr/doc/$(package); gzip -9fv `find . -type f ! -name "*.gz" -print`
#	cd debian/tmp/usr/doc/$(package); ln -sf ../copyright/GPL copyright
	#
	dpkg-gencontrol -is -ip -pgnats-www
	chmod -R go=rX debian/tmp
	dpkg --build debian/tmp
	dpkg-name -o -s .. debian/tmp.deb



binary-arch:
	$(MAKE) -f debian/rules binary-server
	$(MAKE) -f debian/rules binary-user
	@echo "All architecture-dependant binaries built!"

binary-indep:
	$(MAKE) -f debian/rules binary-tk
	@echo "All architecture-independant binaries built!"

binary:
	$(MAKE) -f debian/rules binary-arch
	$(MAKE) -f debian/rules binary-indep
	@echo "All binaries built!"


define checkdir
	test -d $(package)
endef



.PHONY: binary clean gnatsclean checkroot distfiles
