diff options
Diffstat (limited to 'bitbake/bin/bitbake-layers')
-rwxr-xr-x | bitbake/bin/bitbake-layers | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/bitbake/bin/bitbake-layers b/bitbake/bin/bitbake-layers index bd05c5f69e..d6db859c3b 100755 --- a/bitbake/bin/bitbake-layers +++ b/bitbake/bin/bitbake-layers | |||
@@ -62,24 +62,22 @@ class Commands(): | |||
62 | 62 | ||
63 | def init_bbhandler(self, config_only = False): | 63 | def init_bbhandler(self, config_only = False): |
64 | if not self.bbhandler: | 64 | if not self.bbhandler: |
65 | self.bbhandler = bb.tinfoil.Tinfoil() | 65 | self.bbhandler = bb.tinfoil.Tinfoil(tracking=True) |
66 | self.bblayers = (self.bbhandler.config_data.getVar('BBLAYERS', True) or "").split() | 66 | self.bblayers = (self.bbhandler.config_data.getVar('BBLAYERS', True) or "").split() |
67 | self.bbhandler.prepare(config_only) | 67 | self.bbhandler.prepare(config_only) |
68 | layerconfs = self.bbhandler.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.bbhandler.config_data) | ||
69 | self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.iteritems()} | ||
70 | |||
68 | 71 | ||
69 | def do_show_layers(self, args): | 72 | def do_show_layers(self, args): |
70 | """show current configured layers""" | 73 | """show current configured layers""" |
71 | self.init_bbhandler(config_only = True) | 74 | self.init_bbhandler(config_only = True) |
72 | logger.plain("%s %s %s" % ("layer".ljust(20), "path".ljust(40), "priority")) | 75 | logger.plain("%s %s %s" % ("layer".ljust(20), "path".ljust(40), "priority")) |
73 | logger.plain('=' * 74) | 76 | logger.plain('=' * 74) |
74 | for layerdir in self.bblayers: | 77 | for layer, _, regex, pri in self.bbhandler.cooker.recipecache.bbfile_config_priorities: |
78 | layerdir = self.bbfile_collections.get(layer, None) | ||
75 | layername = self.get_layer_name(layerdir) | 79 | layername = self.get_layer_name(layerdir) |
76 | layerpri = 0 | 80 | logger.plain("%s %s %d" % (layername.ljust(20), layerdir.ljust(40), pri)) |
77 | for layer, _, regex, pri in self.bbhandler.cooker.recipecache.bbfile_config_priorities: | ||
78 | if regex.match(os.path.join(layerdir, 'test')): | ||
79 | layerpri = pri | ||
80 | break | ||
81 | |||
82 | logger.plain("%s %s %d" % (layername.ljust(20), layerdir.ljust(40), layerpri)) | ||
83 | 81 | ||
84 | 82 | ||
85 | def do_add_layer(self, args): | 83 | def do_add_layer(self, args): |
@@ -682,25 +680,22 @@ build results (as the layer priority order has effectively changed). | |||
682 | 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) | 680 | 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) |
683 | 681 | ||
684 | def get_file_layer(self, filename): | 682 | def get_file_layer(self, filename): |
685 | for layer, _, regex, _ in self.bbhandler.cooker.recipecache.bbfile_config_priorities: | 683 | layerdir = self.get_file_layerdir(filename) |
686 | if regex.match(filename): | 684 | if layerdir: |
687 | for layerdir in self.bblayers: | 685 | return self.get_layer_name(layerdir) |
688 | if regex.match(os.path.join(layerdir, 'test')) and re.match(layerdir, filename): | 686 | else: |
689 | return self.get_layer_name(layerdir) | 687 | return '?' |
690 | return "?" | ||
691 | 688 | ||
692 | def get_file_layerdir(self, filename): | 689 | def get_file_layerdir(self, filename): |
693 | for layer, _, regex, _ in self.bbhandler.cooker.recipecache.bbfile_config_priorities: | 690 | layer = bb.utils.get_file_layer(filename, self.bbhandler.config_data) |
694 | if regex.match(filename): | 691 | return self.bbfile_collections.get(layer, None) |
695 | for layerdir in self.bblayers: | ||
696 | if regex.match(os.path.join(layerdir, 'test')) and re.match(layerdir, filename): | ||
697 | return layerdir | ||
698 | return "?" | ||
699 | 692 | ||
700 | def remove_layer_prefix(self, f): | 693 | def remove_layer_prefix(self, f): |
701 | """Remove the layer_dir prefix, e.g., f = /path/to/layer_dir/foo/blah, the | 694 | """Remove the layer_dir prefix, e.g., f = /path/to/layer_dir/foo/blah, the |
702 | return value will be: layer_dir/foo/blah""" | 695 | return value will be: layer_dir/foo/blah""" |
703 | f_layerdir = self.get_file_layerdir(f) | 696 | f_layerdir = self.get_file_layerdir(f) |
697 | if not f_layerdir: | ||
698 | return f | ||
704 | prefix = os.path.join(os.path.dirname(f_layerdir), '') | 699 | prefix = os.path.join(os.path.dirname(f_layerdir), '') |
705 | return f[len(prefix):] if f.startswith(prefix) else f | 700 | return f[len(prefix):] if f.startswith(prefix) else f |
706 | 701 | ||