#!/usr/bin/make -f # Sample debian/rules that uses debhelper. # This file is public domain software, originally written by Joey Hess. # # This version is for a hypothetical package that builds an # architecture-dependant package, as well as an architecture-independent # package. # Uncomment this to turn on verbose mode. export DH_VERBOSE=1 buildname=$${build:-`$(SHELL) scripts/os-type`-`$(SHELL) scripts/arch-type`} # Include dpatch stuff. include /usr/share/dpatch/dpatch.make DEBIAN:=$(shell pwd)/debian CFLAGS = -g -Wall -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif export CFLAGS # Which packages should we build? buildbasepackages=yes builddaemonpackages=exim4-daemon-heavy # If you want to build a daemon with a configuration tailored to YOUR special # needs, call "fakeroot debian/rules unpack-configs", copy EDITME.exim4-light # to EDITME.exim4-custom and modify it. # # If you want to create multiple custom packages with different names, use # the script debian/create-custom-name [suffix]. # # Afterwards EITHER disable the definition of builddaemonpackages 4 lines above # by adding a hash-mark (#) at the start of the line and enable the one # below instead by removing the hash-mark OR simply call # "fakeroot debian/rules buildbasepackages=no builddaemonpackages=exim4-daemon-custom binary" #builddaemonpackages=exim4-daemon-custom # If you want to build a source-package that builds the custom daemon call # "fakeroot debian/rules pack-configs" after customizing EDITME.exim4-custom ifeq ($(buildbasepackages),yes) buildpackages=exim4-base exim4-daemon-light eximon4 $(builddaemonpackages) else buildpackages=$(builddaemonpackages) endif # generate -pexim4-base -peximon4 ... commandline for debhelper dhbuildpackages=$(addprefix -p,$(buildpackages)) # exim4-daemon-light --> build-exim4-daemon-light/exim daemonbinaries=$(addprefix build-,$(addsuffix /exim,$(builddaemonpackages))) debiandaemonbinaries=$(addprefix $(DEBIAN)/,$(addsuffix /usr/sbin/exim4,$(builddaemonpackages))) # get upstream-version from debian/changelog, i.e. anything until the first - UPSTREAMVERSION := $(shell dpkg-parsechangelog | sed -n '/^Version: [0-9\.]\+-.\+/{s/^Version: \([0-9\.]\+\)-.\+/\1/;p;}') MTACONFLICTS := $(shell cat debian/mtalist) ifeq (,$(wildcard /usr/bin/po2debconf)) PO2DEBCONF := no else PO2DEBCONF := yes endif unpack-configs: unpack-configs-stamp unpack-configs-stamp: patch-stamp patch -o EDITME.eximon exim_monitor/EDITME debian/EDITME.eximon.diff patch -o EDITME.exim4-light src/EDITME debian/EDITME.exim4-light.diff -for editme in debian/EDITME.exim4-*.diff; do \ if [ "$$editme" != "debian/EDITME.exim4-light.diff" ]; then \ TARGETNAME=`basename $$editme .diff`; \ echo patch -o $$TARGETNAME EDITME.exim4-light $$editme; \ patch -o $$TARGETNAME EDITME.exim4-light $$editme; \ fi; \ done touch unpack-configs-stamp pack-configs: patch -diff -u src/EDITME EDITME.exim4-light > debian/EDITME.exim4-light.diff -for editme in EDITME.exim4-*; do \ if [ "$$editme" != "EDITME.exim4-light" ]; then \ echo diff -u EDITME.exim4-light $$editme; \ diff -u EDITME.exim4-light $$editme > debian/$${editme}.diff; \ fi; \ done -diff -u exim_monitor/EDITME EDITME.eximon > debian/EDITME.eximon.diff # only called manually by maintainer before upload. update-mtaconflicts: which grep-available > /dev/null && \ grep-available --show-field=Package --field=Provides \ mail-transport-agent --no-field-names \ /var/lib/apt/lists/*Packages | grep -v exim | sort -u | \ tr '\n' ',' | sed -e 's/,/, /g;s/, $$//' > debian/mtalist configure: configure-stamp # the patches might change src/EDITME. configure-stamp: patch-stamp unpack-configs-stamp dh_testdir # Add here commands to configure the package. touch configure-stamp exiscan-patched-stamp: @echo DEBUG running $@ dh_testdir @echo "applying exiscan patch" patch -f --no-backup-if-mismatch --dry-run -p1 < debian/patches/exiscan.patch && \ patch -f --no-backup-if-mismatch -p1 < debian/patches/exiscan.patch > $@ 2>&1 exiscan-unpatched: @echo DEBUG running $@ @if test -e exiscan-patched-stamp ; then \ echo "reversing exiscan patch" && \ patch -f --no-backup-if-mismatch -p1 -R < debian/patches/exiscan.patch && \ rm -f exiscan-patched-stamp ; \ fi # Build binaries for the base package, the eximon4 package, and the # exim4-daemon-light package. build-exim4-daemon-light/exim: configure-stamp echo build-exim4-daemon-light dh_testdir $(MAKE) -f $(DEBIAN)/rules exiscan-unpatched rm -rf build-$(buildname) # Add here command to compile/build the package. mkdir -p Local cp EDITME.exim4-light Local/Makefile cp EDITME.eximon Local/eximon.conf $(MAKE) mv build-$(buildname) build-exim4-daemon-light build-exim4-daemon-custom/exim: configure-stamp echo build-exim4-daemon-custom dh_testdir $(MAKE) -f $(DEBIAN)/rules exiscan-patched-stamp rm -rf build-$(buildname) # Add here command to compile/build the package. mkdir -p Local cp EDITME.exim4-custom Local/Makefile $(MAKE) Local/Makefile configure # This is a kludge. The upstream Makefile should be fixed, really. $(MAKE) -C build-$(buildname) checklocalmake Makefile os.h os.c config.h buildpcre buildlookups buildrouters buildtransports buildauths exim @for i in doc/exiscan-acl-examples.txt doc/exiscan-acl-spec.txt ; do \ test -e $$i && cp -v $$i build-$(buildname)/ ; \ done mv build-$(buildname) build-exim4-daemon-custom $(MAKE) -f $(DEBIAN)/rules exiscan-unpatched build-exim4-daemon-heavy/exim: configure-stamp echo build-exim4-daemon-heavy dh_testdir $(MAKE) -f $(DEBIAN)/rules exiscan-patched-stamp rm -rf build-$(buildname) # Add here command to compile/build the package. mkdir -p Local cp EDITME.exim4-heavy Local/Makefile $(MAKE) Local/Makefile configure # This is a kludge. The upstream Makefile should be fixed, really. $(MAKE) -C build-$(buildname) checklocalmake Makefile os.h os.c config.h buildpcre buildlookups buildrouters buildtransports buildauths exim @for i in doc/exiscan-acl-examples.txt doc/exiscan-acl-spec.txt ; do \ test -e $$i && cp -v $$i build-$(buildname)/ ; \ done mv build-$(buildname) build-exim4-daemon-heavy $(MAKE) -f $(DEBIAN)/rules exiscan-unpatched build-indep: build-indep-stamp build-indep-stamp: dh_testdir # Add here command to compile/build the arch indep package. # It's ok not to do anything here, if you don't need to build # anything for this package. #/usr/bin/docbook-to-man debian/exim.sgml > exim.1 touch build-indep-stamp build-arch: build-arch-stamp ifeq ($(buildbasepackages),yes) build-arch-stamp: build-exim4-daemon-light/exim $(daemonbinaries) else build-arch-stamp: $(daemonbinaries) endif dh_testdir touch build-arch-stamp build: build-arch build-indep clean: cleanfiles unpatch cleanfiles: dh_testdir dh_testroot rm -f build-stamp configure-stamp installbase-stamp # Add here commands to clean up after the build process. -$(MAKE) clean $(MAKE) -f $(DEBIAN)/rules exiscan-unpatched -rm -rf build-* doc/tmp -rm -f EDITME.* Local/Makefile Local/eximon.conf unpack-configs-stamp #these are identical for all daemon-* and therefore symlinked @cd $(DEBIAN) && find . -maxdepth 1 \ -regex '^\./exim4-daemon-.*\.\(postinst\|prerm\)$$' \ -and -not -name 'exim4-daemon-light.*' -print0 \ | xargs -0r rm -v pwd chmod 755 $(DEBIAN)/exim-gencert ifeq ($(PO2DEBCONF),yes) # Compatibility with woody. echo 1 > debian/po/output for i in debian/*.templates.master ; do \ po2debconf $$i > debian/`basename $$i .master`; \ done rm -f debian/po/output endif dh_clean podebconfize rm -rf Local installbase-stamp: build-exim4-daemon-light/exim dh_testdir dh_testroot dh_clean -k dh_installdirs rm -rf build-$(buildname) ln -s build-exim4-daemon-light build-$(buildname) $(MAKE) install \ INSTALL_ARG=-no_symlink \ inst_conf=$(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf \ inst_aliases=$(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/aliases \ inst_dest=$(DEBIAN)/exim4-base/usr/sbin sed -e 's,/[a-zA-Z/0-9.-]*exim4-base/examples/,/etc/,' \ < $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf \ > $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf.tmp mv $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf.tmp \ $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf sed -e 's,PERL_COMMAND,/usr/bin/perl,' < src/convert4r4.src \ > $(DEBIAN)/exim4-base/usr/sbin/exim_convert4r4 chmod 755 $(DEBIAN)/exim4-base/usr/sbin/exim_convert4r4 mv $(DEBIAN)/exim4-base/usr/sbin/exim \ $(DEBIAN)/exim4-daemon-light/usr/sbin/exim4 # fix permssions of /usr/sbin/exim4 if running with restrictive umask, # dh_fixperms sanitizes anything else chmod 4755 $(DEBIAN)/exim4-daemon-light/usr/sbin/exim4 mv $(DEBIAN)/exim4-base/usr/sbin/eximon \ $(DEBIAN)/eximon4/usr/sbin mv $(DEBIAN)/exim4-base/usr/sbin/eximon.bin \ $(DEBIAN)/eximon4/usr/lib/exim4 pod2man --center=EXIM4 --section=8 \ $(DEBIAN)/exim4-base/usr/sbin/exipick \ $(DEBIAN)/exim4-base/usr/share/man/man8/exipick.8 pod2man --center=EXIM4 --section=8 \ $(DEBIAN)/exim4-base/usr/sbin/eximstats \ $(DEBIAN)/exim4-base/usr/share/man/man8/eximstats.8 install -m755 $(DEBIAN)/syslog2eximlog $(DEBIAN)/exim4-base/usr/sbin/ pod2man --center=EXIM4 --section=8 \ $(DEBIAN)/syslog2eximlog \ $(DEBIAN)/exim4-base/usr/share/man/man8/syslog2eximlog.8 # if you change anything here, you will have to change # config-custom/debian/rules as well sed -e \ "s/^UPEX4C_version=\"\"/UPEX4C_version=\"`dpkg-parsechangelog | sed -n '/^Version: /s/^Version: //p'`\"/" \ < $(DEBIAN)/debconf/update-exim4.conf \ > $(DEBIAN)/exim4-config/usr/sbin/update-exim4.conf chmod 755 $(DEBIAN)/exim4-config/usr/sbin/update-exim4.conf install -m 755 $(DEBIAN)/update-exim4defaults $(DEBIAN)/exim4-config/usr/sbin cd $(DEBIAN)/debconf/conf.d && \ tar cf - `find \( -path '*/CVS/*' -prune \) -or \( -type f -print \)` | \ { cd $(DEBIAN)/exim4-config/etc/exim4/conf.d/ && \ tar xf - ; } # ship a copy in examples # install -m644 debian/debconf/exim4.conf.template debian/exim4-config/usr/share/doc/exim4-config/examples/exim4.conf.template.debconf install -m644 debian/email-addresses debian/exim4-config/etc/ install -m755 debian/ip-up.d debian/exim4-config/etc/ppp/ip-up.d/exim4 install -m640 -oroot -groot debian/passwd.client $(DEBIAN)/exim4-config/etc/exim4/ # generate .template. Ugly - better alternative? cd $(DEBIAN)/debconf/conf.d/ && \ for i in main acl router transport retry rewrite auth ; do \ cat `env LC_ALL=C ls -d $$i/* | grep -v /CVS` ; \ done \ > $(DEBIAN)/exim4-config/etc/exim4/exim4.conf.template # dh_movefiles touch installbase-stamp # This dependency expands to # debian/exim4-daemon-heavy/usr/sbin/exim4: build-exim4-daemon-heavy/exim $(debiandaemonbinaries): $(DEBIAN)/%/usr/sbin/exim4: build-%/exim dh_testdir dh_testroot dh_installdirs install -m4755 -oroot -groot $< $@ podebconfize: ifeq ($(PO2DEBCONF),yes) # let debhelper do po2debconf if it is new enough. if dh_testversion 4.1.16 >/dev/null 2>&1 ; then \ for i in debian/*.templates.master ; do \ cat $$i > debian/`basename $$i .master`; \ touch --reference=$$i debian/`basename $$i .master` ; \ done \ fi endif touch $@ # Build architecture-independent files here. # this is just exim4-config and exim4. binary-indep: build $(install) podebconfize ifeq ($(buildbasepackages),yes) dh_testdir -i dh_testroot -i # upstream changelog is only in exim4-base dh_link -i dh_installchangelogs -i dh_installdocs -i dh_installexamples -i #dh_installmenu -i dh_installdebconf -i dh_installlogrotate -i # dh_installemacsen -i #dh_installpam -i #dh_installmime -i # dh_installinit -i dh_installcron -i # dh_installinfo -i # dh_undocumented -i dh_installman -i dh_install -i dh_strip -i dh_compress -i dh_fixperms -i -X/etc/exim4/passwd.client # dh_makeshlibs -i dh_installdeb -i # dh_perl -i dh_shlibdeps -i dh_gencontrol -i -- -VUpstream-Version=$(UPSTREAMVERSION) -VMTA-Conflicts="$(MTACONFLICTS)" dh_md5sums -i dh_builddeb -i endif # Build architecture-dependent files here. ifeq ($(buildbasepackages),yes) install=installbase-stamp $(debiandaemonbinaries) else install=$(debiandaemonbinaries) endif binary-arch: build $(install) podebconfize dh_testdir $(dhbuildpackages) dh_testroot $(dhbuildpackages) # symlink identical maintainerscripts @for i in $(builddaemonpackages) ; do \ ln -sfv exim4-daemon-light.prerm \ "$(DEBIAN)/$$i.prerm" ; \ ln -sfv exim4-daemon-light.postinst \ "$(DEBIAN)/$$i.postinst" ; \ done # upstream changelog is only in exim4-base, the other packages include # a symlink dh_installchangelogs -pexim4-base doc/ChangeLog # remove "-pexim4-base" from "-pexim4-base -pexim4-daemon-light ..." dh_installchangelogs $(subst -pexim4-base,,$(dhbuildpackages)) dh_installdocs $(dhbuildpackages) dh_installexamples $(dhbuildpackages) dh_installmenu $(dhbuildpackages) dh_installdebconf $(dhbuildpackages) dh_installlogrotate $(dhbuildpackages) # dh_installemacsen $(dhbuildpackages) dh_installpam $(dhbuildpackages) dh_installmime $(dhbuildpackages) dh_installinit $(dhbuildpackages) --noscripts --init-script=exim4 dh_installcron $(dhbuildpackages) # dh_installinfo $(dhbuildpackages) # dh_undocumented $(dhbuildpackages) dh_installman $(dhbuildpackages) dh_install $(dhbuildpackages) dh_strip $(dhbuildpackages) dh_link $(dhbuildpackages) dh_compress $(dhbuildpackages) dh_fixperms $(dhbuildpackages) -Xusr/sbin/exim4 # dh_makeshlibs $(dhbuildpackages) dh_installdeb $(dhbuildpackages) # dh_perl $(dhbuildpackages) dh_shlibdeps $(dhbuildpackages) dh_gencontrol $(dhbuildpackages) -- -VUpstream-Version=$(UPSTREAMVERSION) -VMTA-Conflicts="$(MTACONFLICTS)" dh_md5sums $(dhbuildpackages) dh_builddeb $(dhbuildpackages) binary: binary-arch binary-indep .PHONY: build clean binary-indep binary-arch binary install exiscan-unpatched