Date: Wed, 30 Jun 2010 22:12:06 -0700 (PDT) From: Don Lewis <truckman@FreeBSD.org> To: mezz7@cox.net Cc: gnome@FreeBSD.org Subject: Re: ports/148101: x11/startup-notification Makefile missing library dependencies [patch] Message-ID: <201007010512.o615C6b6058761@gw.catspoiler.org>
next in thread | raw e-mail | index | archive | help
On 24 Jun, To: mezz7@cox.net wrote: > On 24 Jun, Jeremy Messenger wrote: >> On Thu, 24 Jun 2010 17:14:57 -0500, Don Lewis <truckman@freebsd.org> wrote: > > >> The startup-notification does not depend on libSM, libICE and etc. It's >> just grab from one of silly *.la or *.pc files. > > libSM and libICE are getting added to the linker command line by > configure, which for some reason thinks that those are needed presumably > because libXau is getting linked in, but I don't know why it thinks > that. libxcb pulls libXau in, but I don't know how configure knows > about that. In any case configure adds -lSM and -lICE, but it doesn't > add -lXau. I figured out why this problem isn't caught by pointyhat. It turns out that configure looks for libICE and if it finds that, then it assumes that libSM is also installed and adds both libraries to the linker command line. Since pointyhat only installs the libraries that are listed as dependencies and neither of these libraries is a listed dependency, the configure test for the presence of libICE fail and the build doesn't try to link to either of these libraries. When I was rebuilding all of my ports from scratch because I was upgrading from 7-STABLE to 8-STABLE, libICE must have gotten installed before startup-notification, which caused configure to want to link both libSM and libICE. This failed because libSM was not yet installed. I wonder how many other ports have this bug ... Here's a patch: --- configure.orig 2009-04-13 03:58:13.000000000 -0700 +++ configure 2010-06-30 21:56:25.000000000 -0700 @@ -12792,87 +12792,6 @@ fi fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS=$LDFLAGS - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # John Interrante, Karl Berry - { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 -$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } -if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lICE $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char IceConnectionNumber (); -int -main () -{ -return IceConnectionNumber (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_ICE_IceConnectionNumber=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_ICE_IceConnectionNumber=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } -if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -fi - - LDFLAGS=$ac_save_LDFLAGS - fi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007010512.o615C6b6058761>