Subject: pkg/30083: [PATCH] devel/libglade2 fails to link against all necessary libraries
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <idart@performancedesign.no>
List: pkgsrc-bugs
Date: 04/28/2005 17:20:01
>Number:         30083
>Category:       pkg
>Synopsis:       [PATCH] devel/libglade2 fails to link against all necessary libraries
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Apr 28 17:20:01 +0000 2005
>Originator:     Idar Tollefsen
>Release:        N/A
>Organization:
Performance Design
>Environment:
Darwin fulcrum.local 7.9.0 Darwin Kernel Version 7.9.0: Wed Mar 30 20:11:17 PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC  Power Macintosh powerpc
>Description:
When trying to build devel/libglade2 I get the following:


Configuration - output:

checking for GTK+ - version >= 2.5.0... no
*** Could not run GTK+ test program, checking why...
*** The test program compiled, but did not run. This usually means
*** that the run-time linker is not finding GTK+ or finding the wrong
*** version of GTK+. If it is not finding GTK+, you'll need to set your
*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point
*** to the installed location  Also, make sure you have run ldconfig if that
*** is required on your system
***
*** If you have an old version installed, it is best to remove it, although
*** you may also be able to get things to work by modifying LD_LIBRARY_PATH


Configuration - config.log (PS: ${PREFIX} == "/usr/local"):

configure:9034: checking for GTK+ - version >= 2.5.0
configure:9149: gcc -pipe -o conftest -O2 -I/usr/local/include -I/usr/include -I/usr/local/include/freetype2 -DXTHREADS -I/usr/local/include/gtk-2.0 -I/usr/local/lib/gtk-2.0/include -I/usr/local/include -I/usr/X11R6/include -I/usr/local/include/atk-1.0 -I/usr/local/include/pango-1.0 -I/usr/local/include/freetype2 -I/usr/local/include/glib/glib-2.0 -I/usr/local/lib/glib-2.0/include -O2 -no-cpp-precomp -I/usr/local/include -I/usr/include -I/usr/local/include/freetype2 -L/usr/local/lib -L/usr/lib -L/usr/X11R6/lib conftest.c -L/usr/local/lib -lgtk-x11-2.0 -lintl >&5
ld: /var/tmp//ccnu3lrQ.o illegal reference to symbol: _g_strdup defined in indirectly referenced dynamic library /usr/local/lib/libglib-2.0.0.dylib


Build - output:

gcc -pipe -dynamiclib  -o .libs/libglade-2.0.0.0.7.dylib  .libs/glade-init.o .libs/glade-xml.o .libs/glade-parser.o .libs/glade-gtk.o  -L/usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib -L/usr/local/pkgsrc/devel/libglade2/work/.x11-buildlink/lib /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libxml2.dylib /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libz.dylib -lm /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libatk-1.0.dylib /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libgobject-2.0.dylib /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libgmodule-2.0.dylib /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libgtk-x11-2.0.dylib /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libglib-2.0.dylib /usr/lib/libiconv.dylib /usr/local/pkgsrc/devel/libglade2/work/.buildlink/lib/libintl.dylib /usr/lib/libc.dylib -install_name  /usr/local/lib/libglade-2.0.0.dylib -Wl,-compatibility_version -Wl,1 -Wl,-current_version -Wl,1.7
ld: .libs/glade-init.o illegal reference to symbol: _pango_split_file_list defined in indirectly referenced dynamic library /usr/local/lib/libpango-1.0.0.dylib
ld: .libs/glade-xml.o illegal reference to symbol: _gdk_color_get_type defined in indirectly referenced dynamic library /usr/local/lib/libgdk-x11-2.0.0.dylib
ld: .libs/glade-xml.o illegal reference to symbol: _gdk_pixbuf_get_type defined in indirectly referenced dynamic library /usr/local/lib/libgdk_pixbuf-2.0.0.dylib
/usr/bin/libtool: internal link edit command failed

>How-To-Repeat:
Try to configure and build devel/libglade2.
It's possible that this problem is Darwin/OS X specific.
If it is, try to configure and build devel/libglade2 on Darwin/OS X.

>Fix:
Add linking against gdk, gdk-pixbuf and pango.
Add explicit dependencies for the above.

The linking part is handled by patching the configure script.
devel/libglade2/patches/patch-aa already modifies the configure script.
To avoid patching the configure script twice, I chose to add to
patch-aa. The patch-aa listed below is therefore a combination of the
original patch-aa and the new link stuff. Just let me know if you would
rather prefer a patch to the patch, or a completely separate patch.

The patch against devel/libglade2/Makefile installs the necessary
dependencies.

Note that there is a discrepancy between the versions required by the
Makefile and the version required in configure. That's because
configure already depended on 2.5 and the Makefile already listed 2.6.
I saw no sense in confusing the issue by starting to list 2.6 versions
in configure.


Patch against devel/libglade2/Makefile:
---------------------------------------

