1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-02 01:19:52 +00:00

checklayer: Avoid adding the layer if it is already present

* Rename add_layer() to add_layers() so that add_layer_dependencies() can
  re-use it.

* Avoid adding the layer if it is already present

[YOCTO #13148]

(From OE-Core rev: b9cc18d83f55ff48c3d6e60c56359f6736d5a06a)

(From OE-Core rev: 64310d9d18bb1751595c197e6955774ad5514844)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang
2019-02-12 18:16:42 +08:00
committed by Richard Purdie
parent 35015f1751
commit 422710e0db
2 changed files with 20 additions and 22 deletions
+17 -19
View File
@@ -196,29 +196,27 @@ def add_layer_dependencies(bblayersconf, layer, layers, logger):
if layer_depends is None: if layer_depends is None:
return False return False
else: else:
# Don't add a layer that is already present. add_layers(bblayersconf, layer_depends, logger)
added = set()
output = check_command('Getting existing layers failed.', 'bitbake-layers show-layers').decode('utf-8')
for layer, path, pri in re.findall(r'^(\S+) +([^\n]*?) +(\d+)$', output, re.MULTILINE):
added.add(path)
for layer_depend in layer_depends:
name = layer_depend['name']
path = layer_depend['path']
if path in added:
continue
else:
added.add(path)
logger.info('Adding layer dependency %s' % name)
with open(bblayersconf, 'a+') as f:
f.write("\nBBLAYERS += \"%s\"\n" % path)
return True return True
def add_layer(bblayersconf, layer, layers, logger): def add_layers(bblayersconf, layers, logger):
logger.info('Adding layer %s' % layer['name']) # Don't add a layer that is already present.
with open(bblayersconf, 'a+') as f: added = set()
f.write("\nBBLAYERS += \"%s\"\n" % layer['path']) output = check_command('Getting existing layers failed.', 'bitbake-layers show-layers').decode('utf-8')
for layer, path, pri in re.findall(r'^(\S+) +([^\n]*?) +(\d+)$', output, re.MULTILINE):
added.add(path)
with open(bblayersconf, 'a+') as f:
for layer in layers:
logger.info('Adding layer %s' % layer['name'])
name = layer['name']
path = layer['path']
if path in added:
logger.info('%s is already in %s' % (name, bblayersconf))
else:
added.add(path)
f.write("\nBBLAYERS += \"%s\"\n" % path)
return True return True
def check_command(error_msg, cmd, cwd=None): def check_command(error_msg, cmd, cwd=None):
+3 -3
View File
@@ -22,7 +22,7 @@ import scriptpath
scriptpath.add_oe_lib_path() scriptpath.add_oe_lib_path()
scriptpath.add_bitbake_lib_path() scriptpath.add_bitbake_lib_path()
from checklayer import LayerType, detect_layers, add_layer, add_layer_dependencies, get_signatures from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_signatures
from oeqa.utils.commands import get_bb_vars from oeqa.utils.commands import get_bb_vars
PROGNAME = 'yocto-check-layer' PROGNAME = 'yocto-check-layer'
@@ -157,7 +157,7 @@ def main():
layers_tested = layers_tested + 1 layers_tested = layers_tested + 1
continue continue
if any(map(lambda additional_layer: not add_layer(bblayersconf, additional_layer, dep_layers, logger), if any(map(lambda additional_layer: not add_layers(bblayersconf, [additional_layer], logger),
additional_layers)): additional_layers)):
logger.info('Skipping %s due to missing additional layers.' % layer['name']) logger.info('Skipping %s due to missing additional layers.' % layer['name'])
results[layer['name']] = None results[layer['name']] = None
@@ -179,7 +179,7 @@ def main():
continue continue
td['machines'] = args.machines td['machines'] = args.machines
if not add_layer(bblayersconf, layer, dep_layers, logger): if not add_layers(bblayersconf, [layer], logger):
logger.info('Skipping %s ???.' % layer['name']) logger.info('Skipping %s ???.' % layer['name'])
results[layer['name']] = None results[layer['name']] = None
results_status[layer['name']] = 'SKIPPED (Unknown)' results_status[layer['name']] = 'SKIPPED (Unknown)'