1
0
Fork 0
exim4/debian/rules
Daniel Baumann e12edf9d74
Removing default-mta from exim4-daemon-light provides.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-21 14:27:59 +02:00

327 lines
11 KiB
Makefile
Executable file

#!/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.
# 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" ; \
ln -sfv exim4-daemon-light.exim4.service \
"$(DEBIAN)/$$i.exim4.service" ; \
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
install -m755 b-exim4-daemon-light/util/mailtest \
$(DEBIAN)/exim4-base/usr/bin/
pod2man --center=EXIM4 --section=1 \
$(DEBIAN)/exim4-base/usr/bin/mailtest \
$(DEBIAN)/exim4-base/usr/share/man/man1/mailtest.1
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
pod2man --center=EXIM4 --section=8 \
$(DEBIAN)/exim4-base/usr/sbin/exim_msgdate \
$(DEBIAN)/exim4-base/usr/share/man/man8/exim_msgdate.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
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_installsystemd:
for i in $(daemons) ; do \
dh_installsystemd --package=$$i --name=exim4 ; \
done
dh_installsystemd --remaining-packages
# move service file to real (post usrmerge) location,
for i in $(daemons) ; do \
if test -d debian/$${i}/lib/systemd ; then \
mv -v debian/$${i}/lib/systemd/ \
debian/$${i}/usr/lib/; \
rmdir debian/$${i}/lib ; \
fi ; \
done
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)" \
-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