Package: zabbix
Severity: normal
Tags: patch

Dear maintainer,

zabbix fail to build with ld --as-needed, trying to add LDAP and POSTGRESQL 
LIBS during compilation in the wrong place.

Snippet from build fail about LDAP:
i686-linux-gnu-gcc  -Wall -g -O2    -I/usr/include/postgresql     
-I/usr/local/include -I/usr/lib/perl/5.14/CORE -I. -I/usr/include  
-I/usr/include -I/usr/include -I/usr/include   -rdynamic 
-Wl,-Bsymbolic-functions -Wl,-z,relro  -o zabbix_agent -L/usr/lib -lldap -llber 
 zabbix_agent.o stats.o cpustat.o diskdevices.o perfstat.o vmstats.o zbxconf.o 
../../src/libs/zbxsysinfo/libzbxagentsysinfo.a 
../../src/libs/zbxsysinfo/linux/libspecsysinfo.a 
../../src/libs/zbxsysinfo/common/libcommonsysinfo.a 
../../src/libs/zbxsysinfo/simple/libsimplesysinfo.a 
../../src/libs/zbxlog/libzbxlog.a ../../src/libs/zbxalgo/libzbxalgo.a 
../../src/libs/zbxsys/libzbxsys.a ../../src/libs/zbxnix/libzbxnix.a 
../../src/libs/zbxcomms/libzbxcomms.a ../../src/libs/zbxconf/libzbxconf.a 
../../src/libs/zbxcommon/libzbxcommon.a ../../src/libs/zbxcrypto/libzbxcrypto.a 
../../src/libs/zbxjson/libzbxjson.a ../../src/libs/zbxexec/libzbxexec.a  -lm  
-lresolv 
../../src/libs/zbxsysinfo/simple/libsimplesysinfo.a(simple.o): In function 
`check_ldap':
/tmp/buildd/zabbix-1.8.9/debian/tmp-build-PGSQL/src/libs/zbxsysinfo/simple/simple.c:57:
 undefined reference to `ldap_init'
