Message ID | 20220129214235.5133-2-thomas.devoogdt@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [1/2] package/libglib2: bump version to 2.70.0 | expand |
Hello Thomas, Thanks for your patch. On Sat, 29 Jan 2022 22:42:35 +0100 Thomas Devoogdt <thomas.devoogdt@gmail.com> wrote: > Libsoup3 has a new API [1], packages using libsoup2 may not > compile with libsoup3 or may crash at runtime in unexpected > ways. So the default will (for now) stay on libsoup2. > A tracking table for the migration can be found here [2]. A "choice" is not going to work well, as it means that in a given configuration we will only be able to install either packages that need libsoup2 *or* packages that libsoup3, bit not a mix of both. Is it possible to install both libsoup2 and libsoup3 side-by-side in the same system? This requires them having a different library name and a different location for header files. If that's the case, we will definitely want to have a separate libsoup3 package, so that we can install libsoup and libsoup3 side by side in the same system. Best regards, Thomas
Hi Thomas, Thomas, and all, On Sun, 30 Jan 2022 15:49:08 +0100 Thomas Petazzoni via buildroot <buildroot@buildroot.org> wrote: > Thanks for your patch. > > On Sat, 29 Jan 2022 22:42:35 +0100 > Thomas Devoogdt <thomas.devoogdt@gmail.com> wrote: > > > Libsoup3 has a new API [1], packages using libsoup2 may not > > compile with libsoup3 or may crash at runtime in unexpected > > ways. So the default will (for now) stay on libsoup2. > > A tracking table for the migration can be found here [2]. > > A "choice" is not going to work well, as it means that in a given > configuration we will only be able to install either packages that need > libsoup2 *or* packages that libsoup3, bit not a mix of both. > > Is it possible to install both libsoup2 and libsoup3 side-by-side in > the same system? This requires them having a different library name and > a different location for header files. Yes, libsoup2 and libsoup3 are parallel-installable, both can coexist in the same system. The only caveat is, as I mentioned in a previous email, that having both versions loaded in the same process will result in odd crashes and assorted failures due to symbols clashing. > If that's the case, we will definitely want to have a separate libsoup3 > package, so that we can install libsoup and libsoup3 side by side in > the same system. Yes, I think we may need to have a separate libsoup2 package. While most “big” packages are already supporting libsoup3 (or will soon), probably others (like gupnp) may take longer and allowing to continue building them with libsoup2 would be a good ide. Cheers, —Adrián
On Mon, 31 Jan 2022 00:02:21 +0200 Adrian Perez de Castro <aperez@igalia.com> wrote: > > Is it possible to install both libsoup2 and libsoup3 side-by-side in > > the same system? This requires them having a different library name and > > a different location for header files. > > Yes, libsoup2 and libsoup3 are parallel-installable, both can coexist in > the same system. The only caveat is, as I mentioned in a previous email, > that having both versions loaded in the same process will result in odd > crashes and assorted failures due to symbols clashing. If both libsoup2 and libsoup3 are enabled in the same build, it's going to be difficult to guarantee that one application doesn't end up loading both, by the usage of separate shared libraries that independently use a different version of libsoup. Thomas
Hi Adrián, Thomas, and all, Adrián: > Yes, libsoup2 and libsoup3 are parallel-installable, both can coexist in > the same system. The only caveat is, as I mentioned in a previous email, > that having both versions loaded in the same process will result in odd > crashes and assorted failures due to symbols clashing. Thomas: > If both libsoup2 and libsoup3 are enabled in the same build, it's going > to be difficult to guarantee that one application doesn't end up > loading both, by the usage of separate shared libraries that > independently use a different version of libsoup. After reading all those opinions, do we need to go that path? - From what I see, most packages do not yet support libsoup3. - Packages that do, will also support libsoup2 for a while. So why not proceed whit libsoup2 as default, but allow to select libsoup3. We can explicitly mark some packages with `depends on !BR2_PACKAGE_LIBSOUP_VERSION_3`. By this, developers can at least start integrating libsoup3 in their custom packages. I didn't add `depends on !BR2_PACKAGE_LIBSOUP_VERSION_3` to this path yet. I think that such flags should be added by the respective package maintainers (in the next bump cycle). --> For me, libsoup3 support is important for the additional APIs that webkitgtk 2.34.4 is providing. kr, Thomas Op zo 30 jan. 2022 om 23:17 schreef Thomas Petazzoni < thomas.petazzoni@bootlin.com>: > On Mon, 31 Jan 2022 00:02:21 +0200 > Adrian Perez de Castro <aperez@igalia.com> wrote: > > > > Is it possible to install both libsoup2 and libsoup3 side-by-side in > > > the same system? This requires them having a different library name and > > > a different location for header files. > > > > Yes, libsoup2 and libsoup3 are parallel-installable, both can coexist in > > the same system. The only caveat is, as I mentioned in a previous email, > > that having both versions loaded in the same process will result in odd > > crashes and assorted failures due to symbols clashing. > > If both libsoup2 and libsoup3 are enabled in the same build, it's going > to be difficult to guarantee that one application doesn't end up > loading both, by the usage of separate shared libraries that > independently use a different version of libsoup. > > Thomas > -- > Thomas Petazzoni, co-owner and CEO, Bootlin > Embedded Linux and Kernel engineering and training > https://bootlin.com >
Thomas, All, On 2022-01-29 22:42 +0100, Thomas Devoogdt spake thusly: > Libsoup3 has a new API [1], packages using libsoup2 may not > compile with libsoup3 or may crash at runtime in unexpected > ways. So the default will (for now) stay on libsoup2. > A tracking table for the migration can be found here [2]. Seeing the comment by Peter on a previous iteration [0]... I investigated a bit, and found that both libsoup2 and libsoup3 will detect one another and explicitly fail; these are commits: - 9596a869414b Detect if libsoup2 is loaded in the same process at init - e7f842c35e97 Error when libsoup3 is detected as already loaded in the same process Also, I've checked, and the includes are instaleld in different directories and shared libraries have different filenames and SONAMES. So, in case both are enabeld at the same time, what would fail is only trhe case of a package loading one or the other via a third-party shared library, e.g.: my-exec -> libA -> libsoup2 `-> libsoup3 (or the other way around, or both through a library). I don't think that is going to be a very common situation. So, I think we should introduce libsoup3 as a different package. We have only 10 packages in Buildroot that use libsoup, with the following status (also looking at [2]) - gmpc: 2.4 only - gssdp: should be 3.0 compatible since e3598a582783 (ci: Track libsoup master again) which is a few days old, so not in a relase yet (but at least, we could backport something...) - gst1-plugins-good: it should be in-tree with c3455def2e7b (soup: Runtime compatibility support for libsoup2 and libsoup3) - gstd-1.x: 2.4 only - gupnp-tools: 3.0 only since 09dfcdc65568 (Merge branch 'wip/gupnp-1.6' into 'master') and 7ee5fd9beb04 (Port to GUPnP 1.6 and libsoup 3), but no release yet. - gvfs: 2.4 only for now - libostree: 2.4 only - midori: uses webkitgtk, so I expect like webkitgtk? - webkitgtk: you seemed to imply that was OK [1]? - wpewebkit: this being webkit stuff, I would guess OK like webkitgtk? So, the only one I can see conflicting is gstd: it links with libsoup3, but I expect it also links or loads gstreamer libs or plugins, so there will be a conflict. So, if we need libsoup3 for a package that has no libsoup2 support, then I think we should introduce a separate package. If we do not yet have a need for libsoup3, let's postpone the introdution of it. [0] https://lore.kernel.org/buildroot/87o83v7m5c.fsf@dell.be.48ers.dk/ [1] https://lore.kernel.org/buildroot/CACXRmJjSOrww35YVVmkg_DEHDaG3ngQts4obTeDUsfsigM4cBQ@mail.gmail.com/ [2] https://gitlab.gnome.org/GNOME/libsoup/-/issues/218 Regards, Yann E. MORIN. > Changes for libsoup3: > - "0001-meson.build-set-c_std-to-gnu99.patch" is upstream now [3]. > - The "gnome" option was dropped in [4]. > - A new "libnghttp2" dependency is added since libsoup 2.99.6 (HTTP2 backend) [5]. > > [1] https://libsoup.org/libsoup-3.0/ch02.html > [2] https://gitlab.gnome.org/GNOME/libsoup/-/issues/218 > [3] https://gitlab.gnome.org/GNOME/libsoup/-/commit/5c3d431bdb094c59997f2a23e31e83f815ab667c > [4] https://gitlab.gnome.org/GNOME/libsoup/-/commit/3fcaa882c4eb29fd754cdb6dd06195632cb4b52a > [5] https://gitlab.gnome.org/GNOME/libsoup/-/commit/1a1d29c3114ca86c673d0c0b02a492d0962dcfe8 > > Signed-off-by: Thomas Devoogdt <thomas.devoogdt@gmail.com> > --- > .../0001-meson.build-set-c_std-to-gnu99.patch | 0 > package/libsoup/Config.in | 16 ++++++++++++++++ > package/libsoup/libsoup.hash | 2 ++ > package/libsoup/libsoup.mk | 11 +++++++++++ > 4 files changed, 29 insertions(+) > rename package/libsoup/{ => 2.74.0}/0001-meson.build-set-c_std-to-gnu99.patch (100%) > > diff --git a/package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch b/package/libsoup/2.74.0/0001-meson.build-set-c_std-to-gnu99.patch > similarity index 100% > rename from package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch > rename to package/libsoup/2.74.0/0001-meson.build-set-c_std-to-gnu99.patch > diff --git a/package/libsoup/Config.in b/package/libsoup/Config.in > index 02e8e8b578..959ddedef5 100644 > --- a/package/libsoup/Config.in > +++ b/package/libsoup/Config.in > @@ -16,8 +16,24 @@ config BR2_PACKAGE_LIBSOUP > > if BR2_PACKAGE_LIBSOUP > > +choice > + prompt "libsoup version" > + default BR2_PACKAGE_LIBSOUP_VERSION_2 > + help > + Select the version of libsoup you wish to use. > + > +config BR2_PACKAGE_LIBSOUP_VERSION_3 > + select BR2_PACKAGE_NGHTTP2 > + bool "libsoup3" > + > +config BR2_PACKAGE_LIBSOUP_VERSION_2 > + bool "libsoup2" > + > +endchoice > + > config BR2_PACKAGE_LIBSOUP_GNOME > bool "libsoup-gnome" > + depends on BR2_PACKAGE_LIBSOUP_VERSION_2 > help > Build libsoup-gnome library. > > diff --git a/package/libsoup/libsoup.hash b/package/libsoup/libsoup.hash > index 95c1c26eb4..6d87cc67e8 100644 > --- a/package/libsoup/libsoup.hash > +++ b/package/libsoup/libsoup.hash > @@ -1,3 +1,5 @@ > +# From https://ftp.gnome.org/pub/GNOME/sources/libsoup/3.0/libsoup-3.0.0.sha256sum > +sha256 cde05f3e20114ce985cbd03d575ff74e5e41e70a218e5eb3068c4bf4710dbf2b libsoup-3.0.0.tar.xz > # From https://ftp.gnome.org/pub/GNOME/sources/libsoup/2.74/libsoup-2.74.0.sha256sum > sha256 33b1d4e0d639456c675c227877e94a8078d731233e2d57689c11abcef7d3c48e libsoup-2.74.0.tar.xz > # Locally calculated > diff --git a/package/libsoup/libsoup.mk b/package/libsoup/libsoup.mk > index 1a26714992..bd8ce40643 100644 > --- a/package/libsoup/libsoup.mk > +++ b/package/libsoup/libsoup.mk > @@ -4,8 +4,13 @@ > # > ################################################################################ > > +ifeq ($(BR2_PACKAGE_LIBSOUP_VERSION_3),y) > +LIBSOUP_VERSION_MAJOR = 3.0 > +LIBSOUP_VERSION = $(LIBSOUP_VERSION_MAJOR).0 > +else > LIBSOUP_VERSION_MAJOR = 2.74 > LIBSOUP_VERSION = $(LIBSOUP_VERSION_MAJOR).0 > +endif > LIBSOUP_SOURCE = libsoup-$(LIBSOUP_VERSION).tar.xz > LIBSOUP_SITE = http://ftp.gnome.org/pub/gnome/sources/libsoup/$(LIBSOUP_VERSION_MAJOR) > LIBSOUP_LICENSE = LGPL-2.0+ > @@ -55,10 +60,16 @@ else > LIBSOUP_CONF_OPTS += -Dgssapi=disabled > endif > > +ifeq ($(BR2_PACKAGE_LIBSOUP_VERSION_2),y) > ifeq ($(BR2_PACKAGE_LIBSOUP_GNOME),y) > LIBSOUP_CONF_OPTS += -Dgnome=true > else > LIBSOUP_CONF_OPTS += -Dgnome=false > endif > +endif > + > +ifeq ($(BR2_PACKAGE_LIBSOUP_VERSION_3),y) > +LIBSOUP_DEPENDENCIES += nghttp2 > +endif > > $(eval $(meson-package)) > -- > 2.17.1 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
diff --git a/package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch b/package/libsoup/2.74.0/0001-meson.build-set-c_std-to-gnu99.patch similarity index 100% rename from package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch rename to package/libsoup/2.74.0/0001-meson.build-set-c_std-to-gnu99.patch diff --git a/package/libsoup/Config.in b/package/libsoup/Config.in index 02e8e8b578..959ddedef5 100644 --- a/package/libsoup/Config.in +++ b/package/libsoup/Config.in @@ -16,8 +16,24 @@ config BR2_PACKAGE_LIBSOUP if BR2_PACKAGE_LIBSOUP +choice + prompt "libsoup version" + default BR2_PACKAGE_LIBSOUP_VERSION_2 + help + Select the version of libsoup you wish to use. + +config BR2_PACKAGE_LIBSOUP_VERSION_3 + select BR2_PACKAGE_NGHTTP2 + bool "libsoup3" + +config BR2_PACKAGE_LIBSOUP_VERSION_2 + bool "libsoup2" + +endchoice + config BR2_PACKAGE_LIBSOUP_GNOME bool "libsoup-gnome" + depends on BR2_PACKAGE_LIBSOUP_VERSION_2 help Build libsoup-gnome library. diff --git a/package/libsoup/libsoup.hash b/package/libsoup/libsoup.hash index 95c1c26eb4..6d87cc67e8 100644 --- a/package/libsoup/libsoup.hash +++ b/package/libsoup/libsoup.hash @@ -1,3 +1,5 @@ +# From https://ftp.gnome.org/pub/GNOME/sources/libsoup/3.0/libsoup-3.0.0.sha256sum +sha256 cde05f3e20114ce985cbd03d575ff74e5e41e70a218e5eb3068c4bf4710dbf2b libsoup-3.0.0.tar.xz # From https://ftp.gnome.org/pub/GNOME/sources/libsoup/2.74/libsoup-2.74.0.sha256sum sha256 33b1d4e0d639456c675c227877e94a8078d731233e2d57689c11abcef7d3c48e libsoup-2.74.0.tar.xz # Locally calculated diff --git a/package/libsoup/libsoup.mk b/package/libsoup/libsoup.mk index 1a26714992..bd8ce40643 100644 --- a/package/libsoup/libsoup.mk +++ b/package/libsoup/libsoup.mk @@ -4,8 +4,13 @@ # ################################################################################ +ifeq ($(BR2_PACKAGE_LIBSOUP_VERSION_3),y) +LIBSOUP_VERSION_MAJOR = 3.0 +LIBSOUP_VERSION = $(LIBSOUP_VERSION_MAJOR).0 +else LIBSOUP_VERSION_MAJOR = 2.74 LIBSOUP_VERSION = $(LIBSOUP_VERSION_MAJOR).0 +endif LIBSOUP_SOURCE = libsoup-$(LIBSOUP_VERSION).tar.xz LIBSOUP_SITE = http://ftp.gnome.org/pub/gnome/sources/libsoup/$(LIBSOUP_VERSION_MAJOR) LIBSOUP_LICENSE = LGPL-2.0+ @@ -55,10 +60,16 @@ else LIBSOUP_CONF_OPTS += -Dgssapi=disabled endif +ifeq ($(BR2_PACKAGE_LIBSOUP_VERSION_2),y) ifeq ($(BR2_PACKAGE_LIBSOUP_GNOME),y) LIBSOUP_CONF_OPTS += -Dgnome=true else LIBSOUP_CONF_OPTS += -Dgnome=false endif +endif + +ifeq ($(BR2_PACKAGE_LIBSOUP_VERSION_3),y) +LIBSOUP_DEPENDENCIES += nghttp2 +endif $(eval $(meson-package))
Libsoup3 has a new API [1], packages using libsoup2 may not compile with libsoup3 or may crash at runtime in unexpected ways. So the default will (for now) stay on libsoup2. A tracking table for the migration can be found here [2]. Changes for libsoup3: - "0001-meson.build-set-c_std-to-gnu99.patch" is upstream now [3]. - The "gnome" option was dropped in [4]. - A new "libnghttp2" dependency is added since libsoup 2.99.6 (HTTP2 backend) [5]. [1] https://libsoup.org/libsoup-3.0/ch02.html [2] https://gitlab.gnome.org/GNOME/libsoup/-/issues/218 [3] https://gitlab.gnome.org/GNOME/libsoup/-/commit/5c3d431bdb094c59997f2a23e31e83f815ab667c [4] https://gitlab.gnome.org/GNOME/libsoup/-/commit/3fcaa882c4eb29fd754cdb6dd06195632cb4b52a [5] https://gitlab.gnome.org/GNOME/libsoup/-/commit/1a1d29c3114ca86c673d0c0b02a492d0962dcfe8 Signed-off-by: Thomas Devoogdt <thomas.devoogdt@gmail.com> --- .../0001-meson.build-set-c_std-to-gnu99.patch | 0 package/libsoup/Config.in | 16 ++++++++++++++++ package/libsoup/libsoup.hash | 2 ++ package/libsoup/libsoup.mk | 11 +++++++++++ 4 files changed, 29 insertions(+) rename package/libsoup/{ => 2.74.0}/0001-meson.build-set-c_std-to-gnu99.patch (100%)