diff options
| -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: |
