Richard Purdie wrote on 2012-07-02: > On Mon, 2012-06-25 at 13:15 +0800, Lianhao Lu wrote: >> 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. >> >> Signed-off-by: Lianhao Lu <[email protected]> >> --- >> meta/classes/core-image.bbclass | 11 ++++++++++- >> meta/classes/image.bbclass | 17 +++++++++++++++++ >> meta/recipes-sato/images/core-image-sato-sdk.bb | 2 ++ >> 3 files changed, 29 insertions(+), 1 deletions(-) >> diff --git a/meta/classes/core-image.bbclass >> b/meta/classes/core-image.bbclass >> index 25f5c5a..6b207d7 100644 >> --- a/meta/classes/core-image.bbclass >> +++ b/meta/classes/core-image.bbclass >> @@ -47,6 +47,14 @@ PACKAGE_GROUP_ssh-server-openssh = "task-core-ssh-openssh" >> PACKAGE_GROUP_package-management = "${ROOTFS_PKGMANAGE}" >> PACKAGE_GROUP_qt4-pkgs = "task-core-qt-demos" >> + >> +# IMAGE_FEAETURES_REPLACES_foo = 'bar1 bar2' >> +# Including image feature foo would replace the image features bar1 and bar2 >> +IMAGE_FEATURES_REPLACES_ssh-server-openssh = "ssh-server-dropbear" >> + >> +# IMAGE_FEATURES_CONFLICTS_foo = 'bar1 bar2' >> +# An error exception would be raised if both image features foo and bar1(or >> bar2) are included >> + >> CORE_IMAGE_BASE_INSTALL = '\ >> task-core-boot \ >> task-base-extended \ >> @@ -60,7 +68,8 @@ IMAGE_INSTALL ?= "${CORE_IMAGE_BASE_INSTALL}" >> >> X11_IMAGE_FEATURES = "x11-base apps-x11-core package-management" >> ENHANCED_IMAGE_FEATURES = "${X11_IMAGE_FEATURES} apps-x11-games >> apps-x11-pimlico package-management" >> -SATO_IMAGE_FEATURES = "${ENHANCED_IMAGE_FEATURES} x11-sato >> ssh-server-dropbear" >> +SSHSERVER_IMAGE_FEATURES ??= "ssh-server-dropbear" >> +SATO_IMAGE_FEATURES = "${ENHANCED_IMAGE_FEATURES} x11-sato >> ${SSHSERVER_IMAGE_FEATURES}" >> >> inherit image >> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass >> index 0772363..6fac974 100644 >> --- a/meta/classes/image.bbclass >> +++ b/meta/classes/image.bbclass >> @@ -87,6 +87,23 @@ python () { >> deps += " %s:do_populate_sysroot" % dep >> d.setVarFlag('do_rootfs', 'depends', deps) >> + #process IMAGE_FEATURES, we must do this before runtime_mapping_rename >> + #Check for replaces image features >> + features = set(oe.data.typed_value('IMAGE_FEATURES', d)) >> + remain_features = features.copy() >> + for feature in features: >> + replaces = set((d.getVar("IMAGE_FEATURES_REPLACES_%s" % feature, >> True) or "").split()) >> + remain_features -= replaces >> + >> + #Check for conflict image features >> + for feature in remain_features: >> + conflicts = set((d.getVar("IMAGE_FEATURES_CONFLICTS_%s" % feature, >> True) or "").split()) >> + temp = conflicts & remain_features >> + if temp: >> + raise bb.parse.SkipPackage("%s contains conflicting >> IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' > '.join(list(temp)))) > > > I'm not sure that SkipPackage is the right error here. This will simply > make the image target "disappear" when in this case we really want to > raise a "proper" error? >
How about directly bb.fatal? Just like the base.bbclass handles the recipes without setting the LICENSE field. Best Regards, Lianhao _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
