summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r--bitbake/lib/bb/utils.py32
1 files changed, 24 insertions, 8 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index 607ffc5065..5b94432b37 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -29,6 +29,7 @@ import multiprocessing
29import fcntl 29import fcntl
30import subprocess 30import subprocess
31import glob 31import glob
32import fnmatch
32import traceback 33import traceback
33import errno 34import errno
34import signal 35import signal
@@ -1262,11 +1263,26 @@ def get_file_layer(filename, d):
1262 for collection in collections: 1263 for collection in collections:
1263 collection_res[collection] = d.getVar('BBFILE_PATTERN_%s' % collection, True) or '' 1264 collection_res[collection] = d.getVar('BBFILE_PATTERN_%s' % collection, True) or ''
1264 1265
1265 # Use longest path so we handle nested layers 1266 def path_to_layer(path):
1266 matchlen = 0 1267 # Use longest path so we handle nested layers
1267 match = None 1268 matchlen = 0
1268 for collection, regex in collection_res.iteritems(): 1269 match = None
1269 if len(regex) > matchlen and re.match(regex, filename): 1270 for collection, regex in collection_res.iteritems():
1270 matchlen = len(regex) 1271 if len(regex) > matchlen and re.match(regex, path):
1271 match = collection 1272 matchlen = len(regex)
1272 return match 1273 match = collection
1274 return match
1275
1276 result = None
1277 bbfiles = (d.getVar('BBFILES', True) or '').split()
1278 bbfilesmatch = False
1279 for bbfilesentry in bbfiles:
1280 if fnmatch.fnmatch(filename, bbfilesentry):
1281 bbfilesmatch = True
1282 result = path_to_layer(bbfilesentry)
1283
1284 if not bbfilesmatch:
1285 # Probably a bbclass
1286 result = path_to_layer(filename)
1287
1288 return result