#!/usr/bin/make -f
# -*- makefile -*- made with the aid of debmake, by Christoph Lameter,
# based on the sample debian/rules file for GNU hello by Ian Jackson.

package=mailman
PACKAGE=$(package)
VERSION=$(shell dpkg-parsechangelog | awk '$$1 == "Version:" {print $$2}')

binaries=list_lists find_member config_list mmsitepass newlist rmlist	\
	add_members list_members remove_members arch clone_member	\
	sync_members check_db check_perms list_admins withlist

#export DH_VERBOSE=1

SHELL=/bin/bash

# the '-include' is for compatibility with squeeze.
# replace with 'include' after squeeze support is over, or
# replace with 'include /usr/share/dpkg/default.mk' to replace vars above
DPKG_EXPORT_BUILDFLAGS = 1
-include /usr/share/dpkg/buildflags.mk

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
CFLAGS += -g
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp: Makefile debian/po/templates.pot
	$(MAKE)
	sed 's,@VERSION@,$(VERSION),g' < debian/preinst.in > debian/preinst
	touch build-stamp

debian/po/templates.pot: debian/templates
	@debconf-updatepo

Makefile:
	./configure --prefix=/var/lib/$(package) --with-username=list \
		--with-groupname=list \
		--with-mail-gid=daemon --with-cgi-gid=www-data \
		--without-permcheck --with-mailhost=localhost \
		--with-urlhost=localhost

clean:
	dh_testdir
	dh_testroot
	[ ! -f Makefile ] || $(MAKE) distclean
	rm -rf build-stamp Makefile debian/ucffiles debian/mailman.postinst.ucf
	rm -f debian/mailman.postrm.ucf
	rm -f debian/preinst
	dh_clean
	chmod +x debian/{prerm,postinst}

binary-indep:	build
	dh_testdir
	dh_testroot
# There are no architecture-independent files to be uploaded
# generated by this package.  If there were any they would be
# made here.


binary-arch:	build
	dh_testdir
	dh_testroot
	dh_install
	dh_installdirs
	dh_installdocs ACKNOWLEDGMENTS README* TODO FAQ
	dh_installchangelogs NEWS
	$(MAKE) doinstall prefix=$$(pwd)/debian/mailman/var/lib/$(package) \
		var_prefix=$$(pwd)/debian/mailman/var/lib/$(package) \
		icondir=$$(pwd)/debian/mailman/usr/share/images/mailman \
		ICONDIR=$$(pwd)/debian/mailman/usr/share/images/mailman

	rmdir debian/$(package)/var/lib/mailman/pythonlib
	rm -r debian/$(package)/var/lib/mailman/tests
	# cruft: msgfmt.py is only used at build time
	rm  debian/$(package)/var/lib/mailman/bin/msgfmt.py

