> On Aug 27, 2015, at 5:36 AM, Paul Eggleton <[email protected]> > wrote: > > 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 PN or 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.
For the record, I am not in favor of such feature in OE, Distros can still use BBMASK if they wish to > > Implements [YOCTO #8150]. > > Signed-off-by: Paul Eggleton <[email protected]> > --- > meta/classes/whitelist.bbclass | 34 ++++++++++++++++++++++++++++++++++ > 1 file changed, 34 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..ab6ac73 > --- /dev/null > +++ b/meta/classes/whitelist.bbclass > @@ -0,0 +1,34 @@ > +# 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, the recipe name goes in the value and we use an override for the > +# layer name (although this is not strictly required - you can have one > +# PNWHITELIST value shared by all of the layers specified in > +# PNWHITELIST_LAYERS). The layer name used here 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 - e.g. meta-oe uses > +# "openembedded-layer". > +# > +# INHERIT += "whitelist" > +# PNWHITELIST_LAYERS = "layername" > +# 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: > + layers = (d.getVar('PNWHITELIST_LAYERS', True) or '').split() > + if layer in layers: > + localdata = bb.data.createCopy(d) > + localdata.setVar('OVERRIDES', layer) > + whitelist = (localdata.getVar('PNWHITELIST', True) or '').split() > + if not (d.getVar('PN', True) in whitelist or d.getVar('BPN', > True) in whitelist): > + reason = localdata.getVar('PNWHITELIST_REASON', True) > + if not reason: > + reason = 'not in PNWHITELIST for layer %s' % layer > + raise bb.parse.SkipRecipe(reason) > +} > -- > 2.1.0 > > -- > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.openembedded.org/mailman/listinfo/openembedded-core
signature.asc
Description: Message signed with OpenPGP using GPGMail
-- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
