Commit | Line | Data |
---|---|---|
de45f55a AM |
1 | #!/usr/bin/make -f |
2 | # debian/rules for exim4 | |
3 | # This file is public domain software, originally written by Joey Hess. | |
4 | # | |
01e60269 | 5 | # Uncomment this to turn on verbose mode. |
de45f55a AM |
6 | # export DH_VERBOSE=1 |
7 | ||
8 | buildname := $(shell scripts/os-type)-$(shell scripts/arch-type) | |
9 | DEBIAN := $(shell pwd)/debian | |
10 | ||
01e60269 | 11 | export DEB_BUILD_MAINT_OPTIONS := hardening=+all |
de45f55a | 12 | include /usr/share/dpkg/buildflags.mk |
01e60269 AM |
13 | include /usr/share/dpkg/pkg-info.mk |
14 | # SOURCE_DATE_EPOCH is exported by pkg-info.mk since dpkg 1.18.8/July 2016 | |
15 | # fall back to current date otherwise. | |
16 | SOURCE_DATE_EPOCH ?= $(shell date '+%s') | |
17 | ||
de45f55a AM |
18 | |
19 | # The build system ignores CPPFLAGS, append them to CFLAGS | |
01e60269 AM |
20 | CFLAGS += $(shell getconf LFS_CFLAGS) -D_LARGEFILE_SOURCE \ |
21 | -fno-strict-aliasing -Wall $(CPPFLAGS) | |
de45f55a AM |
22 | export CFLAGS |
23 | # LFLAGS is used where GNU would use LDFLAGS | |
01e60269 | 24 | export LFLAGS = $(LDFLAGS) |
de45f55a AM |
25 | |
26 | LC_ALL=C | |
27 | export LC_ALL | |
28 | ||
de45f55a | 29 | # If you want to build a daemon with a configuration tailored to YOUR special |
01e60269 AM |
30 | # needs, uncomment the exim4-daemon-custom package in debian/control, |
31 | # call "debian/rules unpack-configs", copy EDITME.exim4-light to | |
32 | # EDITME.exim4-custom and modify it, then call "debian/rules pack-configs". | |
33 | # | |
34 | # Afterwards EITHER uncomment the customdaemon definition below, or set it | |
35 | # to the desired value via the environment. | |
36 | # e.g run: | |
37 | # env customdaemon=exim4-daemon-custom dpkg-buildpackage -uc -us | |
de45f55a AM |
38 | # |
39 | # If you want to create multiple custom packages with different names, use | |
40 | # the script debian/create-custom-package [suffix]. | |
01e60269 AM |
41 | |
42 | # customdaemon = exim4-daemon-custom | |
43 | daemons = exim4-daemon-light exim4-daemon-heavy $(customdaemon) | |
de45f55a AM |
44 | |
45 | # If you want to build with OpenSSL instead of GnuTLS, uncomment this | |
46 | # OPENSSL:=1 | |
47 | # Please note that building exim4-daemon-heavy with OpenSSL is a GPL | |
48 | # violation. | |
49 | ||
0baa7b9d SB |
50 | PROVIDE_DEFAULT_MTA := $(shell if dpkg-vendor --is Ubuntu || \ |
51 | dpkg-vendor --derives-from Ubuntu ; then : ; else \ | |
52 | echo "default-mta" ; fi) | |
53 | # for reproducible build. If set exim would use $TZ as default value for | |
54 | # TIMEZONE_DEFAULT | |
55 | undefine TZ | |
56 | unexport TZ | |
57 | ||
de45f55a | 58 | |
de45f55a | 59 | unpack-configs: unpack-configs-stamp |
01e60269 | 60 | |
de45f55a AM |
61 | unpack-configs-stamp: src/EDITME exim_monitor/EDITME |
62 | patch -o EDITME.eximon exim_monitor/EDITME \ | |
63 | $(DEBIAN)/EDITME.eximon.diff | |
64 | patch -o EDITME.exim4-light src/EDITME \ | |
65 | $(DEBIAN)/EDITME.exim4-light.diff | |
66 | ifdef OPENSSL | |
67 | patch EDITME.exim4-light $(DEBIAN)/EDITME.openssl.exim4-light.diff | |
68 | endif | |
0baa7b9d | 69 | for editme in $(DEBIAN)/EDITME.exim4-*.diff; do \ |
de45f55a AM |
70 | if [ "$$editme" != "$(DEBIAN)/EDITME.exim4-light.diff" ]; then \ |
71 | TARGETNAME=`basename $$editme .diff`; \ | |
72 | echo patch -o $$TARGETNAME EDITME.exim4-light $$editme; \ | |
0baa7b9d SB |
73 | patch -o $$TARGETNAME EDITME.exim4-light $$editme || \ |
74 | exit $$? ;\ | |
de45f55a AM |
75 | fi; \ |
76 | done | |
77 | touch unpack-configs-stamp | |
78 | ||
79 | pack-configs: | |
80 | -diff -u src/EDITME EDITME.exim4-light \ | |
81 | > $(DEBIAN)/EDITME.exim4-light.diff | |
82 | -for editme in EDITME.exim4-*; do \ | |
83 | if [ "$$editme" != "EDITME.exim4-light" ]; then \ | |
84 | echo diff -u EDITME.exim4-light $$editme; \ | |
85 | diff -u EDITME.exim4-light $$editme > $(DEBIAN)/$${editme}.diff; \ | |
86 | fi; \ | |
87 | done | |
88 | -diff -u exim_monitor/EDITME EDITME.eximon \ | |
89 | > $(DEBIAN)/EDITME.eximon.diff | |
90 | ||
01e60269 AM |
91 | bdir-stamp: unpack-configs-stamp |
92 | for i in $(daemons) ; do \ | |
93 | mkdir b-$$i && \ | |
94 | find . -mindepth 1 -maxdepth 1 \ | |
95 | -name debian -prune -o \ | |
96 | -name 'b-*' -o -print0 | \ | |
97 | xargs --no-run-if-empty --null \ | |
98 | cp -a --target-directory=b-$$i ; \ | |
99 | done | |
0baa7b9d | 100 | touch $@ |
de45f55a | 101 | |
01e60269 AM |
102 | override_dh_auto_configure: unpack-configs-stamp bdir-stamp |
103 | for i in $(daemons) ; do \ | |
104 | mkdir -p b-$$i/Local && \ | |
105 | cp EDITME.`echo $$i | sed -e s/exim4-daemon/exim4/` \ | |
106 | b-$$i/Local/Makefile && \ | |
107 | cp EDITME.eximon b-$$i/Local/eximon.conf ;\ | |
108 | done | |
109 | ||
110 | override_dh_auto_build: | |
111 | for i in $(daemons) ; do \ | |
112 | echo building $$i; \ | |
113 | cd $(CURDIR)/b-$$i && \ | |
114 | $(MAKE) FULLECHO='' ; \ | |
115 | done | |
de45f55a AM |
116 | # Which version of Berkeley DB are we building against? |
117 | printf '#include <db.h>\ninstdbversionis DB_VERSION_MAJOR DB_VERSION_MINOR\n' | \ | |
0baa7b9d | 118 | cpp -P | grep instdbversionis |\ |
de45f55a AM |
119 | sed -e 's/[[:space:]]*instdbversionis[[:space:]]//' \ |
120 | -e 's/[[:space:]][[:space:]]*/./' \ | |
121 | -e 's_^_s/^BDBVERSION=.*/BDBVERSION=_' \ | |
122 | -e 's_$$_/_' \ | |
123 | > $(DEBIAN)/berkeleydb.sed | |
124 | # Store Berkeley DB version in postinst script. | |
125 | sed -i -f $(DEBIAN)/berkeleydb.sed \ | |
126 | $(DEBIAN)/exim4-base.postinst | |
01e60269 AM |
127 | # symlink identical maintainerscripts |
128 | for i in `echo $(daemons) | sed -e s/exim4-daemon-light//` ; do \ | |
129 | ln -sfv exim4-daemon-light.prerm \ | |
130 | "$(DEBIAN)/$$i.prerm" ; \ | |
131 | ln -sfv exim4-daemon-light.postinst \ | |
132 | "$(DEBIAN)/$$i.postinst" ; \ | |
133 | done | |
de45f55a | 134 | |
01e60269 | 135 | override_dh_auto_install-arch: debian/README.Debian |
de45f55a AM |
136 | cd b-exim4-daemon-light && \ |
137 | $(MAKE) install FULLECHO='' \ | |
138 | INSTALL_ARG=-no_symlink \ | |
139 | inst_conf=$(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf \ | |
140 | inst_aliases=$(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/aliases \ | |
141 | inst_dest=$(DEBIAN)/exim4-base/usr/sbin | |
142 | if [ -e "$(DEBIAN)/example.conf.md5" ] && [ "$$(< $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf md5sum)" != "$$(cat $(DEBIAN)/example.conf.md5)" ] ; then \ | |
143 | echo "upstream example configuration has changed, new md5sum:"; \ | |
144 | < $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf md5sum; \ | |
145 | echo "aborting build."; \ | |
146 | exit 1; \ | |
147 | fi | |
148 | < $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf md5sum > $(DEBIAN)/example.conf.md5 | |
149 | sed -e 's,/[a-zA-Z/0-9.-]*exim4-base/examples/,/etc/,' \ | |
150 | < $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf \ | |
151 | > $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf.tmp | |
152 | mv $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf.tmp \ | |
153 | $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples/example.conf | |
154 | install -m755 b-exim4-daemon-light/build-$(buildname)/convert4r4 \ | |
155 | $(DEBIAN)/exim4-base/usr/sbin/exim_convert4r4 | |
156 | install -m755 \ | |
157 | b-exim4-daemon-light/build-$(buildname)/transport-filter.pl \ | |
158 | b-exim4-daemon-light/util/ratelimit.pl \ | |
159 | $(DEBIAN)/exim4-base/usr/share/doc/exim4-base/examples | |
01e60269 | 160 | rm $(DEBIAN)/exim4-base/usr/sbin/exim |
de45f55a AM |
161 | mv $(DEBIAN)/exim4-base/usr/sbin/eximon \ |
162 | $(DEBIAN)/eximon4/usr/sbin | |
163 | mv $(DEBIAN)/exim4-base/usr/sbin/eximon.bin \ | |
164 | $(DEBIAN)/eximon4/usr/lib/exim4 | |
165 | pod2man --center=EXIM4 --section=8 \ | |
166 | $(DEBIAN)/exim4-base/usr/sbin/exipick \ | |
167 | $(DEBIAN)/exim4-base/usr/share/man/man8/exipick.8 | |
168 | pod2man --center=EXIM4 --section=8 \ | |
169 | $(DEBIAN)/exim4-base/usr/sbin/eximstats \ | |
170 | $(DEBIAN)/exim4-base/usr/share/man/man8/eximstats.8 | |
171 | install -m755 $(DEBIAN)/syslog2eximlog $(DEBIAN)/exim4-base/usr/sbin/ | |
172 | pod2man --center=EXIM4 --section=8 \ | |
173 | $(DEBIAN)/syslog2eximlog \ | |
174 | $(DEBIAN)/exim4-base/usr/share/man/man8/syslog2eximlog.8 | |
01e60269 AM |
175 | for i in b-exim4-daemon-*/build-$(buildname)/exim ; do \ |
176 | install -m4755 -oroot -groot $$i \ | |
177 | $(DEBIAN)/`echo $$i | sed -e 's/^b-//' -e 's_/.*__'`/usr/sbin/exim4 ; \ | |
178 | done | |
179 | ||
180 | override_dh_auto_install-indep: debian/README.Debian | |
de45f55a AM |
181 | # if you change anything here, you will have to change |
182 | # config-custom/debian/rules as well | |
183 | sed -e \ | |
01e60269 | 184 | "s/^UPEX4C_version=\"\"/UPEX4C_version=\"$(DEB_VERSION)\"/" \ |
de45f55a AM |
185 | < $(DEBIAN)/debconf/update-exim4.conf \ |
186 | > $(DEBIAN)/exim4-config/usr/sbin/update-exim4.conf | |
187 | chmod 755 $(DEBIAN)/exim4-config/usr/sbin/update-exim4.conf | |
188 | install -m 755 $(DEBIAN)/update-exim4defaults \ | |
189 | $(DEBIAN)/exim4-config/usr/sbin | |
190 | ||
191 | cd $(DEBIAN)/debconf/conf.d && \ | |
192 | tar cf - `find \( -path '*/.svn/*' -prune \) -or \ | |
193 | \( -type f -print \)` | \ | |
194 | { cd $(DEBIAN)/exim4-config/etc/exim4/conf.d/ && \ | |
195 | tar xf - ; } | |
196 | ||
de45f55a AM |
197 | install -m644 $(DEBIAN)/email-addresses $(DEBIAN)/exim4-config/etc/ |
198 | install -m640 -oroot -groot $(DEBIAN)/passwd.client \ | |
199 | $(DEBIAN)/exim4-config/etc/exim4/ | |
200 | chmod 755 $(DEBIAN)/debconf/update-exim4.conf.template | |
201 | env CONFDIR=$(DEBIAN)/debconf \ | |
202 | $(DEBIAN)/debconf/update-exim4.conf.template --nobackup --run | |
de45f55a | 203 | |
01e60269 AM |
204 | # only called manually by maintainer before upload. |
205 | update-mtaconflicts: | |
206 | which grep-aptavail > /dev/null && \ | |
207 | grep-aptavail --show-field=Package --field=Provides \ | |
208 | mail-transport-agent --no-field-names \ | |
209 | | grep -v exim | sort -u | \ | |
210 | tr '\n' ',' | sed -e 's/,/, /g;s/, $$//' > $(DEBIAN)/mtalist | |
de45f55a | 211 | |
01e60269 AM |
212 | # Generate README.Debian as text/html ... |
213 | debian/README.Debian.html: debian/README.Debian.xml | |
214 | xsltproc --nonet --stringparam section.autolabel 1 \ | |
215 | -o $@ \ | |
216 | /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl \ | |
217 | $< | |
218 | # ... and text/plain | |
219 | debian/README.Debian: debian/README.Debian.html | |
220 | chmod 755 $(DEBIAN)/lynx-dump-postprocess | |
221 | lynx -force_html -dump $< | $(DEBIAN)/lynx-dump-postprocess > $@.tmp | |
222 | mv $@.tmp $@ | |
de45f55a | 223 | |
01e60269 AM |
224 | override_dh_auto_test: |
225 | ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) | |
226 | # it is not possible to run exim unless the compile-time specified | |
227 | # user exists. | |
228 | if id -u Debian-exim ; then \ | |
229 | echo Debian-exim user found, running minimal testsuite ; \ | |
230 | chmod +x debian/minimaltest ; \ | |
231 | rm -rf $(CURDIR)/test ; \ | |
232 | for i in b-exim4-daemon*/build-$(buildname)/exim ;\ | |
233 | do mkdir $(CURDIR)/test && \ | |
234 | debian/minimaltest $(CURDIR)/test $$i || \ | |
235 | { echo testsuite error ; exit 1 ; } ; \ | |
236 | rm -rf $(CURDIR)/test ; \ | |
237 | done \ | |
238 | fi | |
0baa7b9d SB |
239 | endif |
240 | ||
01e60269 AM |
241 | override_dh_auto_clean: |
242 | debconf-updatepo | |
243 | ||
244 | -rm -rf build-* doc/tmp test/ b-exim* | |
245 | -rm -f EDITME.* unpack-configs-stamp bdir-stamp | |
246 | -rm -f $(DEBIAN)/debconf/exim4.conf.template $(DEBIAN)/files \ | |
247 | $(DEBIAN)/README.Debian $(DEBIAN)/README.Debian.html \ | |
248 | $(DEBIAN)/berkeleydb.sed | |
249 | ||
250 | #these are identical for all daemon-* and therefore symlinked | |
251 | @cd $(DEBIAN) && find . -maxdepth 1 \ | |
252 | -regex '^\./exim4-daemon-.*\.\(postinst\|prerm\)$$' \ | |
253 | -and -not -name 'exim4-daemon-light.*' -delete | |
254 | #pwd | |
255 | chmod 755 $(DEBIAN)/exim-gencert \ | |
256 | $(DEBIAN)/lynx-dump-postprocess $(DEBIAN)/script \ | |
257 | $(DEBIAN)/exim-adduser $(DEBIAN)/exim4_refresh_gnutls-params | |
258 | ||
0baa7b9d SB |
259 | override_dh_installchangelogs: |
260 | dh_installchangelogs -pexim4-base doc/ChangeLog | |
261 | dh_installchangelogs --no-package=exim4-base \ | |
262 | -XCHANGES -Xdoc/ChangeLog | |
263 | ||
264 | override_dh_installppp: | |
265 | dh_installppp --name=exim4 | |
266 | ||
0baa7b9d SB |
267 | override_dh_fixperms: |
268 | dh_fixperms -X/etc/exim4/passwd.client -Xusr/sbin/exim4 | |
269 | ||
270 | override_dh_gencontrol: | |
271 | dh_gencontrol -- \ | |
01e60269 | 272 | -VUpstream-Version=$(DEB_VERSION_EPOCH_UPSTREAM) \ |
0baa7b9d SB |
273 | -VMTA-Conflicts="$(shell cat $(DEBIAN)/mtalist)" \ |
274 | -Vdist:Provides:exim4-daemon-light="$(PROVIDE_DEFAULT_MTA)" | |
275 | ||
276 | override_dh_installlogrotate: | |
277 | dh_installlogrotate | |
278 | dh_installlogrotate --name=exim4-paniclog | |
279 | ||
280 | override_dh_installinit: | |
281 | dh_installinit --noscripts --name=exim4 | |
282 | ||
283 | override_dh_install: | |
284 | # install config.h from daemon package, but not from exim4-daemon-light | |
285 | dh_install -p exim4-dev \ | |
286 | $(shell ls -1 b-exim4-daemon-*/build-$(buildname)/config.h | grep -v ^b-exim4-daemon-light/) \ | |
287 | usr/include/exim4 | |
288 | dh_install | |
289 | ||
290 | override_dh_link: | |
291 | rm -rf debian/exim4/usr/share/doc/exim4 | |
292 | dh_link | |
293 | ||
01e60269 AM |
294 | %: |
295 | dh $@ --no-parallel | |
de45f55a | 296 | |
01e60269 | 297 | .PHONY: pack-configs unpack-configs update-mtaconflicts |