I'm trying to build GNOME 2.91.2 using JHBuild on Ubuntu 10.10.  Many
modules built successfully, and then the gvfs module failed to build with
this error:

make[4]: Entering directory `/home/adam/gnome/src/gvfs-1.6.5/daemon'
  CCLD   gvfsd-gphoto2
/home/adam/gnome/install/lib64/libgio-2.0.so: undefined reference to
`g_source_get_time'

I investigated a bit.  The failing linker command line includes these shared
libraries (among many others):

/home/adam/gnome/install/lib64/libgio-2.0.so
/usr/lib/libgudev-1.0.so
/usr/lib/libudev.so
/usr/lib/libglib-2.0.so

The undefined reference is occurring because g_source_get_time is a new
symbol available only in the newly built libglib-2.0.so, but we're linking
with /usr/lib/libglib-2.0.so, which is an older glib that comes from the
distro itself.  This happens because gvfs depends on gudev, and gudev is
found only in /usr/lib; jhbuild hasn't built it.

gudev itself is part of the udev source tarball.
gnome-external-deps-2.91.2.modules pulls in udev-111, which is a fairly
ancient udev from 2007 (see
http://www.kernel.org/pub/linux/utils/kernel/hotplug/).  That was before
gudev was included in udev.  So jhbuild is building this old udev, which
doesn't include gudev, so the gvfs build pulls in gudev from my distro,
which causes the distro's libglib to be linked, which causes the linker
error.

Questions:

- Why does the external dependencies list reference such an old udev, which
doesn't include gudev?
- I'm going to try to work around this by editing the external dependencies
to reference a newer udev.  Is this the right approach, or is there some
better workaround?
- Presumably 2.91.2 was released only after the release team had
successfully build on some distro.  Why did this gvfs/gudev problem not
occur in that case?

adam
_______________________________________________
gnome-love mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-love

Reply via email to