diff options
Diffstat (limited to '')
-rwxr-xr-x | debian/rules | 312 |
1 files changed, 312 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..3c4ae95 --- /dev/null +++ b/debian/rules @@ -0,0 +1,312 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Debianrules for building a Debian package +# Version 1.5 +# +# These rules have been specifically designed NOT to require root to +# run them. At any time root privileges are required, the command to be +# executed will be made obvious and root's password will be prompted for. +# Of course, root may still run this and no password will be required. +# +# Robert Leslie <rob@mars.org> +# modified for Postfix by LaMont Jones <lamont@debian.org> + +PACKAGE=postfix +DISTRO:=$(shell (lsb_release -is 2>/dev/null || echo Debian) | sed s:Debian:Debian/GNU:) + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/buildflags.mk + +package=postfix +base=debian/$(package) +docpkg=${package}-doc +exampledir=${base}-doc/usr/share/doc/${package}-doc +docdir=${base}-doc/usr/share/doc/$(package) +chlogdir=${base}/usr/share/doc/$(package) +sharedir=${base}/usr/share/postfix +libdir=${base}/usr/lib/postfix +plibdir=usr/lib/postfix +sbindir=usr/sbin +bindir=${base}/usr/bin +confdir=${base}/etc/postfix + +#ifeq ($(DEB_BUILD_ARCH),sparc) +# OFLAGS = -O1 +#else +# OFLAGS = -O1 +#endif + +OFLAGS += -O2 +SHELL=/bin/bash + +DEBUG += -g +ifneq (,$(findstring nodebug,$(DEB_BUILD_OPTIONS))) +DEBUG = '' +endif + +ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) +STRIP=y +endif + +CCARGS += -DDEBIAN -DHAS_PCRE -DHAS_LDAP -DUSE_LDAP_SASL \ + -DHAS_SQLITE -DMYORIGIN_FROM_FILE \ + $(shell getconf LFS_CFLAGS) \ + -DHAS_CDB \ + -DHAS_LMDB \ + -DHAS_MYSQL -I/usr/include/mysql \ + -DHAS_PGSQL -I`pg_config --includedir` \ + -DHAS_SQLITE -I/usr/include \ + -DHAS_SSL -I/usr/include/openssl \ + -DUSE_SASL_AUTH -I/usr/include/sasl \ + -DUSE_CYRUS_SASL \ + -DUSE_TLS + +AUXLIBS += -lssl -lcrypto -lsasl2 -lpthread + +DOCFILES=README_FILES/*_README README_FILES/OVERVIEW COMPATIBILITY PORTING +TLSDOCFILES=${TLSSRC}/TLS_TODO ${TLSSRC}/TLS_ACKNOWLEDGEMENTS + +.PHONY: install install-doc binary binary-arch binary-indep clean +.PHONY: checkroot build-arch build-indep + +build: build-arch build-indep +build-arch: + $(checkdir) + ${MAKE} makefiles CCARGS="${CCARGS}" DEBUG="${DEBUG}" \ + AUXLIBS="${AUXLIBS} -L$$(pwd)/debian" OPT="$(OFLAGS)" \ + AUXLIBS_CDB="-lcdb -L../../lib -L. -lpostfix-util" \ + AUXLIBS_LDAP="-lldap -llber -L../../lib -L. -lpostfix-util -lpostfix-global" \ + AUXLIBS_LMDB="-llmdb -L../../lib -L. -lpostfix-util" \ + AUXLIBS_MYSQL="-lmysqlclient -L../../lib -L. -lpostfix-util -lpostfix-global" \ + AUXLIBS_PCRE="-lpcre -L../../lib -L. -lpostfix-util" \ + AUXLIBS_PGSQL="-lpq -L../../lib -L. -lpostfix-util -lpostfix-global" \ + AUXLIBS_SQLITE="-lsqlite3 -L../../lib -L. -lpostfix-util -lpostfix-global -lpthread" \ + shared=yes pie=yes dynamicmaps=yes \ + daemon_directory=${CUR_DIR}/usr/lib/postfix/sbin \ + shlibs_directory=${CUR_DIR}/usr/lib/postfix manpage_directory=/usr/share/man \ + sample_directory=/usr/share/doc/postfix/examples readme_directory=/usr/share/doc/postfix \ + html_directory=/usr/share/doc/postfix/html + ${MAKE} LD_LIBRARY_PATH=$$(pwd)/lib:$${LD_LIBRARY_PATH} + ${MAKE} manpages + sed "s:@@DISTRO@@:$(DISTRO):g" < debian/main.cf.in > conf/main.cf.debian + sed "s:@@DISTRO@@:$(DISTRO):g" < conf/main.cf > conf/main.cf.dist + touch build + +build-indep: + $(checkdir) + ${MAKE} makefiles CCARGS="${CCARGS}" DEBUG="${DEBUG}" \ + AUXLIBS="${AUXLIBS} -L$$(pwd)/debian" OPT="$(OFLAGS)" \ + AUXLIBS_CDB="-lcdb -L../../lib -L. -lpostfix-util" \ + AUXLIBS_LDAP="-lldap -llber -L../../lib -L. -lpostfix-util -lpostfix-global" \ + AUXLIBS_LMDB="-llmdb -L../../lib -L. -lpostfix-util" \ + AUXLIBS_MYSQL="-lmysqlclient -L../../lib -L. -lpostfix-util -lpostfix-global" \ + AUXLIBS_PCRE="-lpcre -L../../lib -L. -lpostfix-util" \ + AUXLIBS_PGSQL="-lpq -L../../lib -L. -lpostfix-util -lpostfix-global" \ + AUXLIBS_SQLITE="-lsqlite3 -L../../lib -L. -lpostfix-util -lpostfix-global -lpthread" \ + shared=yes pie=yes dynamicmaps=yes \ + daemon_directory=${CUR_DIR}/usr/lib/postfix/sbin \ + shlibs_directory=${CUR_DIR}/usr/lib/postfix manpage_directory=/usr/share/man \ + sample_directory=/usr/share/doc/postfix/examples readme_directory=/usr/share/doc/postfix \ + html_directory=/usr/share/doc/postfix/html + ${MAKE} LD_LIBRARY_PATH=$$(pwd)/lib:$${LD_LIBRARY_PATH} + ${MAKE} manpages + sed "s:@@DISTRO@@:$(DISTRO):g" < debian/main.cf.in > conf/main.cf.debian + sed "s:@@DISTRO@@:$(DISTRO):g" < conf/main.cf > conf/main.cf.dist + touch build + +install-indep: build-indep + dh_prep + dh_installdirs -i + install -m 0444 html/* $(docdir)/html; rm $(docdir)/html/Makefile.in + dh_installexamples -p ${docpkg} examples/{qmail-local,smtpd-policy} + dh_installexamples -p ${docpkg} -Xmain.cf -Xmaster.cf -Xfiles conf/[a-z]* + dh_installexamples -p ${docpkg} conf/main.cf.default debian/mailqfmt.pl + mv ${exampledir}/examples ${docdir} + install -m 0444 RELEASE_NOTES $(docdir)/RELEASE_NOTES + install -m 0444 AAAREADME $(docdir)/README + for file in */README; do \ + install -m 0444 $${file} $(docdir)/README.$${file%/README}; \ + done + if [ ! -f meta/doc.files ] ; then \ + cd meta && for i in sample readme html ; do \ + grep $${i} postfix-files >> doc.files ; \ + done \ + fi + rm -f $(docdir)/README.mantools + for file in ${DOCFILES}; do \ + install -m 0444 $${file} $(docdir)/$${file##*/}; \ + done + rm -f $(docdir)/ULTRIX_README $(docdir)/MACOSX_README + cd meta && for h in ULTRIX MACOSX mantools ; do \ + grep -v $${h} doc.files > doc.files.$$ ; \ + mv doc.files.$$ doc.files ; \ + done + mkdir -m 755 -p $(base)-doc/etc/postfix/postfix-files.d + install -m 644 meta/doc.files ${base}-doc/etc/postfix/postfix-files.d + +install-arch: build-arch + dh_prep + dh_installdirs -a + install lib/lib* $(libdir) + install debian/postfix_groups.pl $(libdir) + install -m 0644 meta/postfix-files $(confdir) + cd $(confdir) && for i in sample readme html LICENSE ; do \ + grep -v $${i} postfix-files > postfix-files.$$ ; \ + mv postfix-files.$$ postfix-files ; \ + done + for j in cdb ldap lmdb mysql pcre pgsql sqlite ; do \ + mkdir -m 755 -p $(base)-$${j}/etc/postfix/postfix-files.d ; \ + grep $${j} $(confdir)/postfix-files >> $(base)-$${j}/etc/postfix/postfix-files.d/$${j}.files ; \ + grep -v $${j} $(confdir)/postfix-files > $(confdir)/postfix-files.$$ ; \ + mv $(confdir)/postfix-files.$$ $(confdir)/postfix-files ; \ + install lib/postfix-$${j}.so ${base}-$${j}/${plibdir} ; \ + ln -s postfix-$${j}.so ${base}-$${j}/${plibdir}/postfix-$${j}.so.1.0.1 ; \ + done + install libexec/[a-z]* ${base}/${plibdir}/sbin + install bin/[a-z]* ${base}/${sbindir} + # See conf/postfix-files + ln ${libdir}/sbin/smtp ${libdir}/sbin//lmtp + ln ${libdir}/sbin/qmgr ${libdir}/sbin/nqmgr + install debian/postfix-add-filter ${base}/${sbindir} + install debian/postfix-add-policy ${base}/${sbindir} + install auxiliary/qshape/qshape.pl ${base}/${sbindir}/qshape + install -m 0444 HISTORY $(chlogdir)/changelog + ln -s ../sbin/rmail $(bindir)/rmail + ln -s ../sbin/sendmail $(bindir)/newaliases + ln -s ../sbin/sendmail $(bindir)/mailq + ln -s ../sbin/sendmail ${base}/usr/lib/sendmail + install -m 0755 conf/postfix-script conf/post-install $(confdir) + install -m 0644 conf/makedefs.out $(sharedir) + install -m 0644 debian/functions $(sharedir)/postinst.functions + install -m 0644 conf/master.cf $(sharedir)/master.cf.dist + install -m 0644 conf/main.cf.dist $(sharedir)/main.cf.dist + install -m 0644 conf/main.cf.debian $(sharedir)/main.cf.debian + install -m 0644 conf/main.cf.tls $(sharedir)/main.cf.tls + install -m 0644 meta/dynamicmaps.cf $(sharedir)/dynamicmaps.cf + install -m644 debian/postfix.ufw.profile debian/postfix/etc/ufw/applications.d/postfix + install -m644 debian/rsyslog.conf debian/postfix/etc/rsyslog.d/postfix.conf + install -m644 debian/postfix.insserv.conf debian/postfix/etc/insserv.conf.d/postfix + + install man/man1/*.1 ${base}/usr/share/man/man1 + install man/man5/*.5 ${base}/usr/share/man/man5 + for j in ldap lmdb mysql pcre pgsql sqlite ; do \ + mkdir -m 755 -p $(base)-$${j}/usr/share/man/man5 ; \ + mv ${base}/usr/share/man/man5/$${j}_table.5 ${base}-$${j}/usr/share/man/man5 ; \ + done + + for f in man/man8/*.8; do \ + sed '/^\.TH/s/ 8 / 8postfix /' $${f}>${base}/usr/share/$${f}postfix; \ + chmod 644 ${base}/usr/share/$${f}postfix; \ + chown root:root ${base}/usr/share/$${f}postfix; \ + done + install rmail/rmail.8 debian/*.8 ${base}/usr/share/man/man8 + gzip -9n ${base}/usr/share/man/man8/*.8postfix + ln -sf bounce.8postfix.gz ${base}/usr/share/man/man8/trace.8postfix.gz + ln -sf bounce.8postfix.gz ${base}/usr/share/man/man8/defer.8postfix.gz + + install debian/configure-instance.sh $(libdir) + install debian/postfix-instance-generator ${base}/lib/systemd/system-generators/ + install -m 644 debian/postfix@.service ${base}/lib/systemd/system/ + install debian/ip-up.d ${base}/etc/ppp/ip-up.d/postfix + install debian/ip-down.d ${base}/etc/ppp/ip-down.d/postfix + install debian/ip-up.d ${base}/etc/network/if-up.d/postfix + install debian/ip-down.d ${base}/etc/network/if-down.d/postfix + install debian/update-libc.d ${base}/etc/resolvconf/update-libc.d/postfix + install debian/postfix-cdb.lintian-override ${base}-cdb/usr/share/lintian/overrides/${package}-cdb + install debian/postfix-ldap.lintian-override ${base}-ldap/usr/share/lintian/overrides/${package}-ldap + install debian/postfix-lmdb.lintian-override ${base}-lmdb/usr/share/lintian/overrides/${package}-lmdb + install debian/postfix.lintian-override ${base}/usr/share/lintian/overrides/${package} + install debian/postfix-mysql.lintian-override ${base}-mysql/usr/share/lintian/overrides/${package}-mysql + install debian/postfix-pcre.lintian-override ${base}-pcre/usr/share/lintian/overrides/${package}-pcre + install debian/postfix-pgsql.lintian-override ${base}-pgsql/usr/share/lintian/overrides/${package}-pgsql + + if dpkg-vendor --is ubuntu; then \ + install -m 644 -D debian/postfix.apport ${base}/usr/share/apport/package-hooks/postfix.py; \ + fi + +debian/vars: + cp debian/vars.in $@ + # This assumes non-native, and at least one hyphen in the version number. + echo Upstream=$$(sed 's/^.*(\(.*\)-[^-]*).*/\1/; q' debian/changelog) >> $@ + +binary-indep: checkroot install-indep debian/vars + dh_installdocs -i +## dh_installexamples -i +## dh_installmenu -i +## dh_installcron -i + dh_installchangelogs -i + dh_installdebconf -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + for i in $$(sed -n '/^Package:/s/^.* //p' debian/control); do cat debian/vars >> debian/$$i.substvars; done + cat debian/vars.in >> debian/substvars + dh_gencontrol -i +## dh_makeshlibs -i + dh_md5sums -i + dh_builddeb -i + +binary-arch: checkroot install-arch debian/vars + + dh_installdocs -a +## dh_installexamples -a +## dh_installmenu -a +## dh_installcron -a + dh_installchangelogs -a + dh_installdebconf -a + dh_systemd_enable -a + dh_installinit -a + dh_systemd_start -a +## dh_movefiles -a + [ -n "$(STRIP)" ] || dh_strip -a + dh_compress -a + dh_fixperms -a + dh_makeshlibs -a + dh_installdeb -a + LD_LIBRARY_PATH=$$(pwd)/lib:$${LD_LIBRARY_PATH} dh_shlibdeps -a + for i in $$(sed -n '/^Package:/s/^.* //p' debian/control); do cat debian/vars >> debian/$$i.substvars; done + cat debian/vars.in >> debian/substvars + if [ $(DISTRO) = Ubuntu ]; then echo postfix:Provides=default-mta >> debian/postfix.substvars; fi + dh_gencontrol -a +## dh_makeshlibs -a + dh_md5sums -a + dh_builddeb -a + +clean-preunpatch: + $(checkdir) + dh_clean build + test ! -d ${base} || rm -rf ${base} + $(MAKE) tidy + +clean: clean-preunpatch + rm -rf debian/{files*,vars,*substvars,*.debhelper} + find .. -maxdepth 1 -name $(package)*.asc -size 0 -exec rm {} ";" + rm -f debian/stamp-* conf/main.cf.debian conf/main.cf.dist meta/doc.files + +buildinfo: + @echo; dpkg -l gcc "libc6*" binutils ldso make dpkg-dev $(BUILDINFO) \ + | awk '$$1 == "ii" { printf("%s-%s\n", $$2, $$3) }' \ + | tee $(docdir)/buildinfo.Debian; echo + chmod 644 $(docdir)/buildinfo.Debian + +define checkdir + test -f debian/rules +endef + +# Below here is fairly generic really + +binary: binary-arch binary-indep + +newtemplate: + debconf-updatepo + +msgstats: + @cd debian/po && for i in *.po; do x=$$(msgfmt --statistics $$i 2>&1); echo $$i $$x; done; rm -f messages.mo *.po~ + +msg-email: + @podebconf-report-po + +checkroot: + $(checkdir) + test "`id -u`" -eq 0 |