diff options
| author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2013-05-09 17:24:25 +0100 | 
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-05-12 09:37:20 +0100 | 
| commit | 8d25442ab795ff0f8e072da2022108eff128e2b2 (patch) | |
| tree | 494391064705aedf6ea10adb2e2e1339bdb9fea1 | |
| parent | 89be8aa7c6d49c6372df687798d006d8cfe12943 (diff) | |
| download | openembedded-core-8d25442ab795ff0f8e072da2022108eff128e2b2.tar.gz openembedded-core-8d25442ab795ff0f8e072da2022108eff128e2b2.tar.bz2 openembedded-core-8d25442ab795ff0f8e072da2022108eff128e2b2.zip | |
classes/image: show an error on invalid IMAGE_FEATURES
If the user specifies an invalid feature in IMAGE_FEATURES, show an
error during parsing. Valid IMAGE_FEATURES are drawn from
PACKAGE_GROUP_ definitions, COMPLEMENTARY_GLOBS and a new 'validitems'
varflag on IMAGE_FEATURES (so that additional non-package group features
can be added elsewhere.)
Implements [YOCTO #3308].
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
| -rw-r--r-- | meta/classes/image.bbclass | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 251bc9abfd..2b42e123ed 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -19,6 +19,7 @@ INHIBIT_DEFAULT_DEPS = "1"  # IMAGE_FEATURES may contain any available package group  IMAGE_FEATURES ?= ""  IMAGE_FEATURES[type] = "list" +IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs"  # rootfs bootstrap install  ROOTFS_BOOTSTRAP_INSTALL = "${@base_contains("IMAGE_FEATURES", "package-management", "", "${ROOTFS_PKGMANAGE_BOOTSTRAP}",d)}" @@ -62,6 +63,19 @@ IMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("IMAGE_FEATURES", d)}'  SDKIMAGE_FEATURES ??= "dev-pkgs dbg-pkgs"  SDKIMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("SDKIMAGE_FEATURES", d)}' +def check_image_features(d): +    valid_features = (d.getVarFlag('IMAGE_FEATURES', 'validitems', True) or "").split() +    valid_features += d.getVarFlags('COMPLEMENTARY_GLOB').keys() +    for var in d: +       if var.startswith("PACKAGE_GROUP_"): +           valid_features.append(var[14:]) +    valid_features.sort() + +    features = set(oe.data.typed_value('IMAGE_FEATURES', d)) +    for feature in features: +        if feature not in valid_features: +            bb.fatal("'%s' in IMAGE_FEATURES is not a valid image feature. Valid features: %s" % (feature, ' '.join(valid_features))) +  IMAGE_INSTALL ?= ""  IMAGE_INSTALL[type] = "list"  export PACKAGE_INSTALL ?= "${IMAGE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL} ${FEATURE_INSTALL}" @@ -129,6 +143,8 @@ python () {              vendor = localdata.getVar("TARGET_VENDOR_virtclass-multilib-" + eext[1], False)              ml_vendor_list += " " + vendor      d.setVar('MULTILIB_VENDORS', ml_vendor_list) + +    check_image_features(d)  }  # | 
