summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-05-22 16:42:21 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-23 08:18:42 +0100
commit8dcd83e5edb1cf3307b610d3bb8d54733ea7356d (patch)
treea3796590bb7f7f90746cd557f163da7d19cc32a9
parent8e0211d121e4cb1124dfe879db751ad00f5c978b (diff)
downloadbitbake-8dcd83e5edb1cf3307b610d3bb8d54733ea7356d.tar.gz
lib/bb/utils: add function to get layer containing a file
In certain contexts it can be useful to find the layer that a file (e.g. a recipe) appears in. Implements [YOCTO #7723]. (Bitbake master rev: 3bf9c8830c5d5eea5502230d5af84ebd87ad5849) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/utils.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index c97f3ef81..1681efd7e 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -1097,3 +1097,19 @@ def edit_bblayers_conf(bblayers_conf, add, remove):
return (notadded, notremoved)
+
+def get_file_layer(filename, d):
+ """Determine the collection (as defined by a layer's layer.conf file) containing the specified file"""
+ collections = (d.getVar('BBFILE_COLLECTIONS', True) or '').split()
+ collection_res = {}
+ for collection in collections:
+ collection_res[collection] = d.getVar('BBFILE_PATTERN_%s' % collection, True) or ''
+
+ # Use longest path so we handle nested layers
+ matchlen = 0
+ match = None
+ for collection, regex in collection_res.iteritems():
+ if len(regex) > matchlen and re.match(regex, filename):
+ matchlen = len(regex)
+ match = collection
+ return match