Re: [gnome-love] error in gvfs module building GNOME 2.91.2 on Ubuntu 10.10



I found an easy workaround: I modified my copy of gnome-suites-2.91.2.modules to pass --disable-gudev when configuring the gvfs module.  Not sure quite what I'm giving up by disabling gudev in GVFS, but at least I was able to keep building.

I also had to add gsettings-desktop-schemas as a dependency of gnome-desktop-3 in the same modules file.  With those changes, my build is now chugging along again.  Maybe in a few hours I'll have successfully built 2.91.2.  :)

adam

On Sun, Nov 14, 2010 at 10:00 AM, Adam Dingle <adam yorba org> wrote:
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




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]