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]) ])