GNOME Bugzilla – Bug 538794
evolution does not build due to dependency not mentioned in moduleset
Last modified: 2008-06-17 22:29:46 UTC
I tried to build evolution but I failed because it tried to link against libmono which in turn linked again glib. Since mono hasn't been built with jhbuild, it tried to link against my systems libmono (instead of an own, new and shiny lib in /opt/gnome2) which itself links against my systems glib. That system glib doesn't have new functions thus breaking the build process with following error: gcc -g3 -O0 -pedantic -Wall -Wmissing-prototypes -Wno-sign-compare -Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -Wl,--as-needed -o .libs/test-calendar test-calendar.o -pthread ./.libs/libemiscwidgets.so -L/opt/gnome2/lib -L/usr/lib/nspr -L/usr/lib/pkgconfig/../../lib -L/usr/lib/nss /home/muelli/svn/gnome2/evolution/widgets/text/.libs/libetext.so /home/muelli/svn/gnome2/evolution/widgets/table/.libs/libetable.so /home/muelli/svn/gnome2/evolution/a11y/widgets/.libs/libevolution-widgets-a11y.so /home/muelli/svn/gnome2/evolution/a11y/.libs/libevolution-a11y.so /home/muelli/svn/gnome2/evolution/e-util/.libs/libeutil.so /opt/gnome2/lib/libcamel-provider-1.2.so /opt/gnome2/lib/libgtkhtml-editor.so /opt/gnome2/lib/libgtkhtml-3.14.so /opt/gnome2/lib/libenchant.so ../../e-util/.libs/libeutil.so /usr/lib/libmono.so /usr/lib/libgthread-2.0.so /usr/lib/libglib-2.0.so /opt/gnome2/lib/libgnomeui-2.so /opt/gnome2/lib/libgnome-keyring.so /opt/gnome2/lib/libbonoboui-2.so /usr/lib/libSM.so /usr/lib/libICE.so /opt/gnome2/lib/libgnomecanvas-2.so /opt/gnome2/lib/libgailutil.so /opt/gnome2/lib/libart_lgpl_2.so /opt/gnome2/lib/libedataserverui-1.2.so /opt/gnome2/lib/libglade-2.0.so /opt/gnome2/lib/libebook-1.2.so /opt/gnome2/lib/libcamel-1.2.so -lssl3 -lsmime3 -lnss3 /opt/gnome2/lib/libgtk-x11-2.0.so /opt/gnome2/lib/libgdk-x11-2.0.so /opt/gnome2/lib/libatk-1.0.so /opt/gnome2/lib/libgdk_pixbuf-2.0.so /opt/gnome2/lib/libpangocairo-1.0.so /opt/gnome2/lib/libpangoft2-1.0.so /opt/gnome2/lib/libpango-1.0.so /opt/gnome2/lib/libcairo.so /opt/gnome2/lib/libfontconfig.so /usr/lib/libfreetype.so /usr/lib/libexpat.so /usr/lib/libpng12.so /usr/lib/libXrender.so /usr/lib/libX11.so /usr/lib/libXau.so /usr/lib/libXdmcp.so /opt/gnome2/lib/libpixman-1.so /opt/gnome2/lib/libgnome-2.so /opt/gnome2/lib/libgnomevfs-2.so -lssl -lcrypto /opt/gnome2/lib/libavahi-glib.so /opt/gnome2/lib/libavahi-client.so /opt/gnome2/lib/libavahi-common.so -lresolv -lutil /opt/gnome2/lib/libesd.so /usr/lib/libasound.so /opt/gnome2/lib/libaudiofile.so /usr/lib/libpopt.so /opt/gnome2/lib/libedataserver-1.2.so -lplds4 -lplc4 -lnspr4 /opt/gnome2/lib/libgconf-2.so /opt/gnome2/lib/libdbus-glib-1.so /opt/gnome2/lib/libdbus-1.so /opt/gnome2/lib/libsoup-2.4.so /opt/gnome2/lib/libxml2.so -lm /opt/gnome2/lib/libgnutls.so /opt/gnome2/lib/libtasn1.so -lz /opt/gnome2/lib/libgcrypt.so -lnsl /opt/gnome2/lib/libgpg-error.so /opt/gnome2/lib/libbonobo-2.so /opt/gnome2/lib/libgio-2.0.so /opt/gnome2/lib/libbonobo-activation.so /opt/gnome2/lib/libORBitCosNaming-2.so /opt/gnome2/lib/libORBit-2.so /opt/gnome2/lib/libgmodule-2.0.so -ldl /opt/gnome2/lib/libgthread-2.0.so -lpthread -lrt /opt/gnome2/lib/libgobject-2.0.so /opt/gnome2/lib/libglib-2.0.so -Wl,--rpath -Wl,/opt/gnome2/lib/evolution/2.24 -Wl,--rpath -Wl,/opt/gnome2/lib /opt/gnome2/lib/libgio-2.0.so: undefined reference to `g_set_error_literal' /opt/gnome2/lib/libgnomeui-2.so: undefined reference to `g_dgettext' collect2: ld returned 1 exit status make[3]: *** [test-calendar] Error 1 make[3]: Leaving directory `/home/muelli/svn/gnome2/evolution/widgets/misc' After compiling jhbuilding mono myself, it works. So mono has to be built by jhbuild in order to compile evolution, thus it has to be modelled in the moduleset.
it seems the problem is not mono but glib > /opt/gnome2/lib/libgio-2.0.so: undefined reference to `g_set_error_literal' > /opt/gnome2/lib/libgnomeui-2.so: undefined reference to `g_dgettext'
Well; the problem is linking against system libraries. *** This bug has been marked as a duplicate of 344358 ***
(In reply to comment #1) > it seems the problem is not mono but glib > > /opt/gnome2/lib/libgio-2.0.so: undefined reference to `g_set_error_literal' > > /opt/gnome2/lib/libgnomeui-2.so: undefined reference to `g_dgettext' > Yes and no. This glib which you queted has been pulled by libmono, which has been pulled from my system, because there is no libmono in the jhbuild sandbox. /usr/lib/libmono.so /usr/lib/libgthread-2.0.so /usr/lib/libglib-2.0.so are the three first system libraries, with libmono being the first. Thus libmono is the culprit. Abstracting this to a dup like "Linking to system libraries causes build failures" is way too much. Just like "Software doesn't work as expected". The issue is that there is no mono in the sandbox, thus the systems library is pulled. The issue resolves when building mono in the sandbox.
It is exactly the same as the other bug report; I don't believe it is stretching reality to mark those as duplicates: (quoting from comment #4) > if the module has a conditional dependency on something that would normally be > built by jhbuild after the current module, but that dependency is installed > with the dev files then configure detects its presence and attempts to use it > to link. This is the situation we are in; Evolution has an optional dependency on Mono; Mono and its development files are installed in the distribution, Evolution configure script detects them and the module gets built against the wrong glib. Note I also updated moduleset to tell jhbuild about this conditional dependency; so if mono is built it will be built before evolution. 2008-06-18 Frederic Peters <fpeters@0d.be> * modulesets/gnome-suites-2.24.modules: tells evolution to be built *after* mono, as it has an optional dependency on it. (#538794)
Ah, I get the point. I think you are right. Thanks for clarifying.