diff mbox series

[4/4] native: Improve ${PN}-XXX package name handling

Message ID 20250106160948.803305-4-richard.purdie@linuxfoundation.org
State Accepted, archived
Commit e2fd81e221c25fc21d532e020ddd8aaac0c22ede
Headers show
Series [1/4] util-linux: Improve PACKAGES_DYNAMIC handling for util-linux-native | expand

Commit Message

Richard Purdie Jan. 6, 2025, 4:09 p.m. UTC
If a recipe has something like:

RPROVIDES:${PN}-xxx = "yyy"

then the current code will turn this into:

RPROVIDES:${BPN}-native-xxx = "yyy-native"

which can lead to errors. Add in some handling for this special case in the class
extension code.

The corresponding entry in PACAGES is correctly remapped, the variables aren't
remapped to match though.

Note that merging this does trigger new dependencies to be exposed, some of which
can't be met or are incorrect. These need to be fixed on a case by case basis.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 meta/classes-recipe/native.bbclass | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Quentin Schulz Jan. 13, 2025, 1:45 p.m. UTC | #1
Cc docs

On 1/6/25 5:09 PM, Richard Purdie via lists.openembedded.org wrote:
> If a recipe has something like:
> 
> RPROVIDES:${PN}-xxx = "yyy"
> 
> then the current code will turn this into:
> 
> RPROVIDES:${BPN}-native-xxx = "yyy-native"
> 
> which can lead to errors. Add in some handling for this special case in the class
> extension code.
> 
> The corresponding entry in PACAGES is correctly remapped, the variables aren't
> remapped to match though.
> 
> Note that merging this does trigger new dependencies to be exposed, some of which
> can't be met or are incorrect. These need to be fixed on a case by case basis.
> 
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
>   meta/classes-recipe/native.bbclass | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass
> index d9651a7f22d..0fad42a5a45 100644
> --- a/meta/classes-recipe/native.bbclass
> +++ b/meta/classes-recipe/native.bbclass
> @@ -158,7 +158,12 @@ python native_virtclass_handler () {
>                   newdeps.append(dep.replace(pn, bpn) + "-native")
>               else:
>                   newdeps.append(dep)
> -        d.setVar(varname, " ".join(newdeps))
> +        output_varname = varname
> +        # Handle ${PN}-xxx -> ${BPN}-xxx-native
> +        if suffix != "${PN}" and "${PN}" in suffix:
> +            output_varname = varname.replace("${PN}", "${BPN}") + "-native"
> +            d.renameVar(varname, output_varname)
> +        d.setVar(output_varname, " ".join(newdeps))
>   

This seems like a bug we should document in known issues in old release 
notes?

I assume we may patch currently supported releases so stable dot 
releases may receive the patch, but outdated releases would be unpatched 
forever.

I guess we can say that the fix is to have each of RDEPENDS, 
RRECOMMENDS, RSUGGESTS, RPROVIDES, RREPLACES, PACKAGES overrides and 
PACKAGES_DYNAMIC to have ${BPN}-xxx+${BPN}-xxx-native instead of just 
${PN}-xxx? Is that an appropriate suggestion?

I'm bringing this up because we have a Known issues section in the 
migration guides which is pretty much empty right now. I don't know what 
we should actually put in there but this seems like a candidate? What do 
you think? Antonin?

Cheers,
Quentin
Richard Purdie Jan. 13, 2025, 2:05 p.m. UTC | #2
On Mon, 2025-01-13 at 14:45 +0100, Quentin Schulz wrote:
> Cc docs
> 
> On 1/6/25 5:09 PM, Richard Purdie via lists.openembedded.org wrote:
> > If a recipe has something like:
> > 
> > RPROVIDES:${PN}-xxx = "yyy"
> > 
> > then the current code will turn this into:
> > 
> > RPROVIDES:${BPN}-native-xxx = "yyy-native"
> > 
> > which can lead to errors. Add in some handling for this special case in the class
> > extension code.
> > 
> > The corresponding entry in PACAGES is correctly remapped, the variables aren't
> > remapped to match though.
> > 
> > Note that merging this does trigger new dependencies to be exposed, some of which
> > can't be met or are incorrect. These need to be fixed on a case by case basis.
> > 
> > Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> > ---
> >   meta/classes-recipe/native.bbclass | 7 ++++++-
> >   1 file changed, 6 insertions(+), 1 deletion(-)
> > 
> > diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass
> > index d9651a7f22d..0fad42a5a45 100644
> > --- a/meta/classes-recipe/native.bbclass
> > +++ b/meta/classes-recipe/native.bbclass
> > @@ -158,7 +158,12 @@ python native_virtclass_handler () {
> >                   newdeps.append(dep.replace(pn, bpn) + "-native")
> >               else:
> >                   newdeps.append(dep)
> > -        d.setVar(varname, " ".join(newdeps))
> > +        output_varname = varname
> > +        # Handle ${PN}-xxx -> ${BPN}-xxx-native
> > +        if suffix != "${PN}" and "${PN}" in suffix:
> > +            output_varname = varname.replace("${PN}", "${BPN}") + "-native"
> > +            d.renameVar(varname, output_varname)
> > +        d.setVar(output_varname, " ".join(newdeps))
> >   
> 
> This seems like a bug we should document in known issues in old release 
> notes?
> 
> I assume we may patch currently supported releases so stable dot 
> releases may receive the patch, but outdated releases would be unpatched 
> forever.

The change in behaviour is enough that I don't think we should be
backporting this to stable releases. The issue is rare and seemingly
not being run into by many people in the wild.

> I guess we can say that the fix is to have each of RDEPENDS, 
> RRECOMMENDS, RSUGGESTS, RPROVIDES, RREPLACES, PACKAGES overrides and 
> PACKAGES_DYNAMIC to have ${BPN}-xxx+${BPN}-xxx-native instead of just
> ${PN}-xxx? Is that an appropriate suggestion?

We'd probably suggest that users "spell out" the native mappings
explicitly for any problems encountered. I'd argue they should be
mapped correctly rather than introducing the "bad" naming.

> I'm bringing this up because we have a Known issues section in the 
> migration guides which is pretty much empty right now. I don't know what 
> we should actually put in there but this seems like a candidate? What do 
> you think? Antonin?

That is something we should consider, yes.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass
index d9651a7f22d..0fad42a5a45 100644
--- a/meta/classes-recipe/native.bbclass
+++ b/meta/classes-recipe/native.bbclass
@@ -158,7 +158,12 @@  python native_virtclass_handler () {
                 newdeps.append(dep.replace(pn, bpn) + "-native")
             else:
                 newdeps.append(dep)
-        d.setVar(varname, " ".join(newdeps))
+        output_varname = varname
+        # Handle ${PN}-xxx -> ${BPN}-xxx-native
+        if suffix != "${PN}" and "${PN}" in suffix:
+            output_varname = varname.replace("${PN}", "${BPN}") + "-native"
+            d.renameVar(varname, output_varname)
+        d.setVar(output_varname, " ".join(newdeps))
 
     map_dependencies("DEPENDS", e.data, selfref=False)
     for pkg in e.data.getVar("PACKAGES", False).split():