From: Paul Barker Date: Fri, 3 Apr 2026 08:38:33 +0000 (+0100) Subject: oelib: utils: Support opting out of all features X-Git-Tag: yocto-6.0_M3~92 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4a13747b6e90d65736bf7f08ebaf76db6be01ef1;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git oelib: utils: Support opting out of all features If '*' is present as a separate token in DISTRO_FEATURES_OPTED_OUT or MACHINE_FEATURES_OPTED_OUT, interpret this as opting out of all default features. If '*' is part of a larger word, this is not treated specially - 'FOO*' will not trigger removal of all features. This is implemented in set_difference() so that the behaviour can be reused in other similar processing we may need to do in the future. Signed-off-by: Paul Barker Signed-off-by: Richard Purdie --- diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 5c722d2308..639c037c1a 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -93,6 +93,13 @@ def set_difference(variable1, variable2, d): s2 = "b c d" s3 = set_difference(s1, s2) => s3 = "a" + + If '*' is present as a separate token (not part of a larger identifier) in + the second operand, this is interpreted as "remove all entries": + s1 = "a b c" + s2 = "*" + s3 = set_difference(s1, s2) + => s3 = "" """ val1 = d.getVar(variable1) if not val1: @@ -104,6 +111,9 @@ def set_difference(variable1, variable2, d): val1 = set(val1.split()) val2 = set(val2.split()) + if "*" in val2: + return "" + # Return a sorted string to ensure that the result is consistent between # parser runs. return " ".join(sorted(val1 - val2))