|
@@ -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
|
|
|
|