> -----Original Message-----
> From: openembedded-devel@lists.openembedded.org <openembedded-
> de...@lists.openembedded.org> On Behalf Of Peter Kjellerstedt via
> lists.openembedded.org
> Sent: Tuesday, October 1, 2024 14:00
> To: Yi Zhao <yi.z...@windriver.com>; Yi Zhao <yi.z...@eng.windriver.com>
> Cc: openembedded-devel@lists.openembedded.org
> Subject: Re: [oe] [meta-oe][PATCH 1/2] protobuf: add abseil-cpp to
> RDEPENDS
> 
> > -----Original Message-----
> > From: Yi Zhao <yi.z...@windriver.com>
> > Sent: den 25 september 2024 04:17
> > To: Peter Kjellerstedt <peter.kjellerst...@axis.com>; Yi Zhao
> <yi.z...@eng.windriver.com>
> > Cc: openembedded-devel@lists.openembedded.org
> > Subject: Re: [oe] [meta-oe][PATCH 1/2] protobuf: add abseil-cpp to
> RDEPENDS
> >
> >
> > On 9/24/24 03:02, Peter Kjellerstedt wrote:
> > >> -----Original Message-----
> > >> From: openembedded-devel@lists.openembedded.org <openembedded-
> de...@lists.openembedded.org> On Behalf Of Yi Zhao
> > >> Sent: den 22 september 2024 09:36
> > >> To: openembedded-devel@lists.openembedded.org
> > >> Subject: [oe] [meta-oe][PATCH 1/2] protobuf: add abseil-cpp to
> RDEPENDS
> > >>
> > >> Since commit[1], the libraries of abseil-cpp have been splitted into
> > >> separate packages. When protobuf is installed into the image, only 48
> > >> abseil libraries are installed as runtime dependencies. But the output
> > >> of 'pkg-config --libs protobuf' lists 66 abseil-cpp libraries are
> > >> required. Add abseil-cpp to RDEPENDS to ensure that all required
> > >> abseil-cpp libraries are installed.
> > >>
> > >> [1] https://git.openembedded.org/meta-
> openembedded/commit/?id=dd6421e65eb75c35a904f4b487ba022075035
> ecc
> > >>
> > >> Signed-off-by: Yi Zhao <yi.z...@windriver.com>
> > >> ---
> > >>   meta-oe/recipes-devtools/protobuf/protobuf_4.25.4.bb | 2 ++
> > >>   1 file changed, 2 insertions(+)
> > >>
> > >> diff --git a/meta-oe/recipes-devtools/protobuf/protobuf_4.25.4.bb
> b/meta-oe/recipes-devtools/protobuf/protobuf_4.25.4.bb
> > >> index cc5204de4..354b3213a 100644
> > >> --- a/meta-oe/recipes-devtools/protobuf/protobuf_4.25.4.bb
> > >> +++ b/meta-oe/recipes-devtools/protobuf/protobuf_4.25.4.bb
> > >> @@ -106,6 +106,8 @@ FILES:${PN}-lite = "${libdir}/libprotobuf-
> lite${SOLIBS}"
> > >>   # CMake requires protoc binary to exist in sysroot, even if it has 
> > >> wrong
> architecture.
> > >>   SYSROOT_DIRS += "${bindir}"
> > >>
> > >> +RDEPENDS:${PN} = "abseil-cpp"
> > >> +RDEPENDS:${PN}-lite = "abseil-cpp"
> > >
> > > This defeats the whole purpose of splitting up the abseil
> > > libraries. What triggered this change? Was it an actual
> > > runtime error, or were you only looking at the output
> > > from pkg-config --libs protobuf?
> > >
> > > Since the .pc files are in the protobuf-dev package, which
> > > depends on the abseil-cpp-dev package, all abseil libraries
> > > should be available if you are actually building on target
> > > or with an SDK.
> >
> > Our customer reported this issue. Here is his description:
> > The abseil libraries will be included in the SDK, but not on the target.
> > The application is building with SDK. The yocto build is adding protobuf
> > to the image (no explicit abseil libraries are added). If an application
> > then are built using the SDK it can not be executed on target as
> > libraries are missing.
> 
> Can we at least change the dependency to a recommendation so
> that it can be avoided via BAD_RECOMMENDATIONS? Because as it
> is, it penalizes everyone that use protobuf for the case where
> one provides an SDK with protobuf.
> 
> My suggestion would be to change it to:
> 
> # Recommend abseil-cpp so that all its libraries are installed in case
> # protobuf is provided as part of an SDK. Everyone else should add
> # BAD_RECOMMENDATIONS += "abseil-cpp" to their configuration.
> RRECOMMENDS:${PN} = "abseil-cpp"
> RRECOMMENDS:${PN}-lite = "abseil-cpp"
> 

I think that's also not the right way to do this.
Adding unnecessary stuff to release images to satisfy SDK needs is wrong.

I also wonder if the problem is not at the SDK level.
If you build an sdk, there is explicitly installed package base and additional 
required dependencies of those packages.
The dependencies may not be complete and fully usable, only their parts 
sufficient for the explicitly installed stuff is present.
Are the sdk users assuming that full abseil-cpp is installed and thus using 
also parts not needed for protobuf?
The proper solution would be probably to include abseil-cpp explicitly in SDK 
used in that way.

Peter

> > //Yi
> >
> > >>   RDEPENDS:${PN}-compiler = "${PN}"
> > >>   RDEPENDS:${PN}-dev += "${PN}-compiler"
> > >>   RDEPENDS:${PN}-ptest = "bash
> ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3-protobuf', '', d)}"
> > >> --
> > >> 2.25.1
> > > //Peter
> 
> //Peter

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#112631): 
https://lists.openembedded.org/g/openembedded-devel/message/112631
Mute This Topic: https://lists.openembedded.org/mt/108587631/21656
Group Owner: openembedded-devel+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to