[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: