diff mbox series

[2/2] native: Use dynamic filtering for PROVIDES

Message ID 20260218144107.2679786-2-richard.purdie@linuxfoundation.org
State New
Headers show
Series [1/2] native: Fix DISTRO_FEATURES backfill handling in native case | expand

Commit Message

Richard Purdie Feb. 18, 2026, 2:41 p.m. UTC
Currently, PROVIDES is one of the few variables left which isn't handled by
filter code dynamically. This lead to bugs if for example you have a
PACKAGECONFIG value which references DISTRO_FEATURES, and DISTRO_FEATURES
is being set in the the native case late by backfill. The early expansion
of the value means it can use an incorrect DISTRO_FEATURES value leading to
confusing errors.

Convert the code to use a filter in common with the other code in the class.

This does lead to some behaviour differences outside OE-Core in meta-oe for
example where the PROVIDES of gd-native changed:

"gd-native gd-native-tools"
to
"gd-native gd-tools-native"

where the change is a clear improvement in correctness.

This fixes issues when DISTRO_FEATURES has backfill options in place in
the native case.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 meta/classes-recipe/native.bbclass | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)
diff mbox series

Patch

diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass
index d109907841c..98466b1902d 100644
--- a/meta/classes-recipe/native.bbclass
+++ b/meta/classes-recipe/native.bbclass
@@ -166,18 +166,7 @@  python native_virtclass_handler () {
     d.setVarFilter("PACKAGES", "native_filter(val, '" + pn + "', '" + bpn + "')")
     d.setVarFilter("PACKAGES_DYNAMIC", "native_filter(val, '" + pn + "', '" + bpn + "', regex=True)")
 
-    provides = e.data.getVar("PROVIDES")
-    nprovides = []
-    for prov in provides.split():
-        if prov.find(pn) != -1:
-            nprovides.append(prov)
-        elif not prov.endswith("-native"):
-            nprovides.append(prov + "-native")
-        else:
-            nprovides.append(prov)
-    e.data.setVar("PROVIDES", ' '.join(nprovides))
-
-
+    d.setVarFilter("PROVIDES", "native_filter(val, '" + pn + "', '" + bpn + "')")
 }
 
 addhandler native_virtclass_handler