[oe-commits] [bitbake] 05/06: lib/bb/utils: Add filter()

git at git.openembedded.org git at git.openembedded.org
Fri Feb 24 21:21:02 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository bitbake.

commit 03ae490366d2046f5b5c185fe4ec2adf1b0a902e
Author: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
AuthorDate: Tue Feb 21 16:18:59 2017 +0100

    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)}"
    
    Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/utils.py | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index 2845126..d6bcfa3 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -979,6 +979,30 @@ def contains_any(variable, checkvalues, truevalue, falsevalue, d):
         return truevalue
     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():
     return multiprocessing.cpu_count()
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list