mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
devtool: warn user about multiple layer having the same base name
Currently `devtool finish RECIPE meta' will silently succeed even if there are multiple layers having the same base name of 'meta'. e.g. meta layer from oe-core and meta layer from meta-secure-core. We should at least give user a warning in such case. With the patch, we will get warning like below. WARNING: Multiple layers have the same base name 'meta', use the first one '<PROJ_DIR>/oe-core/meta'. WARNING: Consider using path instead of base name to specify layer: <PROJ_DIR>/oe-core/meta <PROJ_DIR>/meta-secure-core/meta (From OE-Core rev: 2c8740f543c38dbaef3345e40827ef48b3f75405) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -1866,13 +1866,27 @@ def reset(args, config, basepath, workspace):
|
||||
def _get_layer(layername, d):
|
||||
"""Determine the base layer path for the specified layer name/path"""
|
||||
layerdirs = d.getVar('BBLAYERS').split()
|
||||
layers = {os.path.basename(p): p for p in layerdirs}
|
||||
layers = {} # {basename: layer_paths}
|
||||
for p in layerdirs:
|
||||
bn = os.path.basename(p)
|
||||
if bn not in layers:
|
||||
layers[bn] = [p]
|
||||
else:
|
||||
layers[bn].append(p)
|
||||
# Provide some shortcuts
|
||||
if layername.lower() in ['oe-core', 'openembedded-core']:
|
||||
layerdir = layers.get('meta', None)
|
||||
layername = 'meta'
|
||||
layer_paths = layers.get(layername, None)
|
||||
if not layer_paths:
|
||||
return os.path.abspath(layername)
|
||||
elif len(layer_paths) == 1:
|
||||
return os.path.abspath(layer_paths[0])
|
||||
else:
|
||||
layerdir = layers.get(layername, None)
|
||||
return os.path.abspath(layerdir or layername)
|
||||
# multiple layers having the same base name
|
||||
logger.warning("Multiple layers have the same base name '%s', use the first one '%s'." % (layername, layer_paths[0]))
|
||||
logger.warning("Consider using path instead of base name to specify layer:\n\t\t%s" % '\n\t\t'.join(layer_paths))
|
||||
return os.path.abspath(layer_paths[0])
|
||||
|
||||
|
||||
def finish(args, config, basepath, workspace):
|
||||
"""Entry point for the devtool 'finish' subcommand"""
|
||||
|
||||
Reference in New Issue
Block a user