bitbake: lib/bb/utils: Add filter()
The bb.utils.filter() function can be used to filter a variable containing whitespace separated words based on another set of words. It has been modeled after the bb.utils.contains_any() function. A typical example of how it can be used is to simplify constructs for PACKAGECONFIG that depend on DISTRO_FEATURES: -PACKAGECONFIG ?= "\ - ${@bb.utils.contains('DISTRO_FEATURES', 'acl', 'acl', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \ -" +PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'acl selinux', d)}" (Bitbake rev: 03ae490366d2046f5b5c185fe4ec2adf1b0a902e) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8dd99c15af
commit
3004f57a25
|
@ -979,6 +979,30 @@ def contains_any(variable, checkvalues, truevalue, falsevalue, d):
|
||||||
return truevalue
|
return truevalue
|
||||||
return falsevalue
|
return falsevalue
|
||||||
|
|
||||||
|
def filter(variable, checkvalues, d):
|
||||||
|
"""Return all words in the variable that are present in the checkvalues.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
variable -- the variable name. This will be fetched and expanded (using
|
||||||
|
d.getVar(variable)) and then split into a set().
|
||||||
|
|
||||||
|
checkvalues -- if this is a string it is split on whitespace into a set(),
|
||||||
|
otherwise coerced directly into a set().
|
||||||
|
|
||||||
|
d -- the data store.
|
||||||
|
"""
|
||||||
|
|
||||||
|
val = d.getVar(variable)
|
||||||
|
if not val:
|
||||||
|
return ''
|
||||||
|
val = set(val.split())
|
||||||
|
if isinstance(checkvalues, str):
|
||||||
|
checkvalues = set(checkvalues.split())
|
||||||
|
else:
|
||||||
|
checkvalues = set(checkvalues)
|
||||||
|
return ' '.join(sorted(checkvalues & val))
|
||||||
|
|
||||||
def cpu_count():
|
def cpu_count():
|
||||||
return multiprocessing.cpu_count()
|
return multiprocessing.cpu_count()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue