diff options
Diffstat (limited to 'scripts/yocto-check-layer')
| -rwxr-xr-x | scripts/yocto-check-layer | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/scripts/yocto-check-layer b/scripts/yocto-check-layer index 2445ad5e43..8c8b4dbcad 100755 --- a/scripts/yocto-check-layer +++ b/scripts/yocto-check-layer | |||
| @@ -24,7 +24,7 @@ import scriptpath | |||
| 24 | scriptpath.add_oe_lib_path() | 24 | scriptpath.add_oe_lib_path() |
| 25 | scriptpath.add_bitbake_lib_path() | 25 | scriptpath.add_bitbake_lib_path() |
| 26 | 26 | ||
| 27 | from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_layer_dependencies, get_signatures, check_bblayers | 27 | from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_layer_dependencies, get_signatures, check_bblayers, sanity_check_layers |
| 28 | from oeqa.utils.commands import get_bb_vars | 28 | from oeqa.utils.commands import get_bb_vars |
| 29 | 29 | ||
| 30 | PROGNAME = 'yocto-check-layer' | 30 | PROGNAME = 'yocto-check-layer' |
| @@ -35,12 +35,19 @@ logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout) | |||
| 35 | def test_layer(td, layer, test_software_layer_signatures): | 35 | def test_layer(td, layer, test_software_layer_signatures): |
| 36 | from checklayer.context import CheckLayerTestContext | 36 | from checklayer.context import CheckLayerTestContext |
| 37 | logger.info("Starting to analyze: %s" % layer['name']) | 37 | logger.info("Starting to analyze: %s" % layer['name']) |
| 38 | logger.info('Distro: %s' % td['bbvars']["DISTRO"]) | ||
| 38 | logger.info("----------------------------------------------------------------------") | 39 | logger.info("----------------------------------------------------------------------") |
| 39 | 40 | ||
| 40 | tc = CheckLayerTestContext(td=td, logger=logger, layer=layer, test_software_layer_signatures=test_software_layer_signatures) | 41 | tc = CheckLayerTestContext(td=td, logger=logger, layer=layer, test_software_layer_signatures=test_software_layer_signatures) |
| 41 | tc.loadTests(CASES_PATHS) | 42 | tc.loadTests(CASES_PATHS) |
| 42 | return tc.runTests() | 43 | return tc.runTests() |
| 43 | 44 | ||
| 45 | def dump_layer_debug(layer): | ||
| 46 | logger.debug("Found layer %s (%s)" % (layer["name"], layer["path"])) | ||
| 47 | collections = layer.get("collections", {}) | ||
| 48 | if collections: | ||
| 49 | logger.debug("%s collections: %s" % (layer["name"], ", ".join(collections))) | ||
| 50 | |||
| 44 | def main(): | 51 | def main(): |
| 45 | parser = argparse.ArgumentParser( | 52 | parser = argparse.ArgumentParser( |
| 46 | description="Yocto Project layer checking tool", | 53 | description="Yocto Project layer checking tool", |
| @@ -106,6 +113,17 @@ def main(): | |||
| 106 | else: | 113 | else: |
| 107 | dep_layers = layers | 114 | dep_layers = layers |
| 108 | 115 | ||
| 116 | logger.debug("Found additional layers:") | ||
| 117 | for l in additional_layers: | ||
| 118 | dump_layer_debug(l) | ||
| 119 | logger.debug("Found dependency layers:") | ||
| 120 | for l in dep_layers: | ||
| 121 | dump_layer_debug(l) | ||
| 122 | |||
| 123 | if not sanity_check_layers(additional_layers + dep_layers, logger): | ||
| 124 | logger.error("Failed layer validation") | ||
| 125 | return 1 | ||
| 126 | |||
| 109 | logger.info("Detected layers:") | 127 | logger.info("Detected layers:") |
| 110 | for layer in layers: | 128 | for layer in layers: |
| 111 | if layer['type'] == LayerType.ERROR_BSP_DISTRO: | 129 | if layer['type'] == LayerType.ERROR_BSP_DISTRO: |
| @@ -151,14 +169,13 @@ def main(): | |||
| 151 | 169 | ||
| 152 | layers_tested = 0 | 170 | layers_tested = 0 |
| 153 | for layer in layers: | 171 | for layer in layers: |
| 154 | if layer['type'] == LayerType.ERROR_NO_LAYER_CONF or \ | 172 | if layer['type'] in (LayerType.ERROR_NO_LAYER_CONF, LayerType.ERROR_BSP_DISTRO): |
| 155 | layer['type'] == LayerType.ERROR_BSP_DISTRO: | ||
| 156 | continue | 173 | continue |
| 157 | 174 | ||
| 158 | # Reset to a clean backup copy for each run | 175 | # Reset to a clean backup copy for each run |
| 159 | shutil.copyfile(bblayersconf + '.backup', bblayersconf) | 176 | shutil.copyfile(bblayersconf + '.backup', bblayersconf) |
| 160 | 177 | ||
| 161 | if check_bblayers(bblayersconf, layer['path'], logger): | 178 | if layer['type'] not in (LayerType.CORE, ) and check_bblayers(bblayersconf, layer['path'], logger): |
| 162 | logger.info("%s already in %s. To capture initial signatures, layer under test should not present " | 179 | logger.info("%s already in %s. To capture initial signatures, layer under test should not present " |
| 163 | "in BBLAYERS. Please remove %s from BBLAYERS." % (layer['name'], bblayersconf, layer['name'])) | 180 | "in BBLAYERS. Please remove %s from BBLAYERS." % (layer['name'], bblayersconf, layer['name'])) |
| 164 | results[layer['name']] = None | 181 | results[layer['name']] = None |