/tmp/buildd/zabbix-1.8.9/debian/tmp-build-PGSQL/src/libs/zbxsysinfo/simple/simple.c:63:
 undefined reference to `ldap_search_s'
...

Snippet from build fail about POSTGRESQL:
x86_64-linux-gnu-gcc  -Wall -g -O2    -I/usr/include/postgresql     
-I/usr/local/include -I/usr/lib/perl/5.14/CORE -I. -I/usr/include  
-I/usr/include -I/usr/include -I/usr/include   -rdynamic 
-Wl,-Bsymbolic-functions -Wl,-z,relro  -o zabbix_server -L/usr/lib -lpq  
-liksemel    -L/usr/lib/x86_64-linux-gnu -lcurl  -L/usr/lib -lnetsnmp  
-L/usr/lib -lnetsnmp -L/usr/lib -L/usr/lib -L/usr/lib zabbix_server-actions.o 
zabbix_server-operations.o zabbix_server-events.o zabbix_server-zlog.o 
zabbix_server-server.o alerter/libzbxalerter.a dbsyncer/libzbxdbsyncer.a 
dbconfig/libzbxdbconfig.a discoverer/libzbxdiscoverer.a pinger/libzbxpinger.a 
poller/libzbxpoller.a housekeeper/libzbxhousekeeper.a timer/libzbxtimer.a 
trapper/libzbxtrapper.a nodewatcher/libzbxnodewatcher.a utils/libzbxutils.a 
httppoller/libzbxhttppoller.a watchdog/libzbxwatchdog.a 
escalator/libzbxescalator.a proxypoller/libzbxproxypoller.a 
selfmon/libzbxselfmon.a ../../src/libs/zbxsysinfo/libzbxserversysinfo.a 
../../src/libs/z
 bxsysinfo/linux/libspecsysinfo.a 
../../src/libs/zbxsysinfo/common/libcommonsysinfo.a 
../../src/libs/zbxsysinfo/simple/libsimplesysinfo.a 
../../src/libs/zbxlog/libzbxlog.a ../../src/libs/zbxdbcache/libzbxdbcache.a 
../../src/libs/zbxmemory/libzbxmemory.a ../../src/libs/zbxalgo/libzbxalgo.a 
../../src/libs/zbxnix/libzbxnix.a ../../src/libs/zbxsys/libzbxsys.a 
../../src/libs/zbxconf/libzbxconf.a ../../src/libs/zbxmedia/libzbxmedia.a 
../../src/libs/zbxcommon/libzbxcommon.a ../../src/libs/zbxcrypto/libzbxcrypto.a 
../../src/libs/zbxcomms/libzbxcomms.a 
../../src/libs/zbxcommshigh/libzbxcommshigh.a 
../../src/libs/zbxjson/libzbxjson.a ../../src/libs/zbxexec/libzbxexec.a 
../../src/libs/zbxself/libzbxself.a ../../src/libs/zbxserver/libzbxserver.a 
../../src/libs/zbxicmpping/libzbxicmpping.a 
../../src/libs/zbxdbhigh/libzbxdbhigh.a ../../src/libs/zbxdb/libzbxdb.a       
-liksemel -lcurl  -lnetsnmp  -lssh2 -lOpenIPMI -lOpenIPMIposix -lm  -lresolv 
../../src/libs/zbxdb/libzbxdb.a(db.o): In function `zbx_db_close':
/tmp/buildd/zabbix-1.8.9/debian/tmp-build-PGSQL/src/libs/zbxdb/db.c:443: 
undefined reference to `PQfinish'
../../src/libs/zbxdb/libzbxdb.a(db.o): In function `zbx_db_vexecute':
/tmp/buildd/zabbix-1.8.9/debian/tmp-build-PGSQL/src/libs/zbxdb/db.c:815: 
undefined reference to `PQexec'


The attached patch fixes both problems, it moves '-ldap' into LDAP_LIBS 
(exporting it and using in configure.in) and '-lpq' into POSTGRESQL_LIBS 
(already exported and defined into configure.in).

Can you kindly consider to apply this patch?

Thanks,

Leo.


-- System Information:
Debian Release: wheezy/sid
  APT prefers oneiric-updates
  APT policy: (500, 'oneiric-updates'), (500, 'oneiric'), (100, 
'oneiric-backports')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-030200rc7-generic (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Description: Move LDAP and POSTGRESQL libs to the right place to
 fix FTBFS with ld --as-needed
Author: Leo Iannacone <l...@ubuntu.com>
Forwarded: https://support.zabbix.com/browse/ZBX-4535

---
 configure.in            |    1 +
 m4/ax_lib_postgresql.m4 |    4 +++-
 m4/ldap.m4              |    4 +++-
 3 files changed, 7 insertions(+), 2 deletions(-)

--- zabbix-1.8.9.orig/m4/ldap.m4
+++ zabbix-1.8.9/m4/ldap.m4
@@ -72,7 +72,8 @@ AC_HELP_STRING([--with-ldap@<:@=DIR@:>@]
                fi
 
                LDAP_CPPFLAGS=-I$LDAP_INCDIR
-               LDAP_LDFLAGS="-L$LDAP_LIBDIR -lldap -llber $LDAP_LIBS"
+               LDAP_LDFLAGS="-L$LDAP_LIBDIR"
+               LDAP_LIBS="-lldap -llber $LDAP_LIBS"
 
                found_ldap="yes"
                AC_DEFINE(HAVE_LDAP,1,[Define to 1 if LDAP should be enabled.])
@@ -92,6 +93,7 @@ AC_HELP_STRING([--with-ldap@<:@=DIR@:>@]
 
   AC_SUBST(LDAP_CPPFLAGS)
   AC_SUBST(LDAP_LDFLAGS)
+  AC_SUBST(LDAP_LIBS)
 
   unset _libldap_with
 ])dnl
--- zabbix-1.8.9.orig/configure.in
+++ zabbix-1.8.9/configure.in
@@ -1283,6 +1283,7 @@ CFLAGS="${CFLAGS} ${LDAP_CPPFLAGS}"
 SERVER_LDFLAGS="${SERVER_LDFLAGS} ${LDAP_LDFLAGS}"
 PROXY_LDFLAGS="${PROXY_LDFLAGS} ${LDAP_LDFLAGS}"
 AGENT_LDFLAGS="${AGENT_LDFLAGS} ${LDAP_LDFLAGS}"
+AGENT_LIBS="${AGENT_LIBS} ${LDAP_LIBS}"
 
 found_iconv="no"
 dnl Check for libiconv [by default - skip]
--- zabbix-1.8.9.orig/m4/ax_lib_postgresql.m4
+++ zabbix-1.8.9/m4/ax_lib_postgresql.m4
@@ -84,7 +84,8 @@ AC_DEFUN([AX_LIB_POSTGRESQL],
             AC_MSG_CHECKING([for PostgreSQL libraries])
 
             POSTGRESQL_CPPFLAGS="-I`$PG_CONFIG --includedir`"
-            POSTGRESQL_LDFLAGS="-L`$PG_CONFIG --libdir` -lpq"
+            POSTGRESQL_LDFLAGS="-L`$PG_CONFIG --libdir`"
+            POSTGRESQL_LIBS="-lpq"
 
             POSTGRESQL_VERSION=`$PG_CONFIG --version | sed -e 's#PostgreSQL 
##'`
 
@@ -179,4 +180,5 @@ PQserverVersion(conn);
     AC_SUBST([POSTGRESQL_VERSION])
     AC_SUBST([POSTGRESQL_CPPFLAGS])
     AC_SUBST([POSTGRESQL_LDFLAGS])
+    AC_SUBST([POSTGRESQL_LIBS])
 ])

Reply via email to