Re: List of FTBFS in Ubuntu
On 2010-12-03 16:36:10 -0800, Russ Allbery wrote:
> Stefano Rivera <stefano@rivera.za.net> writes:
> > gcc argument order:
> > g++ -o conftest -pthread -g -O2 -Wall -O2 -DNDEBUG -pthread -g -O2 -g -Wall -O2 -O2 -DNDEBUG -L/usr/lib -llog4cpp -lnsl -Wl,-Bsymbolic-functions conftest.cpp -lz >&5
>
> > This will work:
> > g++ -o conftest -pthread -g -O2 -Wall -O2 -DNDEBUG -pthread -g -O2 -g -Wall -O2 -O2 -DNDEBUG conftest.cpp -L/usr/lib -llog4cpp -lnsl -Wl,-Bsymbolic-functions -lz
>
> > Looks like autoconf's fault.
>
> Hm, yeah, the code in the package is just:
>
> AC_TRY_LINK(
> [#include <log4cpp/Category.hh>
> #include <log4cpp/CategoryStream.hh>],
> [log4cpp::Category::getInstance("foo").errorStream() << log4cpp::eol],
> [AC_DEFINE(SHIBSP_LOG4CPP,1,[Define if log4cpp library is used.])],
> [AC_MSG_ERROR([unable to link with log4cpp, need version 1.0 or later])])
>
> so I don't see anything obvious that I can do to fix this in the package.
> Autoconf doesn't seem to like the way that Ubuntu is adding the additional
> linker flag.
The problem lies 3 lines above that snippet:
LDFLAGS="`${LOG4CPP_CONFIG} --libs` $LDFLAGS"
using LIBS instead of LDFLAGS fixes the order as configure uses LIBS
after the source file during linking.
When one looks at the remaining configure.ac it adds other libs (-l) to
LIBS and library directories (-L) to LDFLAGS.
But as "log4cpp-config --libs" outputs "-L/usr/lib -llog4cpp -lnsl" I'm
not sure if LDFLAGS or LIBS is the better place (but using LIBS makes
the package build again in Ubuntu).
Michael
Here is a patch for opensaml2 but a similar patch should also work for
shibboleth-sp2 and xmltooling:
--- opensaml2-2.3.orig/configure
+++ opensaml2-2.3/configure
@@ -22997,7 +22997,7 @@
fi;
if test -f "${LOG4SHIB_CONFIG}"; then
- LDFLAGS="`${LOG4SHIB_CONFIG} --libs` $LDFLAGS"
+ LIBS="`${LOG4SHIB_CONFIG} --libs` $LIBS"
CPPFLAGS="`${LOG4SHIB_CONFIG} --cflags` $CPPFLAGS"
if test "${ac_cv_header_log4shib_CategoryStream_hh+set}" = set; then
@@ -23259,7 +23259,7 @@
if test -f "${LOG4CPP_CONFIG}"; then
{ echo "$as_me:$LINENO: WARNING: will try to use log4cpp, note that most non-Internet2 supplied versions are not thread-safe" >&5
echo "$as_me: WARNING: will try to use log4cpp, note that most non-Internet2 supplied versions are not thread-safe" >&2;}
- LDFLAGS="`${LOG4CPP_CONFIG} --libs` $LDFLAGS"
+ LIBS="`${LOG4CPP_CONFIG} --libs` $LIBS"
CPPFLAGS="`${LOG4CPP_CONFIG} --cflags` $CPPFLAGS"
if test "${ac_cv_header_log4cpp_CategoryStream_hh+set}" = set; then
echo "$as_me:$LINENO: checking for log4cpp/CategoryStream.hh" >&5
--- opensaml2-2.3.orig/configure.ac
+++ opensaml2-2.3/configure.ac
@@ -132,7 +132,7 @@
fi
])
if test -f "${LOG4SHIB_CONFIG}"; then
- LDFLAGS="`${LOG4SHIB_CONFIG} --libs` $LDFLAGS"
+ LIBS="`${LOG4SHIB_CONFIG} --libs` $LIBS"
CPPFLAGS="`${LOG4SHIB_CONFIG} --cflags` $CPPFLAGS"
AC_CHECK_HEADER([log4shib/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4shib header files]))
AC_TRY_LINK(
@@ -157,7 +157,7 @@
])
if test -f "${LOG4CPP_CONFIG}"; then
AC_MSG_WARN([will try to use log4cpp, note that most non-Internet2 supplied versions are not thread-safe])
- LDFLAGS="`${LOG4CPP_CONFIG} --libs` $LDFLAGS"
+ LIBS="`${LOG4CPP_CONFIG} --libs` $LIBS"
CPPFLAGS="`${LOG4CPP_CONFIG} --cflags` $CPPFLAGS"
AC_CHECK_HEADER([log4cpp/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4cpp header files]))
AC_TRY_LINK(
Reply to: