diff mbox series

[v2] gstreamer1.0-plugins-good: Fix libsoup runtime dependency

Message ID 20230114234936.2242153-1-tom.hochstein@nxp.com
State Accepted, archived
Commit 56c4559788d3d87ceed965aedd03d461df5999aa
Headers show
Series [v2] gstreamer1.0-plugins-good: Fix libsoup runtime dependency | expand

Commit Message

Tom Hochstein Jan. 14, 2023, 11:49 p.m. UTC
The runtime dependency on libsoup set via PACKAGECONFIG does not work.
The problem is the dependency is placed on the main package, but the
soup package has no dependency on the main package.

I considered modifying the call to do_split_packages from
gstreamer1.0-plugins-packaging.inc, changing extra_depends from '' to
None:

```
    extra_depends  -- extra runtime dependencies (RDEPENDS) to be set for
                      all packages. The default value of None causes a
                      dependency on the main package (${PN}) - if you do
                      not want this, pass '' for this parameter.
```

However, the problem with this solution is that it does add the runtime
dependency to _all_ such split packages.

So, fix the problem with an explicit runtime dependency.

Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
---
 .../gstreamer/gstreamer1.0-plugins-good_1.20.5.bb      | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

Comments

Richard Purdie Jan. 15, 2023, 3:08 p.m. UTC | #1
On Sat, 2023-01-14 at 17:49 -0600, Tom Hochstein wrote:
> The runtime dependency on libsoup set via PACKAGECONFIG does not work.
> The problem is the dependency is placed on the main package, but the
> soup package has no dependency on the main package.
> 
> I considered modifying the call to do_split_packages from
> gstreamer1.0-plugins-packaging.inc, changing extra_depends from '' to
> None:
> 
> ```
>     extra_depends  -- extra runtime dependencies (RDEPENDS) to be set for
>                       all packages. The default value of None causes a
>                       dependency on the main package (${PN}) - if you do
>                       not want this, pass '' for this parameter.
> ```
> 
> However, the problem with this solution is that it does add the runtime
> dependency to _all_ such split packages.
> 
> So, fix the problem with an explicit runtime dependency.
> 
> Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
> ---
>  .../gstreamer/gstreamer1.0-plugins-good_1.20.5.bb      | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)

Better but there are still multilib issues:

https://autobuilder.yoctoproject.org/typhoon/#/builders/44/builds/6551
https://autobuilder.yoctoproject.org/typhoon/#/builders/52/builds/6425

Cheers,

Richard
Tom Hochstein Jan. 15, 2023, 3:54 p.m. UTC | #2
Okay, will this do the trick?

+RDEPENDS:${PN}-soup += "${MLPREFIX}${@bb.utils.contains('PACKAGECONFIG', 'soup2', 'libsoup-2.4', 'libsoup', d)}"

Is this a general rule that explicit RDEPENDS require explicit MLPREFIX?

Tom

-----Original Message-----
From: Richard Purdie <richard.purdie@linuxfoundation.org> 
Sent: Sunday, January 15, 2023 9:09 AM
To: Tom Hochstein <tom.hochstein@nxp.com>; openembedded-core@lists.openembedded.org
Subject: Re: [OE-Core][PATCH v2] gstreamer1.0-plugins-good: Fix libsoup runtime dependency

On Sat, 2023-01-14 at 17:49 -0600, Tom Hochstein wrote:
> The runtime dependency on libsoup set via PACKAGECONFIG does not work.
> The problem is the dependency is placed on the main package, but the
> soup package has no dependency on the main package.
> 
> I considered modifying the call to do_split_packages from
> gstreamer1.0-plugins-packaging.inc, changing extra_depends from '' to
> None:
> 
> ```
>     extra_depends  -- extra runtime dependencies (RDEPENDS) to be set for
>                       all packages. The default value of None causes a
>                       dependency on the main package (${PN}) - if you do
>                       not want this, pass '' for this parameter.
> ```
> 
> However, the problem with this solution is that it does add the runtime
> dependency to _all_ such split packages.
> 
> So, fix the problem with an explicit runtime dependency.
> 
> Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
> ---
>  .../gstreamer/gstreamer1.0-plugins-good_1.20.5.bb      | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)

Better but there are still multilib issues:

https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fautobuilder.yoctoproject.org%2Ftyphoon%2F%23%2Fbuilders%2F44%2Fbuilds%2F6551&data=05%7C01%7Ctom.hochstein%40nxp.com%7C2519f1815a0e4f78782c08daf70a6dc4%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638093921412421859%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=tr%2BSVqrVpQ1zPOMB8bDURNFWyurODBuk8SZk0o%2BOvCo%3D&reserved=0
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fautobuilder.yoctoproject.org%2Ftyphoon%2F%23%2Fbuilders%2F52%2Fbuilds%2F6425&data=05%7C01%7Ctom.hochstein%40nxp.com%7C2519f1815a0e4f78782c08daf70a6dc4%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638093921412421859%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=dE5w5xWhVoVARs9hl9FGrzL1ckK2N9ARJ84hmdAuqOo%3D&reserved=0

Cheers,

Richard
Richard Purdie Jan. 15, 2023, 4:19 p.m. UTC | #3
On Sun, 2023-01-15 at 15:54 +0000, Tom Hochstein wrote:
> Okay, will this do the trick?
> 
> +RDEPENDS:${PN}-soup += "${MLPREFIX}${@bb.utils.contains('PACKAGECONFIG', 'soup2', 'libsoup-2.4', 'libsoup', d)}"
> 
> Is this a general rule that explicit RDEPENDS require explicit MLPREFIX?

If bitbake can't automatically determine the package as part of
PACKAGES, it needs to be specified.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.5.bb
index f7ade89ef8..ce2a796928 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.5.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.5.bb
@@ -19,6 +19,7 @@  LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
 DEPENDS += "gstreamer1.0-plugins-base libcap zlib"
 RPROVIDES:${PN}-pulseaudio += "${PN}-pulse"
 RPROVIDES:${PN}-soup += "${PN}-souphttpsrc"
+RDEPENDS:${PN}-soup += "${@bb.utils.contains('PACKAGECONFIG', 'soup2', 'libsoup-2.4', 'libsoup', d)}"
 
 PACKAGECONFIG_SOUP ?= "soup3"
 
@@ -52,13 +53,8 @@  PACKAGECONFIG[libv4l2]    = "-Dv4l2-libv4l2=enabled,-Dv4l2-libv4l2=disabled,v4l-
 PACKAGECONFIG[mpg123]     = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123"
 PACKAGECONFIG[pulseaudio] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio"
 PACKAGECONFIG[qt5]        = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native ${QT5WAYLANDDEPENDS}"
-# Starting with version 1.20, the GStreamer soup plugin loads libsoup with dlopen()
-# instead of linking to it. And instead of using the default libsoup C headers, it
-# uses its own stub header. Consequently, objdump will not show the libsoup .so as
-# a dependency, and libsoup won't be added to an image. Fix this by setting libsoup
-# as RDEPEND.
-PACKAGECONFIG[soup2] = "-Dsoup=enabled,,libsoup-2.4,libsoup-2.4,,soup3"
-PACKAGECONFIG[soup3] = "-Dsoup=enabled,,libsoup,libsoup,,soup2"
+PACKAGECONFIG[soup2]      = "-Dsoup=enabled,,libsoup-2.4,,,soup3"
+PACKAGECONFIG[soup3]      = "-Dsoup=enabled,,libsoup,,,soup2"
 PACKAGECONFIG[speex]      = "-Dspeex=enabled,-Dspeex=disabled,speex"
 PACKAGECONFIG[rpi]        = "-Drpicamsrc=enabled,-Drpicamsrc=disabled,userland"
 PACKAGECONFIG[taglib]     = "-Dtaglib=enabled,-Dtaglib=disabled,taglib"