@@ -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}"
@@ -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:
@@ -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-", ""))
@@ -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,