summaryrefslogtreecommitdiffstats
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules308
1 files changed, 308 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..1c899ed
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,308 @@
+#!/usr/bin/make -f
+# debian/rules for exim4
+# This file is public domain software, originally written by Joey Hess.
+#
+# Uncomment this to turn on verbose mode.
+# export DH_VERBOSE=1
+
+# avoid uname -m detection
+ifdef DEB_TARGET_GNU_CPU
+export EXIM_ARCHTYPE = $(DEB_TARGET_GNU_CPU)
+else
+export EXIM_ARCHTYPE = $(shell dpkg-architecture -qDEB_TARGET_GNU_CPU)
+endif
+
+buildname = $(shell scripts/os-type)-$(shell scripts/arch-type)
+DEBIAN = $(CURDIR)/debian
+
+export DEB_BUILD_MAINT_OPTIONS := hardening=+all
+include /usr/share/dpkg/buildflags.mk
+include /usr/share/dpkg/pkg-info.mk
+
+EXIM4VERSIONLOCALSCAN = \
+ $(shell sed -rn \
+ 's/^\s*.define LOCAL_SCAN_ABI_VERSION_(MAJOR|MINOR)\s*([0-9]+).*/\2/p' \
+ src/local_scan.h | \
+ { read MAJOR; read MINOR; echo $${MAJOR}.$${MINOR} ; }\
+ )
+
+# The build system ignores CPPFLAGS, append them to CFLAGS
+CFLAGS += $(shell getconf LFS_CFLAGS) -D_LARGEFILE_SOURCE \
+ -fno-strict-aliasing -Wall $(CPPFLAGS)
+export CFLAGS
+# LFLAGS is used where GNU would use LDFLAGS
+export LFLAGS = $(LDFLAGS)
+
+LC_ALL=C
+export LC_ALL
+
+# If you want to build a daemon with a configuration tailored to YOUR special
+# needs, uncomment the exim4-daemon-custom package in debian/control,
+# call "debian/rules unpack-configs", copy EDITME.exim4-light to
+# EDITME.exim4-custom and modify it, then call "debian/rules pack-configs".
+#
+# Afterwards EITHER uncomment the customdaemon definition below, or set it
+# to the desired value via the environment.
+# e.g run:
+# env customdaemon=exim4-daemon-custom dpkg-buildpackage -uc -us
+#
+# If you want to create multiple custom packages with different names, use
+# the script debian/create-custom-package [suffix].
+
+# customdaemon = exim4-daemon-custom
+daemons = exim4-daemon-light exim4-daemon-heavy $(customdaemon)
+
+# If you want to build with OpenSSL instead of GnuTLS, uncomment this
+# OPENSSL:=1
+# Please note that building exim4-daemon-heavy with OpenSSL is a GPL
+# violation.
+
+PROVIDE_DEFAULT_MTA = $(shell if dpkg-vendor --is Ubuntu || \
+ dpkg-vendor --derives-from Ubuntu ; then : ; else \
+ echo "default-mta" ; fi)
+# for reproducible build. If set exim would use $TZ as default value for
+# TIMEZONE_DEFAULT
+undefine TZ
+unexport TZ
+
+
+unpack-configs: unpack-configs-stamp
+
+unpack-configs-stamp: src/EDITME exim_monitor/EDITME
+ patch -o EDITME.eximon exim_monitor/EDITME \
+ $(DEBIAN)/EDITME.eximon.diff
+ patch -o EDITME.exim4-light src/EDITME \
+ $(DEBIAN)/EDITME.exim4-light.diff
+ifdef OPENSSL
+ patch EDITME.exim4-light $(DEBIAN)/EDITME.openssl.exim4-light.diff
+endif
+ 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 || \
+ exit $$? ;\
+ fi; \
+ done
+ touch unpack-configs-stamp
+
+pack-configs:
+ -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
+
+bdir-stamp: unpack-configs-stamp
+ for i in $(daemons) ; do \
+ mkdir b-$$i && \
+ find . -mindepth 1 -maxdepth 1 \
+ -name debian -prune -o \
+ -name 'b-*' -o -print0 | \
+ xargs --no-run-if-empty --null \
+ cp -a --target-directory=b-$$i ; \
+ done
+ touch $@
+
+override_dh_auto_configure: unpack-configs-stamp bdir-stamp
+ for i in $(daemons) ; do \
+ mkdir -p b-$$i/Local && \
+ cp EDITME.`echo $$i | sed -e s/exim4-daemon/exim4/` \
+ b-$$i/Local/Makefile && \
+ cp EDITME.eximon b-$$i/Local/eximon.conf ;\
+ done
+
+override_dh_auto_build:
+ set -e ; for i in $(daemons) ; do \
+ echo building $$i; \
+ cd $(CURDIR)/b-$$i && \
+ $(MAKE) FULLECHO='' ; \
+ done
+ # Which version of Berkeley DB are we building against?
+ printf '#include <db.h>\ninstdbversionis DB_VERSION_MAJOR DB_VERSION_MINOR\n' | \
+ cpp -P | grep instdbversionis |\
+ sed -e 's/[[:space:]]*instdbversionis[[:space:]]//' \
+ -e 's/[[:space:]][[:space:]]*/./' \
+ -e 's_^_s/^BDBVERSION=.*/BDBVERSION=_' \
+ -e 's_$$_/_' \
+ > $(DEBIAN)/berkeleydb.sed
+ # Store Berkeley DB version in postinst script.
+ sed -i -f $(DEBIAN)/berkeleydb.sed \
+ $(DEBIAN)/exim4-base.postinst
+ # symlink identical maintainerscripts
+ for i in `echo $(daemons) | sed -e s/exim4-daemon-light//` ; do \
+ ln -sfv exim4-daemon-light.prerm \
+ "$(DEBIAN)/$$i.prerm" ; \
+ ln -sfv exim4-daemon-light.postinst \
+ "$(DEBIAN)/$$i.postinst" ; \
+ done
+
+override_dh_auto_install-arch: debian/README.Debian
+ cd b-exim4-daemon-light && \
+ $(MAKE) install FULLECHO='' \
+ 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
+ if [ -e "$(DEBIAN)/example.conf.md5" ] && [ "$$(< $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf md5sum)" != "$$(cat $(DEBIAN)/example.conf.md5)" ] ; then \
+ echo "upstream example configuration has changed, new md5sum:"; \
+ < $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf md5sum; \
+ echo "aborting build."; \
+ exit 1; \
+ fi
+ < $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf md5sum > $(DEBIAN)/example.conf.md5
+ 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
+ install -m755 b-exim4-daemon-light/build-$(buildname)/convert4r4 \
+ $(DEBIAN)/exim4-base/usr/sbin/exim_convert4r4
+ install -m755 \
+ b-exim4-daemon-light/build-$(buildname)/transport-filter.pl \
+ b-exim4-daemon-light/util/ratelimit.pl \
+ $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples
+ rm $(DEBIAN)/exim4-base/usr/sbin/exim
+ mv $(DEBIAN)/exim4-base/usr/sbin/eximon \
+ $(DEBIAN)/eximon4/usr/sbin
+ mv $(DEBIAN)/exim4-base/usr/sbin/eximon.bin \
+ $(DEBIAN)/eximon4/usr/libexec/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
+ for i in b-exim4-daemon-*/build-$(buildname)/exim ; do \
+ install -m4755 -oroot -groot $$i \
+ $(DEBIAN)/`echo $$i | sed -e 's/^b-//' -e 's_/.*__'`/usr/sbin/exim4 ; \
+ done
+
+override_dh_auto_install-indep: debian/README.Debian
+ # if you change anything here, you will have to change
+ # config-custom/debian/rules as well
+ sed -e \
+ "s/^UPEX4C_version=\"\"/UPEX4C_version=\"$(DEB_VERSION)\"/" \
+ < $(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 '*/.svn/*' -prune \) -or \
+ \( -type f -print \)` | \
+ { cd $(DEBIAN)/exim4-config/etc/exim4/conf.d/ && \
+ tar xf - ; }
+
+ install -m644 $(DEBIAN)/email-addresses $(DEBIAN)/exim4-config/etc/
+ install -m640 -oroot -groot $(DEBIAN)/passwd.client \
+ $(DEBIAN)/exim4-config/etc/exim4/
+ chmod 755 $(DEBIAN)/debconf/update-exim4.conf.template
+ env CONFDIR=$(DEBIAN)/debconf \
+ $(DEBIAN)/debconf/update-exim4.conf.template --nobackup --run
+
+# only called manually by maintainer before upload.
+update-mtaconflicts:
+ command -v grep-aptavail > /dev/null && \
+ grep-aptavail --show-field=Package --field=Provides \
+ mail-transport-agent --no-field-names \
+ | grep -v exim | sort -u | \
+ tr '\n' ',' | sed -e 's/,/, /g;s/, $$//' > $(DEBIAN)/mtalist
+
+# Generate README.Debian as text/html ...
+debian/README.Debian.html: debian/README.Debian.xml
+ xsltproc --nonet --stringparam section.autolabel 1 \
+ -o $@ \
+ /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl \
+ $<
+# ... and text/plain
+debian/README.Debian: debian/README.Debian.html
+ chmod 755 $(DEBIAN)/lynx-dump-postprocess
+ lynx -force_html -dump $< | $(DEBIAN)/lynx-dump-postprocess > $@.tmp
+ mv $@.tmp $@
+
+override_dh_auto_test:
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+ # it is not possible to run exim unless the compile-time specified
+ # user exists.
+ if id -u Debian-exim ; then \
+ echo Debian-exim user found, running minimal testsuite ; \
+ chmod +x debian/minimaltest ; \
+ rm -rf $(CURDIR)/test ; \
+ for i in b-exim4-daemon*/build-$(buildname)/exim ;\
+ do mkdir $(CURDIR)/test && \
+ debian/minimaltest $(CURDIR)/test $$i || \
+ { echo testsuite error ; exit 1 ; } ; \
+ rm -rf $(CURDIR)/test ; \
+ done \
+ fi
+endif
+
+override_dh_auto_clean:
+ debconf-updatepo
+
+ -rm -rf build-* doc/tmp test/ b-exim*
+ -rm -f EDITME.* unpack-configs-stamp bdir-stamp
+ -rm -f $(DEBIAN)/debconf/exim4.conf.template $(DEBIAN)/files \
+ $(DEBIAN)/README.Debian $(DEBIAN)/README.Debian.html \
+ $(DEBIAN)/berkeleydb.sed
+
+ #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.*' -delete
+ #pwd
+ chmod 755 $(DEBIAN)/exim-gencert \
+ $(DEBIAN)/lynx-dump-postprocess $(DEBIAN)/script \
+ $(DEBIAN)/exim-adduser
+
+override_dh_installchangelogs:
+ dh_installchangelogs -pexim4-base doc/ChangeLog
+ dh_installchangelogs --no-package=exim4-base \
+ -XCHANGES -Xdoc/ChangeLog
+
+override_dh_installppp:
+ dh_installppp --name=exim4
+
+override_dh_fixperms:
+ dh_fixperms -X/etc/exim4/passwd.client -Xusr/sbin/exim4
+
+override_dh_gencontrol:
+ dh_gencontrol -- \
+ -VUpstream-Version=$(DEB_VERSION_EPOCH_UPSTREAM) \
+ -VMTA-Conflicts="$(shell cat $(DEBIAN)/mtalist)" \
+ -Vdist:Provides:exim4-daemon-light="$(PROVIDE_DEFAULT_MTA)" \
+ -Vlocalscanabiversion="exim4-localscanapi-$(EXIM4VERSIONLOCALSCAN)"
+
+override_dh_installlogrotate:
+ dh_installlogrotate
+ dh_installlogrotate --name=exim4-paniclog
+
+override_dh_installinit:
+ dh_installinit --noscripts --name=exim4
+
+override_dh_install:
+ # install config.h from daemon package, but not from exim4-daemon-light
+ dh_install -p exim4-dev \
+ $(shell ls -1 b-exim4-daemon-*/build-$(buildname)/config.h | grep -v ^b-exim4-daemon-light/) \
+ usr/include/exim4
+ dh_install
+
+override_dh_link:
+ rm -rf debian/exim4/usr/share/doc/exim4
+ dh_link
+
+%:
+ dh $@ --no-parallel
+
+.PHONY: pack-configs unpack-configs update-mtaconflicts