Opened 6 years ago

Closed 5 years ago

#57020 closed defect (fixed)

gstreamer1-gst-plugins-bad @1.14.2_1 build fails with gstreamer1-gst-plugins-base @1.14.2_1+ogg+universal

Reported by: mopihopi Owned by: Ionic (Mihai Moldovan)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: gstreamer1-gst-plugins-bad

Description

If gstreamer1-gst-plugins-base @1.14.2_1+ogg+universal is installed, the upgrade of gstreamer1-gst-plugins-bad @1.14.2_1 (no variants) fails:

$ port installed gstreamer\* and active
The following ports are currently installed:
  gstreamer1 @1.14.2_0+universal (active)
  gstreamer1-gst-plugins-bad @1.14.1_1 (active)
  gstreamer1-gst-plugins-base @1.14.2_1+ogg+universal (active)
  gstreamer1-gst-plugins-good @1.14.2_0+pulseaudio (active)
$ 
$ sudo port upgrade gstreamer1-gst-plugins-bad
--->  Computing dependencies for gstreamer1-gst-plugins-bad
--->  Fetching archive for gstreamer1-gst-plugins-bad
--->  Attempting to fetch gstreamer1-gst-plugins-bad-1.14.2_1.darwin_16.x86_64.tbz2 from https://packages.macports.org/gstreamer1-gst-plugins-bad
--->  Attempting to fetch gstreamer1-gst-plugins-bad-1.14.2_1.darwin_16.x86_64.tbz2 from http://sea.us.packages.macports.org/macports/packages/gstreamer1-gst-plugins-bad
--->  Attempting to fetch gstreamer1-gst-plugins-bad-1.14.2_1.darwin_16.x86_64.tbz2 from http://ywg.ca.packages.macports.org/mirror/macports/packages/gstreamer1-gst-plugins-bad
--->  Fetching distfiles for gstreamer1-gst-plugins-bad
--->  Verifying checksums for gstreamer1-gst-plugins-bad
--->  Extracting gstreamer1-gst-plugins-bad
--->  Applying patches to gstreamer1-gst-plugins-bad
--->  Configuring gstreamer1-gst-plugins-bad
--->  Building gstreamer1-gst-plugins-bad
Error: Failed to build gstreamer1-gst-plugins-bad: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gstreamer1-gst-plugins-bad/gstreamer1-gst-plugins-bad/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
$ 
$ sw_vers   
ProductName:    Mac OS X
ProductVersion: 10.12.6
BuildVersion:   16G1510
$ 
$ xcodebuild -version
Xcode 9.2
Build version 9C40b
$ 

The build log contains the following error:

:info:build In file included from corevideobuffer.c:23:
:info:build In file included from ./corevideobuffer.h:26:
:info:build ./videotexturecache.h:24:10: fatal error: 'gst/gl/gl.h' file not found
:info:build #include <gst/gl/gl.h>
:info:build          ^~~~~~~~~~~~~

gstreamer1-gst-plugins-base @1.14.2_1+ogg+universal does not provide gst/gl/gl.h, but it appears that gstreamer1-gst-plugins-bad @1.14.2_1 (no variants) excepts it to provide this.

Specifically it appears that gstreamer1-gst-plugins-bad now expects this when the following condition is true:

{![variant_isset x11] && ![variant_isset universal] && ${os.major} >= 13} 

but it appears that gstreamer1-gst-plugins-base now provides it under the following condition:

{![variant_isset x11] && ${build_arch} eq "x86_64" && ${os.major} >= 13 && ![variant_isset universal]}

As long as build_arch is x86_64 (which it is in this case) these would appear to be equivalent, except that they are each checking their own +universal variant, which don't match, and therefore come up with a different answer.

The wine port adds +universal for gstreamer1-gst-plugins-base, so that's why that port has +universal. The wine port does not require gstreamer1-gst-plugins-bad but it is required by other ports which don't need +universal.

Attachments (1)

gstreamer1-gst-plugins-bad.log (1.3 MB) - added by mopihopi 6 years ago.

Download all attachments as: .zip

Change History (7)

Changed 6 years ago by mopihopi

comment:1 Changed 6 years ago by Ionic (Mihai Moldovan)

Cc: Ionic added; Mihai Moldovan <ionic@…> removed
Owner: set to Ionic
Status: newaccepted

comment:2 Changed 5 years ago by Mihai Moldovan <ionic@…>

Resolution: fixed
Status: acceptedclosed

In d21307b91311b16d5505abfeace89bf90b267951/macports-ports (master):

gnome/gstreamer1-gst-plugins-base: require +x11 if building +universal.

Makes sure that some OpenGL implementation is always enabled.

Fixes: #57020

comment:3 Changed 5 years ago by mopihopi

Resolution: fixed
Status: closedreopened

The commit mentioned above changes gstreamer1-gst-plugins-base +universal to require +x11. This does not fix the issue for me, since other ports conflict with x11.

$ port installed gstreamer1-gst-plugins-base and active
The following ports are currently installed:
  gstreamer1-gst-plugins-base @1.14.4_0+ogg+universal (active)
$ sudo port upgrade gstreamer1-gst-plugins-base
Error: gstreamer1-gst-plugins-base 1.14.4 requires +x11 if +universal is set.
Error: Unable to open port: incompatible variant selection.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
$ sudo port upgrade --enforce-variants gstreamer1-gst-plugins-base +ogg+universal+x11
Error: glib2: Variant quartz conflicts with x11
Error: Unable to open port: Error evaluating variants
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
$ port installed glib2 and active
The following ports are currently installed:
  glib2 @2.58.1_0+quartz+universal (active)
$

x11 should not be required, since gstreamer1-gst-plugins-base is working currently with +universal without +x11. There was no issue with gstreamer1-gst-plugins-base; the only issue is that gstreamer1-gst-plugins-bad forces applemedia to be enabled even when it will not work. Changing the gstreamer1-gst-plugins-bad Portfile to not enable applemedia when it would fail resolves the issue.

I have submitted a pull request (https://github.com/macports/macports-ports/pull/2932) that fixes this using an applemedia variant, so that it can be enabled or not based on the active variants of gstreamer1-gst-plugins-base. The applemedia variant is enabled by default in all cases where apple media was previously enabled except for those where it would fail to build. This fixes the issue for me.

comment:4 Changed 5 years ago by mopihopi

After some further investigation I found a much simpler solution that doesn't require a new variant: https://github.com/macports/macports-ports/pull/3173

comment:5 Changed 5 years ago by mf2k (Frank Schima)

Cc: Ionic removed

comment:6 Changed 5 years ago by mopihopi

Resolution: fixed
Status: reopenedclosed

In 3b7804e4df7823254e07e1544b9bb6c530778f84/macports-ports (master):

gstreamer1-gst-plugins-base: Fix -x11+universal

Allow -x11+universal with a sufficiently recent version of clang.
On some older OS versions, the clang from Xcode may be too old.

Fixes #57020

Note: See TracTickets for help on using tickets.