diff options
Diffstat (limited to 'bitbake/bin')
-rwxr-xr-x | bitbake/bin/bitbake-layers | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/bitbake/bin/bitbake-layers b/bitbake/bin/bitbake-layers index 572487d2db..b4c41279b4 100755 --- a/bitbake/bin/bitbake-layers +++ b/bitbake/bin/bitbake-layers | |||
@@ -8,6 +8,7 @@ import cmd | |||
8 | import logging | 8 | import logging |
9 | import os | 9 | import os |
10 | import sys | 10 | import sys |
11 | import fnmatch | ||
11 | 12 | ||
12 | bindir = os.path.dirname(__file__) | 13 | bindir = os.path.dirname(__file__) |
13 | topdir = os.path.dirname(bindir) | 14 | topdir = os.path.dirname(bindir) |
@@ -152,6 +153,8 @@ cleanup may still be necessary afterwards, in particular: | |||
152 | * where anything beyond the normal layer setup has been added to | 153 | * where anything beyond the normal layer setup has been added to |
153 | layer.conf (only the lowest priority number layer's layer.conf is used) | 154 | layer.conf (only the lowest priority number layer's layer.conf is used) |
154 | * overridden/appended items from bbappends will need to be tidied up | 155 | * overridden/appended items from bbappends will need to be tidied up |
156 | * when the flattened layers do not have the same directory structure (the | ||
157 | flatten command should show a warning when this will cause a problem) | ||
155 | 158 | ||
156 | Warning: if you flatten several layers where another layer is intended to | 159 | Warning: if you flatten several layers where another layer is intended to |
157 | be used "inbetween" them (in layer priority order) such that recipes / | 160 | be used "inbetween" them (in layer priority order) such that recipes / |
@@ -194,6 +197,8 @@ build results (as the layer priority order has effectively changed). | |||
194 | logger.error('Unable to find layer %s in current configuration, please run "%s show_layers" to list configured layers' % (layername, os.path.basename(sys.argv[0]))) | 197 | logger.error('Unable to find layer %s in current configuration, please run "%s show_layers" to list configured layers' % (layername, os.path.basename(sys.argv[0]))) |
195 | return | 198 | return |
196 | layers = found_layerdirs | 199 | layers = found_layerdirs |
200 | else: | ||
201 | layernames = [] | ||
197 | 202 | ||
198 | # Ensure a specified path matches our list of layers | 203 | # Ensure a specified path matches our list of layers |
199 | def layer_path_match(path): | 204 | def layer_path_match(path): |
@@ -256,6 +261,39 @@ build results (as the layer priority order has effectively changed). | |||
256 | bb.utils.copyfile(appendname, fdest) | 261 | bb.utils.copyfile(appendname, fdest) |
257 | first_append = fdest | 262 | first_append = fdest |
258 | 263 | ||
264 | # Get the regex for the first layer in our list (which is where the conf/layer.conf file will | ||
265 | # have come from) | ||
266 | first_regex = None | ||
267 | layerdir = layers[0] | ||
268 | for layername, pattern, regex, _ in self.cooker.status.bbfile_config_priorities: | ||
269 | if (not layernames) or layername in layernames: | ||
270 | if regex.match(os.path.join(layerdir, 'test')): | ||
271 | first_regex = regex | ||
272 | break | ||
273 | |||
274 | if first_regex: | ||
275 | # Find the BBFILES entries that match (which will have come from this conf/layer.conf file) | ||
276 | bbfiles = str(self.config_data.getVar('BBFILES', True)).split() | ||
277 | bbfiles_layer = [] | ||
278 | for item in bbfiles: | ||
279 | if first_regex.match(item): | ||
280 | newpath = os.path.join(outputdir, item[len(layerdir)+1:]) | ||
281 | bbfiles_layer.append(newpath) | ||
282 | |||
283 | if bbfiles_layer: | ||
284 | # Check that all important layer files match BBFILES | ||
285 | for root, dirs, files in os.walk(outputdir): | ||
286 | for f1 in files: | ||
287 | ext = os.path.splitext(f1)[1] | ||
288 | if ext in ['.bb', '.bbappend']: | ||
289 | f1full = os.sep.join([root, f1]) | ||
290 | entry_found = False | ||
291 | for item in bbfiles_layer: | ||
292 | if fnmatch.fnmatch(f1full, item): | ||
293 | entry_found = True | ||
294 | break | ||
295 | if not entry_found: | ||
296 | logger.warning("File %s does not match the flattened layer's BBFILES setting, you may need to edit conf/layer.conf or move the file elsewhere" % f1full) | ||
259 | 297 | ||
260 | def get_append_layer(self, appendname): | 298 | def get_append_layer(self, appendname): |
261 | for layer, _, regex, _ in self.cooker.status.bbfile_config_priorities: | 299 | for layer, _, regex, _ in self.cooker.status.bbfile_config_priorities: |