-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gstreamer-full: new recipe #23694
gstreamer-full: new recipe #23694
Conversation
This comment has been minimized.
This comment has been minimized.
self.options.rm_safe('gst_base_ximage') | ||
self.options.rm_safe('gst_base_xvimage') | ||
|
||
if not self.options.with_base: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This won't work, unfortunately. The user-provided values for options are not available in config_options()
or even configure()
. You will have to del self.info.options.xyz' the options that have no effect in
package_id()` instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure I follow. Doc seems to do it in configure(), see second snippet where they remove fPIC.
I have no issue with moving it to package_id(), just want to understand a bit better. Thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@danimtb Maybe you or someone else from the team can clarify whether the configure()
step can be used like that or not, given that you were wrestling with similar issues in the Arrow recipe. Does the standard if self.options.shared: del self.options.fPIC
even work as intended?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm re-reading the doc and I think it should be in configure() and not in config_option() (that was a mistake as you pointed out, only settings is populated), and not in package_id(). I'll wait for confirmation on this. Thanks
Looks promising at a first glance. Thank you very much! All of the sub-packages, except for gst-libav to some degree, are very likely to be used simultaneously, so packaging them as a single unit makes sense to me. As for the difficulty of bumping 6 different packages one-by-one. That is currently quite painful indeed, but Conan devs have mentioned that support for modifying of multiple packages in a single PR will likely be added some time soon. @RubenRBS do you know if and when that feature might land on CCI? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
f20eaa6
to
e6ee846
Compare
Conan v1 pipeline ❌Failure in build 5 (
Note: To save resources, CI tries to finish as soon as an error is found. For this reason you might find that not all the references have been launched or not all the configurations for a given reference. Also, take into account that we cannot guarantee the order of execution as it depends on CI workload and workers availability. Conan v2 pipeline ❌
The v2 pipeline failed. Please, review the errors and note this is required for pull requests to be merged. In case this recipe is still not ported to Conan 2.x, please, ping See details:Failure in build 5 (
Note: To save resources, CI tries to finish as soon as an error is found. For this reason you might find that not all the references have been launched or not all the configurations for a given reference. Also, take into account that we cannot guarantee the order of execution as it depends on CI workload and workers availability. |
I think this PR is very promising, I am highly interested. @fnadeau is there any update? Is there anything I can do to support the PR? I would be happy to contribute. So far I was able to rebase the PR branch onto the current master branch and build the package on Windows/msvc17. |
Sorry I was on medical leave for a while and when I came back, this wasn't a priority anymore. I might get around to it later, I'll just close the PR to avoid bombarding conan-center-index with staled PR. |
Hi Frédéric @fnadeau, sorry to hear that. I hope you are doing well now. Would you mind if I try to re-open the PR from the rebased version of your branch? I really would like to upstream Conan recipes for current versions of GStreamer. Your PR seems to be closest to that target. If |
@fnadeau, sorry for pinging you again. Do you have any comments on my above question? |
@uboot I have a fully working and up-to-date recipe for GStreamer and all of its available plugins available at https://github.com/valgur/conan-center-index. I'll open a PR at some point, but it probably won't get merged any time soon, since the recipes are rather complex at 3500 LoC combined. |
@uboot : Hi, I started working again on my branch. It's not complete and requires cleanup. If you can look it up and give feedback, that would be appreciated. Note that i'm working on gstreamer-full and not on individual gstreamer package. So far it works on my machine, Linux. Windows is untested. I would like to revisit the way egl, wayland, x11 option are used since it's differ a lots from gstreamer approach. Currently, there are >150 plugins that compiles in base/good/bad/ugly/libav/rtsp-server but a whole lot are still disabled. https://github.com/fnadeau/conan-center-index/tree/feature/gstreamer-full |
I considered the combined
I have tested my recipe version on Linux, Windows and macOS. Nearly all plugins that can be built with Conan deps work correctly on each of the three platforms. |
One PR for multiple recipes, that is absolute good news. GPL plugins should be handled via a with_gpl flag or something similar, meson uses -Dgpl=enabled. |
@fnadeau these are great news. I will rebase my commits onto your branch. I mainly build for Windows so this might complement your work on Linux. For now I built gstreamer-full as shared libraries (I added a |
I opened a PR for the updated These recipes are basically feature-complete. I highly doubt there's anything to be added from the |
@valgur I think #26330 looks very promising, thanks a lot. I will have a look at it. A few thoughts on single recipe (aka gstreamer-full) vs. multiple recipes: GStreamer (including its plugins) has been maintained in a mono-repo for some years now. That would actually justify a single recipe. The Qt recipe follows the same approach. On the other hand this is, admittedly, a matter of taste. The gstreamer-full recipe potentially allows to do a static build of GStreamer. This can only work with the single recipe approach. |
Hmm, ok, the monolithic build into a single shared library file is an interesting feature. Static library builds work just fine with the individual recipes as well, though, if that's what you mean. An additional As for Qt, having it as individual component recipes would be very welcome too to keep the scope of each one clearer and to not have to download and unzip gigabytes of sources, but it would result in a lot of redundant logic in the build setup and packaging steps. That was not the case for GStreamer, since the build config and packaging are actually very straightforward. |
Specify library name and version: gstreamer-full/1.24.2
gstreamer and its pluggins are maintained at a different pace.
gstreamer- 1.22.6
gst-plugings-base 1.19.2
gst-plugings-good 1.19.1
gst-plugings-ugly 1.19.1
gst-plugings-bad 1.19.1
gst-libav 1.19.1
From a maintainability point of view, any update from gstreamer upstream requires 6 PR for conan to catch-up. This does not include PR for missing items such as gst-rtsp-server. Since 1.24 it is now possible to do a full build static. This would make the version bump way easier. It should be possible to have a full build dynamic, this could be added later.
There is still a bit of work and testing todo. I would like to gather interest and comment on the package.