GNOME Bugzilla – Bug 623698
riff build error: requires GstInterfaces 1.1, has 1.0
Last modified: 2010-08-14 18:20:14 UTC
Building gnome 3.0 from scratch with jhbuild. The gst-plugins-base module fails with the following errors: --- Making all in riff make[4]: Entering directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/riff' CC libgstriff_0.10_la-riff.lo CC libgstriff_0.10_la-riff-media.lo CC libgstriff_0.10_la-riff-read.lo CCLD libgstriff-0.10.la GEN GstRiff-0.10.gir /opt/gnome2/share/gir-1.0/GstInterfaces-0.10.gir: Incompatible version 1.0 (supported: 1.1) make[4]: *** [GstRiff-0.10.gir] Error 1 make[4]: Leaving directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/riff' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base' make: *** [all] Error 2 --- $ jhbuild info gst-plugins-base Name: gst-plugins-base Module Set: gnome-suites-3.0 Type: autogen Install date: not installed Git-Module: git://anongit.freedesktop.org/gstreamer/gst-plugins-base Tree-ID: 115e503bdf03b7da241965c41be8dc401aec6b52 Requires: gstreamer, gtk+, liboil Required-by: totem, gnome-media, gst-python, gst-plugins-bad, gst-plugins-good, meta-gnome-desktop-suite, gst-plugins-farsight, pitivi, gstreamermm, telepathy-stream-engine, meta-gnome-mobile-suite, gnonlin, gst-openmax, cheese, gnome-applets, gst-rtsp-server, gst-ffmpeg, sound-juicer, gst-fluendo-mp3, rhythmbox, libnice, gst-fluendo-mpegdemux, banshee, gst-plugins-ugly, gst-plugins-gl, clutter-gst, brasero, libdmapsharing, monkey-bubble ---
Uhm, I have no idea why it's looking at the installed /opt/gnome2/share/gir-1.0/GstInterfaces-0.10.gir file. It should be using the GstInterfaces-0.10.gir from within the build tree. I don't really know how to debug this. Maybe best to ask some introspection people. Does this make any difference? In gst-libs/gst/riff/Makefile.am: libgstriff_@GST_MAJORMINOR@_la_LIBADD = \ $(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_MAJORMINOR@.la \ + $(top_builddir)/gst-libs/gst/tag/libgstinterfaces-@GST_MAJORMINOR@.la \ $(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_MAJORMINOR@.la \ $(GST_BASE_LIBS) $(GST_LIBS) ?
> + $(top_builddir)/gst-libs/gst/tag/libgstinterfaces-@GST_MAJORMINOR@.la \ Sorry that should have been: + $(top_builddir)/gst-libs/gst/interfaces/libgstinterfaces-@GST_MAJORMINOR@.la \
Same result: make[4]: Entering directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/riff' cd ../../.. && /bin/sh /mnt/common/opt/gnome2/usr/src/gst-plugins-base/missing --run automake-1.11 --gnu gst-libs/gst/riff/Makefile cd ../../.. && /bin/sh ./config.status gst-libs/gst/riff/Makefile depfiles config.status: creating gst-libs/gst/riff/Makefile config.status: executing depfiles commands make[4]: Leaving directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/riff' make[4]: Entering directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/riff' GEN GstRiff-0.10.gir /opt/gnome2/share/gir-1.0/GstInterfaces-0.10.gir: Incompatible version 1.0 (supported: 1.1)
Your comment about it looking at the installed files rather than the build tree got me to thinking. On a whim I tried "rm /opt/gnome2/share/gir/*" and running it again. Now it fails when building GstInterfaces-0.10.gir: --- GEN GstInterfaces-0.10.gir Couldn't find include 'Gst-0.10.gir' (search path: ['/opt/gnome2/share/gir-1.0', '/opt/gnome2/share/gir-1.0', '/opt/gnome2/share/gir-1.0', '/usr/share/gir-1.0', '/opt/gnome2/share/gir-1.0']) make[5]: *** [GstInterfaces-0.10.gir] Error 1 make[5]: Leaving directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/interfaces' --- I suspect that the search path is missing the build tree directories for some reason.
> Your comment about it looking at the installed files rather than the build tree > got me to thinking. On a whim I tried "rm /opt/gnome2/share/gir/*" and running > it again. Now it fails when building GstInterfaces-0.10.gir: > --- > GEN GstInterfaces-0.10.gir > Couldn't find include 'Gst-0.10.gir' (search path: > ['/opt/gnome2/share/gir-1.0', '/opt/gnome2/share/gir-1.0', > '/opt/gnome2/share/gir-1.0', '/usr/share/gir-1.0', > '/opt/gnome2/share/gir-1.0']) > make[5]: *** [GstInterfaces-0.10.gir] Error 1 > make[5]: Leaving directory > `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/interfaces' > --- > I suspect that the search path is missing the build tree directories for some > reason. Well, that's not entirely surprising, since it expects to find Gst-0.10.gir (from GStreamer core) in the installed location (check with pkg-config --variable=girdir gstreamer-0.10)
I have another idea: how about changing this in gst-libs/gst/riff/Makefile.am (might need similar changes in other gst-libs/gst/*/Makefile.am): GstRiff-@GST_MAJORMINOR@.gir: $(INTROSPECTION_SCANNER) libgstriff-@GST_MAJORMINOR@.la - $(AM_V_GEN)PKG_CONFIG_PATH="$(PKG_CONFIG_PATH):$(top_builddir)/pkgconfig" \ + $(AM_V_GEN)PKG_CONFIG_PATH="$(top_builddir)/pkgconfig:$(PKG_CONFIG_PATH)" \ ?
Well that's odd.. I started another build last night and ran into a link problem: --- GEN GstRiff-0.10.gir ./.libs/libgstriff-0.10.so: undefined reference to `gst_tag_freeform_string_to_utf8' collect2: ld returned 1 exit status Traceback (most recent call last):
+ Trace 222727
sys.exit(scanner_main(sys.argv))
glibtransformer.get_get_type_functions())
return dc.run()
self._link(bin_path, o_path)
subprocess.check_call(args)
raise CalledProcessError(retcode, cmd)
make[4]: *** [GstRiff-0.10.gir] Error 1 make[4]: Leaving directory `/mnt/common/opt/gnome2/usr/src/gst-plugins-base/gst-libs/gst/riff' --- Figuring (read: 'guessing') that this might have been related to the earlier attempt to clear this up, I started clean: rm -rf /mnt/common/opt/gnome2/usr/src/gst-plugins-base jhbuild buildone gst-plugins-base *** success *** I don't see anything in the log for gst-plugins-base that looks like it may have fixed this indirectly but, well, it's fine now. (shrug) Thanks anyway..
Hrm, ok, mysterious. Well, if there's still an issue, I'm sure someone else will run into it soon enough. Thanks!
This may or may not fix this issue (hard to test, everyone just deletes the installed .gir file instead of figuring out a fix): commit b61b83376abc624b6c1f8156c8c91186e7897506 Author: Tim-Philipp Müller <tim.muller@collabora.co.uk> Date: Sat Aug 14 18:36:55 2010 +0100 introspection: set PKG_CONFIG_PATH so that our in-tree libs come first when calling scanner When calling gobject-introspection scanner, make sure our own freshly-built libs within the source tree (well, build dir) come first in the PKG_CONFIG_PATH. May or may not help to make sure that it doesn't pick up older external plugins-base libs (or .gir files) from outside the source tree / build directory as dependencies of the introspected lib instead of using the stuff we just built in a sibling directory. https://bugzilla.gnome.org/show_bug.cgi?id=623698