Allow restricting recipes brought from a layer to a specified list. This
is similar in operation to blacklist.bbclass, but instead specifies a
per-layer whitelist of recipes (matched by BPN) that are able to be
built from the layer - anything else is skipped. This is potentially
useful where you want to bring in a select set of recipes from a larger
layer e.g. meta-oe.

Implements [YOCTO #8150].

Signed-off-by: Paul Eggleton <paul.eggle...@linux.intel.com>
---
 meta/classes/whitelist.bbclass | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 meta/classes/whitelist.bbclass

diff --git a/meta/classes/whitelist.bbclass b/meta/classes/whitelist.bbclass
new file mode 100644
index 0000000..2554185
--- /dev/null
+++ b/meta/classes/whitelist.bbclass
@@ -0,0 +1,28 @@
+# Class that allows you to restrict the recipes brought from a layer to
+# a specified list. This is similar in operation to blacklist.bbclass
+# but note the difference in how PNWHITELIST is set - we don't use varflags
+# here, we use an override for the layer name. This layer name is actually
+# the name that gets added to BBFILE_COLLECTIONS in the layer's layer.conf,
+# which may differ from how the layer is otherwise known.
+#
+# INHERIT += "whitelist"
+# PNWHITELIST_layername = "recipe1 recipe2"
+#
+# If you would prefer to set a reason message other than the default, you
+# can do so:
+#
+# PNWHITELIST_REASON_layername = "not supported by ${DISTRO}"
+
+python() {
+    layer = bb.utils.get_file_layer(d.getVar('FILE', True), d)
+    if layer:
+        localdata = bb.data.createCopy(d)
+        localdata.setVar('OVERRIDES', layer)
+        whitelist = localdata.getVar('PNWHITELIST', True)
+        if whitelist:
+            if not d.getVar('BPN', True) in whitelist.split():
+                reason = localdata.getVar('PNWHITELIST_REASON', True)
+                if not reason:
+                    reason = 'not in PNWHITELIST set for layer %s' % layer
+                raise bb.parse.SkipRecipe(reason)
+}
-- 
2.1.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to