Skip site navigation (1)Skip section navigation (2)
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>