After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 538794 - evolution does not build due to dependency not mentioned in moduleset
evolution does not build due to dependency not mentioned in moduleset
Status: RESOLVED DUPLICATE of bug 344358
Product: jhbuild
Classification: Infrastructure
Component: module sets
unspecified
Other Linux
: Normal normal
: ---
Assigned To: Jhbuild maintainers
Jhbuild QA
Depends on:
Blocks:
 
 
Reported: 2008-06-17 16:37 UTC by Tobias Mueller
Modified: 2008-06-17 22:29 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tobias Mueller 2008-06-17 16:37:14 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.
Comment 1 Baptiste Mille-Mathias 2008-06-17 16:40:29 UTC
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'
Comment 2 Frederic Peters 2008-06-17 16:47:05 UTC
Well; the problem is linking against system libraries.

*** This bug has been marked as a duplicate of 344358 ***
Comment 3 Tobias Mueller 2008-06-17 21:50:32 UTC
(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.
Comment 4 Frederic Peters 2008-06-17 22:14:08 UTC
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)
Comment 5 Tobias Mueller 2008-06-17 22:29:46 UTC
Ah, I get the point. I think you are right. Thanks for clarifying.