Package: postfix Version: 2.8.4-1 Severity: serious Tags: patch Justification: fails to build from source (but built successfully in the past) User: debian-d...@lists.debian.org Usertags: multiarch
[Note: This is a separate bug from #637565, which appears to be fixed in 2.8.4.] Dear Maintainer, Version 2.8.4 fails to build on machines using Linux 3.x with the following error message: gcc -Wmissing-prototypes -Wformat -DDEBIAN -DMAX_DYNAMIC_MAPS -DHAS_PCRE -DHAS_LDAP -DMYORIGIN_FROM_FILE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAS_CDB -DHAS_MYSQL -I/usr/include/mysql -DHAS_PGSQL -I/usr/include/postgresql -DHAS_SSL -I/usr/include/openssl -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_CYRUS_SASL -DUSE_TLS -O2 -I. -I../../include -DLINUX3 -o master master.o master_conf.o master_ent.o master_sig.o master_avail.o master_spawn.o master_service.o master_status.o master_listen.o master_vars.o master_wakeup.o master_watch.o master_flow.o ../../lib/libglobal.a ../../lib/libutil.a -lssl -lcrypto -lsasl2 -L/home/kevin/tmp/postfix-2.8.4/debian -ldb ../../lib/libutil.a: undefined reference to `yp_get_default_domain' ../../lib/libutil.a: undefined reference to `yp_match' collect2: ld returned 1 exit status The problem occurs because libnsl is not included in SYSLIBS because it is not found in /usr/lib64 /lib64 /usr/lib or /lib on machines using the latest libc6-dev packages, where it is in an arch-specific directory (e.g ./usr/lib/i386-linux-gnu/libnsl.a). Although it appears that the fix for this was applied to the Linux.2 system type, it was not applied (or was somehow unapplied) to Linux.3. The attached patch uses the same SEARCHDIRS logic for Linux.3 as Linux.2. Cheers, Kevin P.S. It doesn't look like anyone is committing to git://git.debian.org/~lamont/postfix.git anymore. Perhaps the Vcs-* tags in debian/control should be updated to git://anonscm.debian.org/users/lamont/postfix.git? -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (990, 'testing'), (500, 'unstable'), (101, 'experimental') Architecture: i386 (i686) Kernel: Linux 3.0.4-kevinoid1 (SMP w/2 CPU cores; PREEMPT) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages postfix depends on: ii adduser 3.113 ii debconf [debconf-2.0] 1.5.40 ii dpkg 1.16.0.3 ii libc6 2.13-18 ii libdb5.1 5.1.25-11 ii libsasl2-2 2.1.24~rc1.dfsg1+cvs2011-05-23-4 ii libssl1.0.0 1.0.0e-2 ii lsb-base 3.2-28 ii netbase 4.46 ii ssl-cert 1.0.28 Versions of packages postfix recommends: ii python 2.6.7-3 Versions of packages postfix suggests: pn bsd-mailx [mail-reader] 8.1.2-0.20100314cvs-1 pn dovecot-common <none> pn evolution [mail-reader] 3.0.3-1+b1 pn icedove [mail-reader] 3.1.13-1 pn libsasl2-modules 2.1.24~rc1.dfsg1+cvs2011-05-23-4 pn mutt [mail-reader] 1.5.21-5 pn opera [mail-reader] 11.50.1074 pn postfix-cdb <none> pn postfix-ldap <none> pn postfix-mysql <none> pn postfix-pcre <none> pn postfix-pgsql <none> pn procmail 3.22-19 pn resolvconf 1.59 pn sasl2-bin <none> pn ufw <none> -- debconf information excluded
>From 2b4cfb2a411442a24d1cc0e3ab5171751d8fea5e Mon Sep 17 00:00:00 2001 From: Kevin Locke <ke...@kevinlocke.name> Date: Thu, 22 Sep 2011 14:26:19 -0600 Subject: [PATCH] Make use of SEARCHDIRS on Linux.3 as on Linux.2 The same directories that would be searched on a 2.x kernel should be searched on a 3.x kernel. The current search paths do not not include the multiarch directories and cause it to FTBFS on Linux.3. Signed-off-by: Kevin Locke <ke...@kevinlocke.name> --- makedefs | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/makedefs b/makedefs index 2648f10..24082a4 100644 --- a/makedefs +++ b/makedefs @@ -363,9 +363,16 @@ EOF exit 1 fi SYSLIBS="-ldb" + SEARCHDIRS=$(${CC-gcc} -print-search-dirs 2>/dev/null \ + | grep libraries | cut -f2- -d= \ + | sed -e's/\:/\n/g' | xargs -n1 readlink -f \ + | grep -v 'gcc\|/[0-9.]\+$' | uniq) + if [ -z "$SEARCHDIRS" ]; then + SEARCHDIRS="/usr/lib64 /lib64 /usr/lib /lib" + fi for name in nsl resolv do - for lib in /usr/lib64 /lib64 /usr/lib /lib + for lib in $SEARCHDIRS do test -e $lib/lib$name.a -o -e $lib/lib$name.so && { SYSLIBS="$SYSLIBS -l$name" -- 1.7.5.4