[oe] [PATCH v3] packagegroup-tools-bluetooth: work as advertized on distro without bluez* support

Peter Kjellerstedt peter.kjellerstedt at axis.com
Sat Oct 20 14:02:34 UTC 2018


> -----Original Message-----
> From: Martin Jansa <martin.jansa at gmail.com>
> Sent: den 18 oktober 2018 00:14
> To: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
> Cc: yann at blade-group.com; openembedded-devel <openembedded-
> devel at lists.openembedded.org>
> Subject: Re: [oe] [PATCH v3] packagegroup-tools-bluetooth: work as
> advertized on distro without bluez* support
> 
> On Wed, Oct 17, 2018 at 10:03:53PM +0000, Peter Kjellerstedt wrote:
> > > -----Original Message-----
> > > From: openembedded-devel-bounces at lists.openembedded.org
> <openembedded-
> > > devel-bounces at lists.openembedded.org> On Behalf Of Martin Jansa
> > > Sent: den 17 oktober 2018 23:34
> > > To: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
> > > Cc: yann at blade-group.com; openembedded-devel <openembedded-
> > > devel at lists.openembedded.org>
> > > Subject: Re: [oe] [PATCH v3] packagegroup-tools-bluetooth: work as
> > > advertized on distro without bluez* support
> > >
> > > I wouldn't say that supporting bluez6 as BLUEZ value before
> > > RDEPENDS_bluez6 is defined here is really better.
> >
> > Well, my point was that rewriting it according to my suggestion
> > makes it agnostic to whatever value the ${BLUEZ} variable has.
> 
> And my point is that it doesn't make it better, because it will do
> something useful only with RDEPENDS_bluez4 or RDEPENDS_bluez5, adding
> dependency on undefined ${RDEPENDS_whatever} doesn't really help, does
> it?

Well, it actually does. Because if someone was to actually add 
support for bluez6 (or whatever) they would now get a build 
error because RDEPENDS_bluez6 is not defined instead of silently 
missing the dependencies that they need to add.

However, my suggested code does not work due to bitbake messing 
up the parsing of the line, resulting in an error similar to this 
if ${BLUEZ} is not defined:

ERROR: Nothing RPROVIDES 'else' (but testrecipe.bb RDEPENDS on or otherwise requires it)

It suggests that somewhere there is some code doing something like
d.getVar('RDEPENDS_%s' % pn, False).split() (that exact code does 
not exist though, I've checked). So to get it to work in practice 
one would have to do:

FOOBAR = "${@'${RDEPENDS_${BLUEZ}}' if d.getVar('BLUEZ') else ''}"
RDEPENDS_${PN} = "${FOOBAR}"

If ${RDEPENDS_${BLUEZ}} is defined, then it yields the expected 
dependencies, and if ${BLUEZ} is defined but ${RDEPENDS_${BLUEZ}} 
is not, then it yields an error similar to:

ERROR: Nothing RPROVIDES '${@'${RDEPENDS_whatever}'' (but testrecipe.bb RDEPENDS on or otherwise requires it)

> > > Whole bluez4 support here is a bit useless considering that all
> bluez4
> > > related recipes were removed more than a year ago with:
> > >
> > > commit 007498ac72e26e9f7064de74f7fe96e91ae6c969
> > > Author: Martin Jansa <Martin.Jansa at gmail.com>
> > > Date:   Mon Jul 24 19:25:35 2017 +0200
> > >
> > >     bluez4: remove bluez4-only recipes
> > >
> > >
> > > On Wed, Oct 17, 2018 at 11:20 PM Peter Kjellerstedt <
> > > peter.kjellerstedt at axis.com> wrote:
> > >
> > > > > -----Original Message-----
> > > > > From: openembedded-devel-bounces at lists.openembedded.org <
> > > > openembedded-devel-bounces at lists.openembedded.org> On Behalf Of
> > > > yann.dirson at blade-group.com
> > > > > Sent: den 17 oktober 2018 22:57
> > > > > To: openembedded-devel at lists.openembedded.org
> > > > > Cc: Yann Dirson <yann at blade-group.com>
> > > > > Subject: [oe] [PATCH v3] packagegroup-tools-bluetooth: work as
> > > > advertized on distro without bluez* support
> > > > >
> > > > > From: Yann Dirson <yann at blade-group.com>
> > > > >
> > > > > Otherwise the build fails with:
> > > > >
> > > > >   NOTE: Runtime target '${RDEPENDS_}' is unbuildable,
> removing...
> > > > >   Missing or unbuildable dependency chain was: ['${RDEPENDS_}']
> > > > >
> > > > > This restores some truth in the "Otherwise install nothing"
> comment
> > > in
> > > > > the recipe.
> > > > >
> > > > > Signed-off-by: Yann Dirson <yann at blade-group.com>
> > > > > ---
> > > > >  .../packagegroups/packagegroup-tools-bluetooth.bb            |
> 5
> > > ++++-
> > > > >  1 file changed, 4 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/meta-oe/recipes-connectivity/packagegroups/
> > > > packagegroup-tools-bluetooth.bb
> > > > b/meta-oe/recipes-connectivity/packagegroups/
> > > > packagegroup-tools-bluetooth.bb
> > > > > index 0ede5e57b..207c7c1ae 100644
> > > > > --- a/meta-oe/recipes-connectivity/packagegroups/
> > > > packagegroup-tools-bluetooth.bb
> > > > > +++ b/meta-oe/recipes-connectivity/packagegroups/
> > > > packagegroup-tools-bluetooth.bb
> > > > > @@ -34,4 +34,7 @@ RDEPENDS_bluez5 = " \
> > > > >
> > > > >  # Install bluez4 tools or bluez5 tools depending on what is
> > > specified
> > > > in the distro.
> > > > >  # Otherwise install nothing.
> > > > > -RDEPENDS_${PN} = "${RDEPENDS_${BLUEZ}}"
> > > > > +RDEPENDS_${PN} = " \
> > > > > +    ${@'${RDEPENDS_bluez5}' if d.getVar('BLUEZ', True) ==
> 'bluez5'
> > > else
> > > > ''} \
> > > > > +    ${@'${RDEPENDS_bluez4}' if d.getVar('BLUEZ', True) ==
> 'bluez4'
> > > else
> > > > ''} \
> > > > > +"
> > > >
> > > > You can simplify this (and support any value of ${BLUEZ} just in
> > > > case someone decides to add bluez6):
> > > >
> > > > RDEPENDS_${PN} = "${@'${RDEPENDS_${BLUEZ}}' if d.getVar('BLUEZ')
> else ''}"
> > > >
> > > > Also, the second argument to d.getVar() has defaulted to True for
> > > > a long time, so no point in specifying it.
> > > >
> > > > > --
> > > > > 2.19.1
> > > >
> > > > //Peter
> >
> > //Peter
> >
> 
> --
> Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com

//Peter




More information about the Openembedded-devel mailing list