GNOME Bugzilla – Bug 783628
Can't build against gstreamer 1.12
Last modified: 2017-07-03 12:01:40 UTC
Created attachment 353521 [details] gstreamermm build log gst 1.12 At least that's what it looks like. See attachment.
That's correct. In GStreamer 1.12 I've fixed gstaudioclock interface so it uses GstAudioClock as a "this" object, instead of GstClock (see https://bugzilla.gnome.org/show_bug.cgi?id=756628) I've updated gstreamermm so HEAD builds with latest GStreamer. Fix will be also available for gstreamermm 1.12.0, so you can either wait till then, or use gstreamermm git master. Thanks for your report!
Hi, I applied the patch from git master to build 1.8.0 on Debian unstable. It builds fine on many architectures but fails on sparc64 and x32 with: audioclock.cc: In member function 'Gst::ClockTime Gst::AudioClock::adjust(Gst::ClockTime)': audioclock.cc:201:81: error: cannot convert 'GstAudioClock* {aka _GstAudioClock*}' to 'GstClock* {aka _GstClock*}' for argument '1' to 'GstClockTime gst_audio_clock_adjust(GstClock*, GstClockTime)' return ((Gst::ClockTime)(gst_audio_clock_adjust(gobj(), ((GstClockTime)(time))))); ^ audioclock.cc: In member function 'Gst::ClockTime Gst::AudioClock::get_time() const': audioclock.cc:206:87: error: cannot convert 'GstAudioClock* {aka _GstAudioClock*}' to 'GstClock* {aka _GstClock*}' for argument '1' to 'GstClockTime gst_audio_clock_get_time(GstClock*)' return ((Gst::ClockTime)(gst_audio_clock_get_time(const_cast<GstAudioClock*>(gobj())))); ^ audioclock.cc: In member function 'void Gst::AudioClock::invalidate()': audioclock.cc:211:36: error: cannot convert 'GstAudioClock* {aka _GstAudioClock*}' to 'GstClock* {aka _GstClock*}' for argument '1' to 'void gst_audio_clock_invalidate(GstClock*)' gst_audio_clock_invalidate(gobj()); The complete build logs are here: https://buildd.debian.org/status/fetch.php?pkg=gstreamermm-1.0&arch=sparc64&ver=1.8.0%2Bdfsg-2&stamp=1498907310&raw=0 https://buildd.debian.org/status/fetch.php?pkg=gstreamermm-1.0&arch=x32&ver=1.8.0%2Bdfsg-2&stamp=1498907309&raw=0 I'm a little confused as it looks like if the patch wasn't applied - but I'm sure it was - do you have a fix?
Created attachment 354765 [details] [review] build gstreamermm 1.8.0 against gstreamer 1.12.0 Try applying the attached patch against the plain 1.8.0 tarball. (of course it will still fail with gcc7, cf. https://bugzilla.gnome.org/show_bug.cgi?id=783678)
Hi @rinni, It seems like you try to compile HEAD version of gstreamermm with gstreamer 1.8. Unfortunately, you can't do this because of GStreamer's backward incompatibility. So you should use: * gstreamermm HEAD for building with gstreamer 1.12 or higher, * gstreamermm 1.8 for building with gstreamer 1.8 or lower. You can also work-around the problem by applying Luigi's patch. @Luigi, if you don't mind, I'd apply the patch to git master.
Hi @Marcin, no, I try to build gstreamermm 1.8 (the tarball) + patch to build with gstreamer 1.10[0] + patch to build with gstreamer 1.12[1] with gstreamer 1.12. This works for a lot of architectures - i386, amd64, armhf, arm64, mips, powerpc, ... - but not for x32 and sparc64. The patch by Luigi seems to be a replacement for patch [1]. I couldn't test if it works on x32 or sparc64, it definitely works on amd64. [0] https://git.gnome.org/browse/gstreamermm/commit/?id=3a4698e1c6e2b2c6c703f07687cc485ada734d60 [1] https://bug783678.bugzilla-attachments.gnome.org/attachment.cgi?id=353598
@Marcin, actually I extrapolated that patch from the files you privately sent me. But I think the first statement is erroneous, gstreamermm HEAD can't be built with gstreamer 1.12.
Hi @rinni, As I said, for GStreamer < 1.12 you should be using gstreamermm-1.8 However, based on your logs [0] you actually uses gstreamermm HEAD to build with GStreamer 1.10.4, which is incorrect. I see in the logs: > audioclock.cc: In member function 'Gst::ClockTime Gst::AudioClock::adjust(Gst::ClockTime)': audioclock.cc:201:81: error: cannot convert 'GstAudioClock* {aka _GstAudioClock*}' to 'GstClock* {aka _GstClock*}' for argument '1' to 'GstClockTime gst_audio_clock_adjust(GstClock*, GstClockTime)' return ((Gst::ClockTime)(gst_audio_clock_adjust(gobj(), ((GstClockTime)(time))))); which means that you use gstreamermm HEAD, because the code didn't exist in gstreamermm 1.8 And now the other log [1]. Here things are quite strange, because GStreamer version is 1.12, however, in logs you can see: > audioclock.cc:201:81: error: cannot convert 'GstAudioClock* {aka _GstAudioClock*}' to 'GstClock* {aka _GstClock*}' for argument '1' to 'GstClockTime gst_audio_clock_adjust(GstClock*, GstClockTime)' return ((Gst::ClockTime)(gst_audio_clock_adjust(gobj(), ((GstClockTime)(time))))); Which is weird, because signature of gst_audio_clock_adjust in gstreamer 1.12 is [2]: GstClockTime gst_audio_clock_adjust (GstAudioClock *clock, GstClockTime time); It means that you don't have to apply the patch[3] for this particular architecture, but please investigate first why the signature of the method in your GStreamer 1.12 is different than signature in the documentation (and in the code as well). @Luigi, I just checked. gstreamermm head builds fine with GStreamer 1.12 (excluding gcc7 issue). Could you post error log? Thanks ]0] https://buildd.debian.org/status/fetch.php?pkg=gstreamermm-1.0&arch=x32&ver=1.8.0%2Bdfsg-2&stamp=1498907309&raw=0 [1] https://buildd.debian.org/status/fetch.php?pkg=gstreamermm-1.0&arch=sparc64&ver=1.8.0%2Bdfsg-2&stamp=1498907310&raw=0 [2] https://gstreamer.freedesktop.org/data/doc/gstreamer/1.12/gst-plugins-base-libs/html/GstAudioClock.html#gst-audio-clock-adjust [3] https://bug783678.bugzilla-attachments.gnome.org/attachment.cgi?id=353598
Created attachment 354777 [details] gstreamermm #167eeba build log @Marcin I remember now, the error is with autoconf, see log.
@rinni FYI with attachment 354765 [details] [review] gstmm 1.8.0 builds on i586, x86_64, armv7l, aarch64, ppc64 and ppc64le. At least on openSUSE (no way of testing it on sparc, sorry).
@Luigi, thanks. However, it looks like the problem might be related to glibmm version that you use. Could you open another bug, so we could discuss the problem and continue investigations there? Thanks.
@Marcin see bug 784430.
@Marcin, @Luigi: Thanks for your help. It's still strange, build fails on sparc64 and x32 with gstreamer 1.12 (x32 was updated meanwhile) with patch https://bugzilla.gnome.org/attachment.cgi?id=354765. It builds fine on all other 20 architectures. I'll ask people who know the archs better with the hints from comment 7 and report back if we find a fix. I'll open a separate bug once I found the root cause of the failure.