conda-forge / gstreamer-feedstock

A conda-smithy repository for gstreamer.
BSD 3-Clause "New" or "Revised" License
9 stars 28 forks source link

Build all possible plugins required for functionality #131

Open ehfd opened 3 weeks ago

ehfd commented 3 weeks ago

CC @hmaarrfk

Many plugins are not being built in this build ecosystem due to missing host dependencies (many of which exist as valid feedstocks).

This can be checked by reading through all the NO messages in the build logs.

Because GStreamer doesn't tolerate bundling multiple projects into one package, more feedstocks are required.

Personally, I consider these (not currently existing) feedstocks important because I work with WebRTC:

    json-glib                            : YES (from gst-plugins-bad)
    libgudev                             : YES 1 warnings(from gst-plugins-base)
    libmicrodns                          : YES (from gst-plugins-bad)
    libnice                              : YES 1 warnings
    libsrtp2                             : YES 1 warnings (from gst-plugins-bad)
    webrtc-audio-processing              : YES (from gst-plugins-bad)
    gst-plugins-rs                       : YES 1 warnings

Other dependencies can be found in here:

gstreamer-full 1.24.4

  Build options
gstreamer-full library               : NO
gstreamer-full target type           : shared_library
Tools                                : gst-inspect  gst-stats
                                       gst-typefind  gst-launch
                                       gst-device-monitor  gst-discoverer
                                       gst-play  gst-transcoder
                                       ges-launch
Helpers                              : gst-plugin-scanner
                                       gst-completion-helper
Libraries                            : gst-editing-services-1.0
Tests and examples disabled          : NO

  Subprojects
dssim                                : YES (from gst-plugins-bad)
dv                                   : YES (from gst-plugins-good)
fdk-aac                              : YES (from gst-plugins-bad)
gl-headers                           : YES (from gst-plugins-base)
graphene                             : YES 1 warnings
                                       (from gst-plugins-base)
gst-devtools                         : NO Feature 'devtools' disabled
gst-editing-services                 : YES 1 warnings
gst-examples                         : NO Feature 'gst-examples' disabled
gst-integration-testsuites           : NO Feature 'devtools' disabled
gst-libav                            : YES
gst-plugins-bad                      : YES
gst-plugins-base                     : YES
gst-plugins-good                     : YES
gst-plugins-rs                       : YES 1 warnings
gst-plugins-ugly                     : YES
gst-python                           : YES
gst-rtsp-server                      : YES
gstreamer                            : YES 3 warnings
gstreamer-sharp                      : NO Feature 'sharp' disabled
gstreamer-vaapi                      : NO Feature 'vaapi' disabled
json-glib                            : YES (from gst-plugins-bad)
libgudev                             : YES 1 warnings
                                       (from gst-plugins-base)
libmicrodns                          : YES (from gst-plugins-bad)
libnice                              : YES
libsrtp2                             : YES 1 warnings
                                       (from gst-plugins-bad)
ntv2                                 : YES (from gst-plugins-bad)
orc                                  : YES
tinyalsa                             : NO
                                       Neither a subproject directory nor a tinyalsa.wrap file was found.
webrtc-audio-processing              : YES (from gst-plugins-bad)
ehfd commented 3 weeks ago

Includes #61

hmaarrfk commented 3 weeks ago

PRs welcome.

Try to not "require" all. Multimedia is very broad and many codecs just get stale. So build what you need, help others.

ehfd commented 3 weeks ago

Try to not "require" all. Multimedia is very broad and many codecs just get stale. So build what you need, help others.

I'll try to enable the most common ones but not the uncommon ones. Is there a handy way to make optional dependencies?

hmaarrfk commented 3 weeks ago

Is there a handy way to make optional dependencies?

This is generally the challenge.

If the finally libraries can handle missing shared libraries, then it may become possible. You can create a split package where the main package does not add any hard dependency on a library, but may add a constraint.

Ultimately, the hardest aspect is the imposed perpetual maintenance burden imposed on the other maintainers of this feedstock. This isn't to discourage you from adding what you need, but be mindful of the (and your) increased maintenance burden.

Generally. The strength of conda forge is to enable us to add dependencies without fear of breaking things for others!!!!

Excited to have more codecs!!!

ehfd commented 3 weeks ago

Ultimately, the hardest aspect is the imposed perpetual maintenance burden imposed on the other maintainers of this feedstock. This isn't to discourage you from adding what you need, but be mindful of the (and your) increased maintenance burden.

OK, Great! Thank you for the tip.

ehfd commented 3 weeks ago

This is going to take a bit longer because short-term, I dropped my plan to put in my project as a conda-forge feedstock right now.

However, thanks to all the new feedstocks which were dependencies, I can finally build a portable version of my project using conda-build locally and distribute using conda-pack.

Long-term, I still have a goal to fit my project into conda-forge and therefore this will continue. It will just take some time.