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 783628 - Can't build against gstreamer 1.12
Can't build against gstreamer 1.12
Status: RESOLVED FIXED
Product: gstreamermm
Classification: Bindings
Component: general
1.8.x
Other Linux
: Normal normal
: ---
Assigned To: gstreamermm-maint
gstreamermm-maint
Depends on:
Blocks:
 
 
Reported: 2017-06-10 12:34 UTC by Luigi Baldoni
Modified: 2017-07-03 12:01 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gstreamermm build log gst 1.12 (12.11 KB, text/plain)
2017-06-10 12:34 UTC, Luigi Baldoni
  Details
build gstreamermm 1.8.0 against gstreamer 1.12.0 (1.70 KB, patch)
2017-07-01 13:14 UTC, Luigi Baldoni
none Details | Review
gstreamermm #167eeba build log (1.21 KB, text/plain)
2017-07-01 20:00 UTC, Luigi Baldoni
  Details

Description Luigi Baldoni 2017-06-10 12:34:16 UTC
Created attachment 353521 [details]
gstreamermm build log gst 1.12

At least that's what it looks like.
See attachment.
Comment 1 Marcin Kolny (IRC: loganek) 2017-06-10 14:15:43 UTC
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!
Comment 2 rinni 2017-07-01 12:03:05 UTC
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?
Comment 3 Luigi Baldoni 2017-07-01 13:14:14 UTC
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)
Comment 4 Marcin Kolny (IRC: loganek) 2017-07-01 15:47:37 UTC
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.
Comment 5 rinni 2017-07-01 15:57:44 UTC
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
Comment 6 Luigi Baldoni 2017-07-01 16:02:10 UTC
@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.
Comment 7 Marcin Kolny (IRC: loganek) 2017-07-01 19:22:16 UTC
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
Comment 8 Luigi Baldoni 2017-07-01 20:00:39 UTC
Created attachment 354777 [details]
gstreamermm #167eeba build log

@Marcin I remember now, the error is with autoconf, see log.
Comment 9 Luigi Baldoni 2017-07-01 20:06:02 UTC
@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).
Comment 10 Marcin Kolny (IRC: loganek) 2017-07-01 20:29:10 UTC
@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.
Comment 11 Luigi Baldoni 2017-07-01 20:45:57 UTC
@Marcin see bug 784430.
Comment 12 rinni 2017-07-03 12:01:40 UTC
@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.