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.

(From OE-Core rev: 1e7cf9bb71521f1632dd2e6b01fe7fcc95732983)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Aníbal Limón 2017-03-20 17:33:26 -06:00 committed by Richard Purdie
parent 4703aa2b3b
commit f57eac5dc9
2 changed files with 40 additions and 8 deletions

View File

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

View File

@ -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
layers_tested = layers_tested + 1
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'))
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)