Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Thomas Devoogdt <thomas.devoogdt@gmail.com>
Cc: Adrian Perez de Castro <aperez@igalia.com>,
	Fabrice Fontaine <fontaine.fabrice@gmail.com>,
	buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH 2/2] package/libsoup: add choice between libsoup2 and libsoup3
Date: Sun, 21 Aug 2022 20:45:48 +0200	[thread overview]
Message-ID: <20220821184548.GZ2775145@scaer> (raw)
In-Reply-To: <20220129214235.5133-2-thomas.devoogdt@gmail.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

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  parent reply	other threads:[~2022-08-21 18:46 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-29 21:42 [Buildroot] [PATCH 1/2] package/libglib2: bump version to 2.70.0 Thomas Devoogdt
2022-01-29 21:42 ` [Buildroot] [PATCH 2/2] package/libsoup: add choice between libsoup2 and libsoup3 Thomas Devoogdt
2022-01-30 14:49   ` Thomas Petazzoni via buildroot
2022-01-30 22:02     ` Adrian Perez de Castro
2022-01-30 22:17       ` Thomas Petazzoni via buildroot
2022-01-31 11:37         ` Thomas Devoogdt
2022-08-21 18:45   ` Yann E. MORIN [this message]
2022-01-30 14:52 ` [Buildroot] [PATCH 1/2] package/libglib2: bump version to 2.70.0 Thomas Petazzoni via buildroot
2022-01-31 16:16   ` Thomas Devoogdt
2022-01-31 16:40     ` Fabrice Fontaine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220821184548.GZ2775145@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=aperez@igalia.com \
    --cc=buildroot@buildroot.org \
    --cc=fontaine.fabrice@gmail.com \
    --cc=thomas.devoogdt@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox