[regression] circular dependency with libffi
Submitted by David Ronis
Link to original bug (#733029)
Description
I'm trying to build 2.41.1 as part of a full gnome build. It turns out that glib requires libffi and libffi requires glib. I'm trying to build both, but whichever gets built first ends up linking the system version (slackware 14.1) of the other libary. This sooner or later results in unresolved externals in other parts of the build.
e.g., building glib first (using the system libffi) gives:
/usr/lib64/libffi.la' seems to be moved libtool: relink: warning:
/usr/lib64/libffi.la' seems to be moved
libtool: relink: warning: `/usr/lib64/libffi.la' seems to be moved
libtool: install: /usr/bin/ginstall -c .libs/libgiofam.soT /opt/garnome-3.13.3/lib/gio/modules/libgiofam.so
libtool: install: /usr/bin/ginstall -c .libs/libgiofam.lai /opt/garnome-3.13.3/lib/gio/modules/libgiofam.la
libtool: finish: PATH="/opt/garnome-3.13.3/bin:/opt/garnome-3.13.3/sbin:/opt/garnome-3.13.3/bin:/opt/garnome-3.13.3/sbin:/home/ronis/bin:/usr/local/samba/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:.:/sbin" ldconfig -n /opt/garnome-3.13.3/lib/gio/modules
libtool: install: (cd /home/ronis/Project/notar/GNOME/garnome/platform/glib/work/main.d/glib-2.41.1/gio/fam; /bin/sh /home/ronis/Project/notar/GNOME/garnome/platform/glib/work/main.d/glib-2.41.1/libtool --silent --tag CC --mode=relink /usr/bin/gcc -DG_LOG_DOMAIN="GLib-GIO" -I../.. -I../../glib -I../../glib -I../.. -I../../gmodule -DG_ENABLE_DEBUG -DGIO_MODULE_DIR="/opt/garnome-3.13.3/lib/gio/modules" -DGIO_COMPILATION -I/opt/garnome-3.13.3/include -L/opt/garnome-3.13.3/lib -O2 -g -pipe -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex "^g_io_module_(load|unload|query)" -Wl,-O1 -L/opt/garnome-3.13.3/lib -o libgiofam.la -rpath /opt/garnome-3.13.3/lib/gio/modules libgiofam_la-fam-helper.lo libgiofam_la-fam-module.lo libgiofam_la-gfamdirectorymonitor.lo libgiofam_la-gfamfilemonitor.lo ../../gio/libgio-2.0.la ../../gobject/libgobject-2.0.la ../../glib/libglib-2.0.la -lfam )
libtool: relink: warning: Libraries have been installed in: /opt/garnome-3.13.3/lib/gio/modules
If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.
make install-data-hook
make[9]: Entering directory `/home/ronis/Project/notar/GNOME/garnome/platform/glib/work/main.d/glib-2.41.1/gio/fam'
if true && test -z "" ; then
../../gio/gio-querymodules /opt/garnome-3.13.3/lib/gio/modules ;
fi
/home/ronis/Project/notar/GNOME/garnome/platform/glib/work/main.d/glib-2.41.1/gio/.libs/lt-gio-querymodules: symbol lookup error: /home/ronis/Project/notar/GNOME/garnome/platform/glib/work/main.d/glib-2.41.1/gobject/.libs/libgobject-2.0.so.0: undefined symbol: g_variant_dict_ref
make[9]: *** [install-data-hook] Error 127
Version: 2.41.x