If you have an unset variable in DISTRO_FEATURES, very strange things appear to happen. Currently, this shows up as seccomp appearing in PACKAGECONFIG for gnutls-native which isn't what the user configured.
The issue happens if you have a variable in DISTRO_FEATURES which cannot be expanded. Add some code to detect, warn and work around such a thing. Create a function to allow this to be done in one place. [YOCTO #16275] Signed-off-by: Richard Purdie <[email protected]> --- meta/classes-recipe/crosssdk.bbclass | 3 +-- meta/classes-recipe/native.bbclass | 3 +-- meta/classes-recipe/nativesdk.bbclass | 3 +-- meta/lib/oe/utils.py | 9 +++++++++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/meta/classes-recipe/crosssdk.bbclass b/meta/classes-recipe/crosssdk.bbclass index f7be3a23bf6..6246c09de4b 100644 --- a/meta/classes-recipe/crosssdk.bbclass +++ b/meta/classes-recipe/crosssdk.bbclass @@ -16,8 +16,7 @@ PACKAGE_ARCH = "${SDK_ARCH}" python () { # set TUNE_PKGARCH to SDK_ARCH d.setVar('TUNE_PKGARCH', d.getVar('SDK_ARCH')) - defaults = d.getVar("DISTRO_FEATURES") - d.setVar("DISTRO_FEATURES", '${@oe.utils.class_filter_features("' + defaults + '", "DISTRO_FEATURES_NATIVESDK", "DISTRO_FEATURES_FILTER_NATIVESDK", d)}') + oe.utils.set_class_filter("DISTRO_FEATURES", "DISTRO_FEATURES_NATIVESDK", "DISTRO_FEATURES_FILTER_NATIVESDK", d) } STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}" diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass index 6b334e782a4..b357b2da7b9 100644 --- a/meta/classes-recipe/native.bbclass +++ b/meta/classes-recipe/native.bbclass @@ -126,8 +126,7 @@ python native_virtclass_handler () { return bpn = d.getVar("BPN") - defaults = d.getVar("DISTRO_FEATURES") - d.setVar("DISTRO_FEATURES", '${@oe.utils.class_filter_features("' + defaults + '", "DISTRO_FEATURES_NATIVE", "DISTRO_FEATURES_FILTER_NATIVE", d)}') + oe.utils.set_class_filter("DISTRO_FEATURES", "DISTRO_FEATURES_NATIVE", "DISTRO_FEATURES_FILTER_NATIVE", d) classextend = d.getVar('BBCLASSEXTEND') or "" if "native" not in classextend: diff --git a/meta/classes-recipe/nativesdk.bbclass b/meta/classes-recipe/nativesdk.bbclass index 25fd463ac78..5b49affd537 100644 --- a/meta/classes-recipe/nativesdk.bbclass +++ b/meta/classes-recipe/nativesdk.bbclass @@ -77,8 +77,7 @@ python nativesdk_virtclass_handler () { if not (pn.endswith("-nativesdk") or pn.startswith("nativesdk-")): return - defaults = d.getVar("DISTRO_FEATURES") - d.setVar("DISTRO_FEATURES", '${@oe.utils.class_filter_features("' + defaults + '", "DISTRO_FEATURES_NATIVESDK", "DISTRO_FEATURES_FILTER_NATIVESDK", d)}') + oe.utils.set_class_filter("DISTRO_FEATURES", "DISTRO_FEATURES_NATIVESDK", "DISTRO_FEATURES_FILTER_NATIVESDK", d) e.data.setVar("MLPREFIX", "nativesdk-") e.data.setVar("PN", "nativesdk-" + e.data.getVar("PN").replace("-nativesdk", "").replace("nativesdk-", "")) diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 23f4b639c69..120b6443935 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -161,6 +161,15 @@ def class_filter_features(defaults, features_var, filter_var, d): filtered = set(bb.utils.filter_string(defaults, d.getVar(filter_var)).split()) return " ".join(sorted(features | filtered)) +def set_class_filter(var, features_var, filter_var, d): + defaults = d.getVar(var) + if "}" in defaults: + issues = [c for c in defaults.split() if "}" in c] + for issue in issues: + defaults = defaults.replace(issue, "") + bb.warn("Unexpanded variable %s in %s is not recommended" % (issue, var)) + d.setVar(var, '${@oe.utils.class_filter_features("' + defaults + '", "' + features_var + '", "' + filter_var + '", d)}') + def all_distro_features(d, features, truevalue="1", falsevalue=""): """ Returns truevalue if *all* given features are set in DISTRO_FEATURES,
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#236641): https://lists.openembedded.org/g/openembedded-core/message/236641 Mute This Topic: https://lists.openembedded.org/mt/119210447/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