# move the nonchanging directories to /usr/lib/mailman, except for
# cgi-bin, which goes to /usr/lib/cgi-bin/mailman

	cd debian/mailman/var/lib/$(package) ; \
	   mv cgi-bin ../../../usr/lib/cgi-bin/mailman ; \
	   for i in Mailman bin cron mail scripts ; do \
		mv $$i ../../../usr/lib/$(package); \
	   done

	# link them back to /var/lib/mailman
	for i in debian/mailman/usr/lib/$(package)/*; do \
	   dh_link usr/lib/$(package)/`basename $$i` var/lib/$(package)/`basename $$i`; \
	done

	# Link cgi-bin as well
	dh_link usr/lib/cgi-bin/$(package) var/lib/$(package)/cgi-bin

	# Backwards compatibility link
	dh_link usr/lib/mailman/mail/mailman usr/lib/mailman/mail/wrapper
	dh_link usr/share/images/mailman usr/share/doc/mailman/images
	rmdir debian/$(package)/var/lib/mailman/icons
	dh_link usr/share/images/mailman var/lib/mailman/icons

        # move the templates to /etc/mailman
	mv debian/mailman/var/lib/$(package)/templates debian/mailman/etc/mailman

	# link it back to /var/lib/mailman/templates
	dh_link etc/mailman var/lib/$(package)/templates

	# note the current version to avoid aborting on same-version
	# reinstallations - see the preinst script
	echo "$(VERSION)" > debian/mailman/var/lib/$(package)/.version

	dh_installlogrotate
	dh_installcron
	
	install -m 0644 debian/mm_cfg.py debian/mailman/usr/lib/mailman/Mailman/mm_cfg.py.dist

	rm debian/$(package)/usr/lib/$(package)/Mailman/mm_cfg.py
	dh_link etc/$(package)/mm_cfg.py \
		usr/lib/$(package)/Mailman/mm_cfg.py
	for bin in $(binaries); \
		do dh_link usr/lib/$(package)/bin/$$bin usr/sbin/$$bin; done
	mv debian/mailman/usr/sbin/arch debian/mailman/usr/sbin/mmarch
	dh_installman
	dh_installinit -- start 20 2 3 4 5 .
	dh_installdebconf
	dh_installexamples templates/* debian/mm_cfg.py \
		debian/mailman/usr/lib/$(package)/Mailman/Defaults.py
	dh_strip
	dh_compress -Xmailman-admin.pdf -Xmailman-install.pdf -Xmailman-member-es.pdf -Xmailman-member.pdf
	dh_fixperms
	chown -R root:root debian/mailman
	chown -R root:list \
		debian/mailman/{etc/$(package),var/lib/$(package),usr/lib/{$(package),cgi-bin/$(package)}}
	chown list:list debian/mailman/var/lib/mailman/qfiles
	chown root:list debian/mailman/var/log/mailman
	# set 2755 except messages/
	find debian/mailman/var/lib/$(package) -path debian/mailman/var/lib/$(package)/messages -prune -o -type d -exec chmod 2775 {} \;

	# make lintian happy
	install -m 0644 debian/lintian-overrides debian/mailman/usr/share/lintian/overrides/mailman

# Spamassassin plugin
	install -m 0644 debian/contrib/SpamAssassin.py debian/mailman/usr/lib/$(package)/Mailman/Handlers
	install -m 0644 debian/contrib/spamd.py debian/mailman/usr/lib/$(package)/Mailman/Handlers

# postfix-to-mailman.py
	install -m 0755 debian/contrib/postfix-to-mailman.py debian/mailman/usr/share/mailman
	dh_link etc/mailman/postfix-to-mailman.py usr/lib/mailman/bin/postfix-to-mailman.py

# apache default config
	install -m 0644 debian/contrib/apache.conf debian/mailman/etc/mailman

# Debian Powered icon
	install -m 0644 debian/contrib/debianpowered.png debian/mailman/usr/share/images/mailman/

# Move templates
	mv `find debian/mailman/etc/mailman -mindepth 1 -maxdepth 1 -type d` debian/mailman/usr/share/mailman
	cp build/contrib/qmail-to-mailman.py debian/mailman/usr/share/mailman

	find debian/mailman/usr/share/mailman -type f -printf '/etc/mailman/%P\n' > debian/ucffiles

	dh_link etc/mailman/qmail-to-mailman.py usr/lib/mailman/bin/qmail-to-mailman.py


# Fix permissions
	chmod +x debian/mailman/usr/lib/$(package)/Mailman/Cgi/*
#	chmod +x debian/mailman/usr/lib/$(package)/scripts/*
	chmod +x debian/mailman/usr/lib/$(package)/Mailman/Archiver/pipermail.py

	chmod g+s debian/mailman/usr/lib/cgi-bin/mailman/* \
		debian/mailman/usr/lib/mailman/mail/mailman

	chmod -x debian/mailman/usr/lib/$(package)/scripts/paths.py \
		debian/mailman/usr/lib/$(package)/Mailman/Cgi/*

	chmod o-rx debian/mailman/var/lib/$(package)/archives/private
	chown list:www-data debian/mailman/var/lib/$(package)/archives/private
	chmod 0755 debian/mailman/usr/lib/$(package)/cron/*
	chmod 0644 debian/mailman/usr/lib/$(package)/cron/{crontab.in,paths.py}

#	Python Policy
	dh_python2 -a /usr/lib/mailman/Mailman

	install -d debian/mailman/usr/share/python/runtime.d
	install debian/mailman.rtupdate debian/mailman/usr/share/python/runtime.d


	egrep -rslZ '^#!(.*)python' debian/mailman/usr/lib/mailman | xargs -0 chmod a+x --
	find debian/mailman/usr/share/doc/mailman -name "*.html" -exec chmod -x {} \;
	find debian/mailman/usr/share/doc/mailman -name "*.txt" -exec chmod -x {} \;

        # Create the /var/lo{g,ck} links last, and wih ln -s, because they need to be
	# absolute links. Relative links cause trouble for people making multiple levels,
	# e.g. when /var/log is symlinked to somewhere else. They need to be last because
	# otherwise dh_link will revert them back to relative ones.
	#
	# link it back to /var/lib/mailman/locks
	rmdir debian/mailman/var/lib/$(package)/locks
	ln -s /var/lock/mailman debian/mailman/var/lib/$(package)/locks
	# remove the log directory and link it to /var/log/mailman
	rmdir debian/mailman/var/lib/$(package)/logs
	ln -s /var/log/mailman debian/mailman/var/lib/$(package)/logs
	chown root:list debian/mailman/var/log/mailman
	chmod 2770 debian/mailman/var/log/mailman

	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary:		binary-indep binary-arch

.PHONY: binary binary-arch binary-indep clean
