diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/bitbake-layers | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/bin/bitbake-layers b/bin/bitbake-layers index bd05c5f69..d6db859c3 100755 --- a/bin/bitbake-layers +++ b/bin/bitbake-layers @@ -62,24 +62,22 @@ class Commands(): def init_bbhandler(self, config_only = False): if not self.bbhandler: - self.bbhandler = bb.tinfoil.Tinfoil() + self.bbhandler = bb.tinfoil.Tinfoil(tracking=True) self.bblayers = (self.bbhandler.config_data.getVar('BBLAYERS', True) or "").split() self.bbhandler.prepare(config_only) + layerconfs = self.bbhandler.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.bbhandler.config_data) + self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.iteritems()} + def do_show_layers(self, args): """show current configured layers""" self.init_bbhandler(config_only = True) logger.plain("%s %s %s" % ("layer".ljust(20), "path".ljust(40), "priority")) logger.plain('=' * 74) - for layerdir in self.bblayers: + for layer, _, regex, pri in self.bbhandler.cooker.recipecache.bbfile_config_priorities: + layerdir = self.bbfile_collections.get(layer, None) layername = self.get_layer_name(layerdir) - layerpri = 0 - for layer, _, regex, pri in self.bbhandler.cooker.recipecache.bbfile_config_priorities: - if regex.match(os.path.join(layerdir, 'test')): - layerpri = pri - break - - logger.plain("%s %s %d" % (layername.ljust(20), layerdir.ljust(40), layerpri)) + logger.plain("%s %s %d" % (layername.ljust(20), layerdir.ljust(40), pri)) def do_add_layer(self, args): @@ -682,25 +680,22 @@ build results (as the layer priority order has effectively changed). 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) def get_file_layer(self, filename): - for layer, _, regex, _ in self.bbhandler.cooker.recipecache.bbfile_config_priorities: - if regex.match(filename): - for layerdir in self.bblayers: - if regex.match(os.path.join(layerdir, 'test')) and re.match(layerdir, filename): - return self.get_layer_name(layerdir) - return "?" + layerdir = self.get_file_layerdir(filename) + if layerdir: + return self.get_layer_name(layerdir) + else: + return '?' def get_file_layerdir(self, filename): - for layer, _, regex, _ in self.bbhandler.cooker.recipecache.bbfile_config_priorities: - if regex.match(filename): - for layerdir in self.bblayers: - if regex.match(os.path.join(layerdir, 'test')) and re.match(layerdir, filename): - return layerdir - return "?" + layer = bb.utils.get_file_layer(filename, self.bbhandler.config_data) + return self.bbfile_collections.get(layer, None) def remove_layer_prefix(self, f): """Remove the layer_dir prefix, e.g., f = /path/to/layer_dir/foo/blah, the return value will be: layer_dir/foo/blah""" f_layerdir = self.get_file_layerdir(f) + if not f_layerdir: + return f prefix = os.path.join(os.path.dirname(f_layerdir), '') return f[len(prefix):] if f.startswith(prefix) else f |