Opened 2 years ago

Closed 2 years ago

#56764 closed defect (fixed)

gstreamer1-gst-plugins-base: build fails 10.6.8 unlelss --disable-opengl is added

Reported by: kencu (Ken) Owned by: Mihai Moldovan <ionic@…>
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: ryandesign (Ryan Schmidt)
Port: gstreamer1-gst-plugins-base


this block was recently removed from the Portfile

    # Needs OpenGL 4.0 features only available on 10.9+.
    if {${os.major} < 13} {
        configure.args-append   --disable-opengl

build fails on 10.6.8 unless it's added back in

Attachments (1) (515.1 KB) - added by kencu (Ken) 2 years ago.

Download all attachments as: .zip

Change History (9)

Changed 2 years ago by kencu (Ken)

comment:1 Changed 2 years ago by kencu (Ken)

looks like the build fails on all the systems 10.5 to 10.8 now.

comment:2 Changed 2 years ago by ryandesign (Ryan Schmidt)

Cc: Ionic ryandesign added

comment:3 Changed 2 years ago by Ionic (Mihai Moldovan)

ACK, I know. Something is weird. --disable-cocoa (N.B.: "cocoa" in this context doesn't mean general Cocoa support, but rather the GL-Cocoa backend) should make the build system NOT compile the problematic code, but for some reason it's still being processed. I need to dig deeper to find out what goes on there.

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

Owner: set to Mihai Moldovan <ionic@…>
Resolution: fixed
Status: newclosed

In 950d187fe2f6f38e951a1b664be72413e344baa4/macports-ports (master):

gnome/gstreamer1-gst-plugins-base: disable OpenGL by default, enable for +x11 or +cocoa. Revbump.

Fixes: #56764

comment:5 Changed 2 years ago by Ionic (Mihai Moldovan)

Cc: Ionic removed
Resolution: fixed
Status: closedreopened

Still not fixed, it's not using the correct MESA headers yet when building with X11 support.


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

I think I'll probably make cocoa and x11 conflicting as well. Linking both runtimes at the same time (like we did it before) probably calls for disaster.

Try gst-launch-1.0 -v gltestsrc ! glimagesink to see the effect with a +cocoa+x11-enabled gstreamer1-gst-plugins-base package. It's being rendered through X11 (and not Cocoa), but the output is... a garbled, flickering mess of random(?) pixmaps. Not the SMPTE test pattern one would expect.

gstreamer includes the system GL headers in a hardcoded fashion #ifdef __APPLE__, which has been causing the compile failures even in the +x11 case.

Ryan, do you have any idea how wine uses gstreamer? Probably just for conversion, but not for actual rendering, right? I guess it should be pretty agnostic when it comes to the gstreamer GL backend?

If I make x11 and cocoa conflicting, we'll only be able to enable one backend at a time. I'll likely go for +x11 on platforms not supporting +cocoa, otherwise +cocoa.

comment:7 Changed 2 years ago by Ionic (Mihai Moldovan)

I'm going to push the changes that should hopefully make that work on older systems again, too.

This said, I wasn't able to get gst-launch-1.0 -v gltestsrc ! glimagesink working with MESA/the X11 backend. It's still flickering with random pixmaps (memory residue?) and generally not working correctly. The +cocoa version seems to be outputting the correct video stream, though.

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

Resolution: fixed
Status: reopenedclosed

In 1b5491fea996e493a165b1cae71c2015c758c206/macports-ports (master):

gnome/gstreamer1-gst-plugins-base: rework OpenGL X11/Cocoa handling again, revbump.

Fixes: #56764

Makes the cocoa and x11 variants conflicting. This will only affect the
OpenGL plugin - and we only want to link one runtime there anyway.

Older systems, universal builds or architectures other than x86_64 will
get OpenGL support through MESA's libGL via the default-enabled x11

Otherwise, we prefer the cocoa variant.

Additionally, completely disable OpenGL|ES support. It causes compile
failures due to type differences in 32bit mode and is not useful to the
non-embedded systems we support.

Note: See TracTickets for help on using tickets.