summaryrefslogtreecommitdiff
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules415
1 files changed, 415 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..6a30b9e
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,415 @@
+#!/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 $(shell getconf LFS_CFLAGS) -D_LARGEFILE_SOURCE -fno-strict-aliasing
+
+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-package [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
+
+# If you remove exim4-daemon-light from buildpackages to prevent
+# exim4-daemon-light from being built, you need to modify the build
+# process to pull the helper binaries from the daemon package that you
+# actually build. If you simply remove exim4-daemon-light here, you will
+# end up with exim4-base sans binaries, which is most probably not what
+# you intend to have.
+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: /{s/^Version: \(.\+\)-[^-]\+/\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
+ -rm -f debian/debconf/exim4.conf.template debian/files
+
+ #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
+ # fix broken (0600) permissions in original tarball
+ find OS doc scripts exim_monitor src util -perm -044 -or -print0 |\
+ xargs -0r chmod -c og+r
+
+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/
+ chmod 755 debian/debconf/update-exim4.conf.template
+ CONFDIR=$(DEBIAN)/debconf debian/debconf/update-exim4.conf.template --nobackup --run
+ # escape dashes in manpages
+ cd $(DEBIAN)/exim4-base/usr/share/man/man8/ &&\
+ perl -pi -e 's/(?<!\\)-/\\-/g' \
+ syslog2eximlog.8 eximstats.8 exipick.8
+# 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