summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLee Chee Yang <chee.yang.lee@intel.com>2020-07-24 12:16:24 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-08-07 21:20:21 +0100
commit75fdc94ecbd16cd59ab4f182ce4b9f5437db52b1 (patch)
treeee736f68f188f6bd1106d35aa49d59a914ef57cb
parenta8b8418baed1ff8628d1b9b773b57b4c489ce667 (diff)
downloadpoky-75fdc94ecbd16cd59ab4f182ce4b9f5437db52b1.tar.gz
checklayer: check layer in BBLAYERS before test
layer under test should absent from BBLAYERS when running yocto-check-layer. This allow to get signatures before layer under test. There are existing steps to add the layer under test to BBLAYERS after getting initial signatures. add steps to check for layer under test in BBLAYERS before running any test, skip test for the layer if the layer under test exist in BBLAYERS. [YOCTO #13176] (From OE-Core rev: a10ff925584406e563edfb4042b44c3e8ea57ce3) Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit be02e8dbfb0d1decce125322f9f1e11a649756c0) Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--scripts/lib/checklayer/__init__.py14
-rwxr-xr-xscripts/yocto-check-layer9
2 files changed, 22 insertions, 1 deletions
diff --git a/scripts/lib/checklayer/__init__.py b/scripts/lib/checklayer/__init__.py
index f625d59896..fe545607bb 100644
--- a/scripts/lib/checklayer/__init__.py
+++ b/scripts/lib/checklayer/__init__.py
@@ -229,6 +229,20 @@ def add_layers(bblayersconf, layers, logger):
229 f.write("\nBBLAYERS += \"%s\"\n" % path) 229 f.write("\nBBLAYERS += \"%s\"\n" % path)
230 return True 230 return True
231 231
232def check_bblayers(bblayersconf, layer_path, logger):
233 '''
234 If layer_path found in BBLAYERS return True
235 '''
236 import bb.parse
237 import bb.data
238
239 ldata = bb.parse.handle(bblayersconf, bb.data.init(), include=True)
240 for bblayer in (ldata.getVar('BBLAYERS') or '').split():
241 if os.path.normpath(bblayer) == os.path.normpath(layer_path):
242 return True
243
244 return False
245
232def check_command(error_msg, cmd, cwd=None): 246def check_command(error_msg, cmd, cwd=None):
233 ''' 247 '''
234 Run a command under a shell, capture stdout and stderr in a single stream, 248 Run a command under a shell, capture stdout and stderr in a single stream,
diff --git a/scripts/yocto-check-layer b/scripts/yocto-check-layer
index ca6c79bc8d..b7c83c8b54 100755
--- a/scripts/yocto-check-layer
+++ b/scripts/yocto-check-layer
@@ -24,7 +24,7 @@ import scriptpath
24scriptpath.add_oe_lib_path() 24scriptpath.add_oe_lib_path()
25scriptpath.add_bitbake_lib_path() 25scriptpath.add_bitbake_lib_path()
26 26
27from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_signatures 27from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_signatures, check_bblayers
28from oeqa.utils.commands import get_bb_vars 28from oeqa.utils.commands import get_bb_vars
29 29
30PROGNAME = 'yocto-check-layer' 30PROGNAME = 'yocto-check-layer'
@@ -138,6 +138,13 @@ def main():
138 layer['type'] == LayerType.ERROR_BSP_DISTRO: 138 layer['type'] == LayerType.ERROR_BSP_DISTRO:
139 continue 139 continue
140 140
141 if check_bblayers(bblayersconf, layer['path'], logger):
142 logger.info("%s already in %s. To capture initial signatures, layer under test should not present "
143 "in BBLAYERS. Please remove %s from BBLAYERS." % (layer['name'], bblayersconf, layer['name']))
144 results[layer['name']] = None
145 results_status[layer['name']] = 'SKIPPED (Layer under test should not present in BBLAYERS)'
146 continue
147
141 logger.info('') 148 logger.info('')
142 logger.info("Setting up for %s(%s), %s" % (layer['name'], layer['type'], 149 logger.info("Setting up for %s(%s), %s" % (layer['name'], layer['type'],
143 layer['path'])) 150 layer['path']))