From: Aníbal Limón Date: Mon, 20 Mar 2017 23:33:26 +0000 (-0600) Subject: scripts/yocto-compat-layer.py: Handle layer dependencies when test X-Git-Tag: lucaceresoli/bug-15201-perf-libtraceevent-missing~21940 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e7cf9bb71521f1632dd2e6b01fe7fcc95732983;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git scripts/yocto-compat-layer.py: Handle layer dependencies when test If some layer depends on other tries to find layer dependency, if the layer dependency isn't found avoid to test the layer and notice the user. Signed-off-by: Aníbal Limón Signed-off-by: Ross Burton --- diff --git a/scripts/lib/compatlayer/__init__.py b/scripts/lib/compatlayer/__init__.py index b8ce7713199..435679edbfb 100644 --- a/scripts/lib/compatlayer/__init__.py +++ b/scripts/lib/compatlayer/__init__.py @@ -132,10 +132,37 @@ def detect_layers(layer_directories, no_auto): return layers -def add_layer(bblayersconf, layer): +def _find_layer_depends(depend, layers): + for layer in layers: + for collection in layer['collections']: + if depend == collection: + return layer + return None + +def add_layer(bblayersconf, layer, layers, logger): + logger.info('Adding layer %s' % layer['name']) + + for collection in layer['collections']: + for depend in layer['collections'][collection]['depends'].split(): + # core (oe-core) is suppose to be provided + if depend == 'core': + continue + + layer_depend = _find_layer_depends(depend, layers) + if not layer_depend: + logger.error('Layer %s depends on %s and isn\'t found.' % \ + (layer['name'], depend)) + return False + + logger.info('Adding layer dependency %s' % layer_depend['name']) + with open(bblayersconf, 'a+') as f: + f.write("\nBBLAYERS += \"%s\"\n" % layer_depend['path']) + with open(bblayersconf, 'a+') as f: f.write("\nBBLAYERS += \"%s\"\n" % layer['path']) + return True + def get_signatures(builddir, failsafe=False): import subprocess import re diff --git a/scripts/yocto-compat-layer.py b/scripts/yocto-compat-layer.py index b4de84a0a59..9e740333406 100755 --- a/scripts/yocto-compat-layer.py +++ b/scripts/yocto-compat-layer.py @@ -116,6 +116,7 @@ def main(): td['sigs'] = get_signatures(td['builddir']) logger.info('') + layers_tested = 0 for layer in layers: if layer['type'] == LayerType.ERROR_NO_LAYER_CONF or \ layer['type'] == LayerType.ERROR_BSP_DISTRO: @@ -123,16 +124,20 @@ def main(): shutil.copyfile(bblayersconf + '.backup', bblayersconf) - add_layer(bblayersconf, layer) + if not add_layer(bblayersconf, layer, layers, logger): + continue + result = test_layer_compatibility(td, layer) results[layer['name']] = result - - logger.info('') - logger.info('Summary of results:') - logger.info('') - for layer_name in results: - logger.info('%s ... %s' % (layer_name, 'PASS' if \ - results[layer_name].wasSuccessful() else 'FAIL')) + layers_tested = layers_tested + 1 + + if layers_tested: + logger.info('') + logger.info('Summary of results:') + logger.info('') + for layer_name in results: + logger.info('%s ... %s' % (layer_name, 'PASS' if \ + results[layer_name].wasSuccessful() else 'FAIL')) cleanup_bblayers(None, None)