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 574844 - gstreamermm build broken in example
gstreamermm build broken in example
Status: RESOLVED FIXED
Product: gstreamermm
Classification: Bindings
Component: general
git master
Other Linux
: Normal normal
: ---
Assigned To: gtkmm-forge
gtkmm-forge
Depends on:
Blocks:
 
 
Reported: 2009-03-10 21:30 UTC by Murray Cumming
Modified: 2011-01-16 23:37 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch to stop build if plug-in does not exist in maintainer mode (5.20 KB, patch)
2009-03-12 19:41 UTC, José Alburquerque
committed Details | Review

Description Murray Cumming 2009-03-10 21:30:16 UTC
When trying to build gstreamermm from svn, with jhbuild, I see this error:

main.cc: In function ‘int main(int, char**)’:
main.cc:72: error: ‘OggDemux’ is not a member of ‘Gst’
main.cc:72: error: ‘OggDemux’ is not a member of ‘Gst’
main.cc:72: error: template argument 1 is invalid
main.cc:72: error: invalid type in declaration before ‘=’ token
main.cc:72: error: ‘Gst::OggDemux’ has not been declared
main.cc:80: error: ‘Gst::VorbisDec’ has not been declared
main.cc:107: error: no matching function for call to ‘Gst::Bin::add(int&)’
../../gstreamer/gstreamermm/bin.h:225: note: candidates are: Glib::RefPtr<Gst::Bin> Gst::Bin::add(const Glib::RefPtr<Gst::Element>&)
main.cc:119: error: no matching function for call to ‘Gst::FileSrc::link(int&)’
../../gstreamer/gstreamermm/element.h:280: note: candidates are: Glib::RefPtr<Gst::Element> Gst::Element::link(const Glib::RefPtr<Gst::Element>&)
main.cc:124: error: base operand of ‘->’ is not a pointer
make[3]: *** [main.o] Error 1
make[3]: Leaving directory `/home/murrayc/checkouts/gnome224/gnomemm/gstreamermm/trunk/examples/ogg_player_gtkmm'
Comment 1 Murray Cumming 2009-03-10 21:36:01 UTC
When I installed it anyway, I alo saw these linker errors when trying to build David King's vidrot application:

/opt/gnome224/lib/libgstreamerbasemm-0.10.so: undefined reference to `Gst::Clock::get_resolution_vfunc()'
/opt/gnome224/lib/libgstreamerbasemm-0.10.so: undefined reference to `Gst::Clock::get_internal_time_vfunc()'
Comment 2 Murray Cumming 2009-03-10 21:37:03 UTC
Sorry. Ignore that last comment. That problem is gone now.
Comment 3 José Alburquerque 2009-03-10 22:07:27 UTC
I think this may be because the oggdemux plug-in is not available on the build machine (to confirm run 'gst-inspect oggdemux').  The example uses it (Gst::OggDemux) and if the plug-in is not available on the build system it is not included in the build.
Comment 4 José Alburquerque 2009-03-10 22:46:46 UTC
It more looks like none of the plug-ins are available because Gst::FileSrc is a core plug-in (in the main gstreamer module).  The others (Gst::OggDemux and Gst::VorbisDec) are found in the gst-base-plugins module.
Comment 5 Murray Cumming 2009-03-11 15:06:46 UTC
What makes you think that FileSrc is not available?
Comment 6 Murray Cumming 2009-03-11 15:11:41 UTC
gst-inspect oggdemux indeed shows that it is not in my gstreamer. Do you know what I need to install before rebuilding gstreamer to have this element?

However, the build should not proceed if some of the source code could not be generated, at least when building from svn (maintainer mode).
Comment 7 José Alburquerque 2009-03-11 15:57:52 UTC
> What makes you think that FileSrc is not available?
> 

I'm wrong about that.  The part of the error that says:

main.cc:119: error: no matching function for call to
‘Gst::FileSrc::link(int&)’

is not related to Gst::FileSrc, but instead to Gst::OggDemux (the parser) so the error, it seems, is with the gst-plugins-base (above gst-base-plugins is incorrect) installation.

> gst-inspect oggdemux indeed shows that it is not in my gstreamer. Do you know
> what I need to install before rebuilding gstreamer to have this element?

On this system, making sure that the gst-plugins-base module is compiled and installed worked for me.  There are some plug-ins that gstreamermm includes (the Gio* plug-ins) that require that an '--enable-experimental' option be passed to gst-plugins-base when configuring.  That's the only additional option that I pass to gst-plugins-base.

> However, the build should not proceed if some of the source code could not be
> generated, at least when building from svn (maintainer mode).

Okay.  I'll look into this.


Comment 8 José Alburquerque 2009-03-12 19:41:27 UTC
Created attachment 130548 [details] [review]
Patch to stop build if plug-in does not exist in maintainer mode

This patch stops the build if a plug-in does not exist in maintainer mode.  Would this fix things for you?
Comment 9 Murray Cumming 2009-03-13 07:04:35 UTC
Yes, that seems good. Let's try that. Thanks.

By the way, the correct spelling is "existence".
Comment 10 José Alburquerque 2009-03-13 15:39:51 UTC
Committed with spelling fix (I should have turned spelling on in vim as I tend to do when I prepare the ChangeLog).  Thanks.
Comment 11 José Alburquerque 2009-03-13 18:39:58 UTC
Also, my Spanish should have helped me because it is written (and pronounced as written) 'existencia'.  If I had taken the time to repeat the word in Spanish I might have known that the second 'e' is also used in English and not an 'a'. :-)