<p>is that possible to have a virtual/ssh-server mechanism, provide either openssh or dropbear would server this dependency, quite similiar with what gentoo linux handle this, instead of override foo with bar</p>
<div class="gmail_quote">在 2012-6-27 下午11:43,"Saul Wold" <<a href="mailto:sgw@linux.intel.com">sgw@linux.intel.com</a>>写道:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
From: Lianhao Lu <<a href="mailto:lianhao.lu@intel.com">lianhao.lu@intel.com</a>><br>
<br>
IMAGE_FEATURES such as 'ssh-server-dropbear' and 'ssh-server-openssh'<br>
can't be both enabled. User can use the following variables to define<br>
the relationship of image features:<br>
<br>
IMAGE_FEATURES_REPLACES_foo = "bar" means including image feature "foo"<br>
would replace the image feature "bar".<br>
<br>
IMAGE_FEATURES_CONFLICTS_foo = "bar" means including both image features<br>
"foo" and "bar" would cause an parsing error.<br>
<br>
Signed-off-by: Lianhao Lu <<a href="mailto:lianhao.lu@intel.com">lianhao.lu@intel.com</a>><br>
---<br>
meta/classes/core-image.bbclass | 11 ++++++++++-<br>
meta/classes/image.bbclass | 17 +++++++++++++++++<br>
meta/recipes-sato/images/<a href="http://core-image-sato-sdk.bb" target="_blank">core-image-sato-sdk.bb</a> | 2 ++<br>
3 files changed, 29 insertions(+), 1 deletions(-)<br>
<br>
diff --git a/meta/classes/core-image.bbclass b/meta/classes/core-image.bbclass<br>
index 25f5c5a..6b207d7 100644<br>
--- a/meta/classes/core-image.bbclass<br>
+++ b/meta/classes/core-image.bbclass<br>
@@ -47,6 +47,14 @@ PACKAGE_GROUP_ssh-server-openssh = "task-core-ssh-openssh"<br>
PACKAGE_GROUP_package-management = "${ROOTFS_PKGMANAGE}"<br>
PACKAGE_GROUP_qt4-pkgs = "task-core-qt-demos"<br>
<br>
+<br>
+# IMAGE_FEAETURES_REPLACES_foo = 'bar1 bar2'<br>
+# Including image feature foo would replace the image features bar1 and bar2<br>
+IMAGE_FEATURES_REPLACES_ssh-server-openssh = "ssh-server-dropbear"<br>
+<br>
+# IMAGE_FEATURES_CONFLICTS_foo = 'bar1 bar2'<br>
+# An error exception would be raised if both image features foo and bar1(or bar2) are included<br>
+<br>
CORE_IMAGE_BASE_INSTALL = '\<br>
task-core-boot \<br>
task-base-extended \<br>
@@ -60,7 +68,8 @@ IMAGE_INSTALL ?= "${CORE_IMAGE_BASE_INSTALL}"<br>
<br>
X11_IMAGE_FEATURES = "x11-base apps-x11-core package-management"<br>
ENHANCED_IMAGE_FEATURES = "${X11_IMAGE_FEATURES} apps-x11-games apps-x11-pimlico package-management"<br>
-SATO_IMAGE_FEATURES = "${ENHANCED_IMAGE_FEATURES} x11-sato ssh-server-dropbear"<br>
+SSHSERVER_IMAGE_FEATURES ??= "ssh-server-dropbear"<br>
+SATO_IMAGE_FEATURES = "${ENHANCED_IMAGE_FEATURES} x11-sato ${SSHSERVER_IMAGE_FEATURES}"<br>
<br>
inherit image<br>
<br>
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass<br>
index 0772363..6fac974 100644<br>
--- a/meta/classes/image.bbclass<br>
+++ b/meta/classes/image.bbclass<br>
@@ -87,6 +87,23 @@ python () {<br>
deps += " %s:do_populate_sysroot" % dep<br>
d.setVarFlag('do_rootfs', 'depends', deps)<br>
<br>
+ #process IMAGE_FEATURES, we must do this before runtime_mapping_rename<br>
+ #Check for replaces image features<br>
+ features = set(oe.data.typed_value('IMAGE_FEATURES', d))<br>
+ remain_features = features.copy()<br>
+ for feature in features:<br>
+ replaces = set((d.getVar("IMAGE_FEATURES_REPLACES_%s" % feature, True) or "").split())<br>
+ remain_features -= replaces<br>
+<br>
+ #Check for conflict image features<br>
+ for feature in remain_features:<br>
+ conflicts = set((d.getVar("IMAGE_FEATURES_CONFLICTS_%s" % feature, True) or "").split())<br>
+ temp = conflicts & remain_features<br>
+ if temp:<br>
+ raise bb.parse.SkipPackage("%s contains conflicting IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' '.join(list(temp))))<br>
+<br>
+ d.setVar('IMAGE_FEATURES', ' '.join(list(remain_features)))<br>
+<br>
# If we don't do this we try and run the mapping hooks while parsing which is slow<br>
# bitbake should really provide something to let us know this...<br>
if d.getVar('BB_WORKERCONTEXT', True) is not None:<br>
diff --git a/meta/recipes-sato/images/<a href="http://core-image-sato-sdk.bb" target="_blank">core-image-sato-sdk.bb</a> b/meta/recipes-sato/images/<a href="http://core-image-sato-sdk.bb" target="_blank">core-image-sato-sdk.bb</a><br>
index eed1698..5bb9469 100644<br>
--- a/meta/recipes-sato/images/<a href="http://core-image-sato-sdk.bb" target="_blank">core-image-sato-sdk.bb</a><br>
+++ b/meta/recipes-sato/images/<a href="http://core-image-sato-sdk.bb" target="_blank">core-image-sato-sdk.bb</a><br>
@@ -8,6 +8,8 @@ form a standalone SDK."<br>
IMAGE_FEATURES += "apps-console-core ${SATO_IMAGE_FEATURES} dev-pkgs tools-sdk qt4-pkgs"<br>
EXTRA_IMAGE_FEATURES += "tools-debug tools-profile tools-testapps debug-tweaks"<br>
<br>
+SSHSERVER_IMAGE_FEATURES = "ssh-server-openssh"<br>
+<br>
LICENSE = "MIT"<br>
<br>
inherit core-image<br>
--<br>
1.7.7.6<br>
<br>
<br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core" target="_blank">http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core</a><br>
</blockquote></div>