--- libglade2.orig/Makefile	Thu Apr 28 18:39:25 2005
+++ libglade2/Makefile	Thu Apr 28 18:38:16 2005
@@ -27,8 +27,11 @@
 		${PREFIX}/share/xml/libglade/glade-2.0.dtd
 
 BUILDLINK_DEPENDS.atk+=		atk>=1.9.0
-BUILDLINK_DEPENDS.glib2+=	glib2>=2.6.0
-BUILDLINK_DEPENDS.gtk2+=	gtk2+>=2.6.0
+BUILDLINK_DEPENDS.gtk2+=	gtk2+>=2.5.0
+BUILDLINK_DEPENDS.gdk+=		gdk>=2.5.0
+BUILDLINK_DEPENDS.gdk-pixbuf+=	gdk-pixbuf>=2.5.0
+BUILDLINK_DEPENDS.glib2+=	glib2>=2.5.0
+BUILDLINK_DEPENDS.pango+=	pango>=1.8.0
 
 post-install:
 	${INSTALL_DATA_DIR} ${PREFIX}/lib/libglade/2.0


New devel/libglade2/patches/patch-aa:
---------------------------------------

--- configure.orig	Fri Feb 11 14:11:23 2005
+++ configure	Thu Apr 28 18:30:29 2005
@@ -8968,7 +8968,7 @@
   enable_gtktest=yes
 fi;
 
-  pkg_config_args=gtk+-2.0
+  pkg_config_args="gtk+-2.0 gdk-2.0 gdk-pixbuf-2.0 glib-2.0 pango"
   for module in .
   do
       case "$module" in
@@ -9459,23 +9459,23 @@
   else
      PKG_CONFIG_MIN_VERSION=0.9.0
      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
-        echo "$as_me:$LINENO: checking for   libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   glib-2.0 >= 2.5.0" >&5
-echo $ECHO_N "checking for   libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   glib-2.0 >= 2.5.0... $ECHO_C" >&6
+        echo "$as_me:$LINENO: checking for   libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   gdk-2.0 >= 2.5.0  gdk-pixbuf-2.0 >= 2.5.0  glib-2.0 >= 2.5.0  pango >= 1.8.0" >&5
+echo $ECHO_N "checking for   libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   gdk-2.0 >= 2.5.0  gdk-pixbuf-2.0 >= 2.5.0  glib-2.0 >= 2.5.0  pango >= 1.8.0... $ECHO_C" >&6
 
-        if $PKG_CONFIG --exists "  libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   glib-2.0 >= 2.5.0" ; then
+        if $PKG_CONFIG --exists "  libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   gdk-2.0 >= 2.5.0  gdk-pixbuf-2.0 >= 2.5.0  glib-2.0 >= 2.5.0  pango >= 1.8.0" ; then
             echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
             succeeded=yes
 
             echo "$as_me:$LINENO: checking LIBGLADE_CFLAGS" >&5
 echo $ECHO_N "checking LIBGLADE_CFLAGS... $ECHO_C" >&6
-            LIBGLADE_CFLAGS=`$PKG_CONFIG --cflags "  libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   glib-2.0 >= 2.5.0"`
+            LIBGLADE_CFLAGS=`$PKG_CONFIG --cflags "  libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   gdk-2.0 >= 2.5.0  gdk-pixbuf-2.0 >= 2.5.0  glib-2.0 >= 2.5.0  pango >= 1.8.0"`
             echo "$as_me:$LINENO: result: $LIBGLADE_CFLAGS" >&5
 echo "${ECHO_T}$LIBGLADE_CFLAGS" >&6
 
             echo "$as_me:$LINENO: checking LIBGLADE_LIBS" >&5
 echo $ECHO_N "checking LIBGLADE_LIBS... $ECHO_C" >&6
-            LIBGLADE_LIBS=`$PKG_CONFIG --libs "  libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   glib-2.0 >= 2.5.0"`
+            LIBGLADE_LIBS=`$PKG_CONFIG --libs "  libxml-2.0 >= 2.4.10   atk >= 1.9.0   gtk+-2.0 >= 2.5.0   gdk-2.0 >= 2.5.0  gdk-pixbuf-2.0 >= 2.5.0  glib-2.0 >= 2.5.0  pango >= 1.8.0"`
             echo "$as_me:$LINENO: result: $LIBGLADE_LIBS" >&5
 echo "${ECHO_T}$LIBGLADE_LIBS" >&6
         else
@@ -11266,6 +11266,7 @@
 
 
 
+if false; then
         if test -n "$PYTHON"; then
       # If the user set $PYTHON, use it and don't search something else.
       echo "$as_me:$LINENO: checking whether $PYTHON version >= 2.0" >&5
@@ -11468,6 +11469,8 @@
     have_python=false
   fi
 fi
+fi
+have_python=false
 
 
 if $have_python; then