diff options
author | Lianhao Lu <lianhao.lu@intel.com> | 2012-07-03 12:43:32 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-07-03 14:55:01 +0100 |
commit | 286b2666dc109ef467ea040be8abc0039d53ace6 (patch) | |
tree | 631b0b49e04f555a8069fbfd901f0769f4a50e5f /meta/classes/image.bbclass | |
parent | 6121186ff9b1577b304bc237caa80e4207d04470 (diff) | |
download | poky-286b2666dc109ef467ea040be8abc0039d53ace6.tar.gz |
image/core-image: Handle conflicting IMAGE_FEATURES.
IMAGE_FEATURES such as 'ssh-server-dropbear' and 'ssh-server-openssh'
can't be both enabled. User can use the following variables to define
the relationship of image features:
IMAGE_FEATURES_REPLACES_foo = "bar" means including image feature "foo"
would replace the image feature "bar".
IMAGE_FEATURES_CONFLICTS_foo = "bar" means including both image features
"foo" and "bar" would cause an parsing error.
(From OE-Core rev: e36d12a9c1cf69540079e48a1dfadbc343758e48)
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/image.bbclass')
-rw-r--r-- | meta/classes/image.bbclass | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 24fd868087..f1b829fe18 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass | |||
@@ -94,6 +94,23 @@ python () { | |||
94 | deps += " %s:do_populate_sysroot" % dep | 94 | deps += " %s:do_populate_sysroot" % dep |
95 | d.appendVarFlag('do_build', 'depends', deps) | 95 | d.appendVarFlag('do_build', 'depends', deps) |
96 | 96 | ||
97 | #process IMAGE_FEATURES, we must do this before runtime_mapping_rename | ||
98 | #Check for replaces image features | ||
99 | features = set(oe.data.typed_value('IMAGE_FEATURES', d)) | ||
100 | remain_features = features.copy() | ||
101 | for feature in features: | ||
102 | replaces = set((d.getVar("IMAGE_FEATURES_REPLACES_%s" % feature, True) or "").split()) | ||
103 | remain_features -= replaces | ||
104 | |||
105 | #Check for conflict image features | ||
106 | for feature in remain_features: | ||
107 | conflicts = set((d.getVar("IMAGE_FEATURES_CONFLICTS_%s" % feature, True) or "").split()) | ||
108 | temp = conflicts & remain_features | ||
109 | if temp: | ||
110 | bb.fatal("%s contains conflicting IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' '.join(list(temp)))) | ||
111 | |||
112 | d.setVar('IMAGE_FEATURES', ' '.join(list(remain_features))) | ||
113 | |||
97 | # If we don't do this we try and run the mapping hooks while parsing which is slow | 114 | # If we don't do this we try and run the mapping hooks while parsing which is slow |
98 | # bitbake should really provide something to let us know this... | 115 | # bitbake should really provide something to let us know this... |
99 | if d.getVar('BB_WORKERCONTEXT', True) is not None: | 116 | if d.getVar('BB_WORKERCONTEXT', True) is not None: |