mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 05:04:44 +02:00
yocto-check-layer: Allow OE-Core to be tested
For unknown reasons we've never seemingly run the check layer script against OE-Core itself. This isn't entirely straightforward as the core layer is a bit of a special case, we can't for example compare signatures against ourselve and we can't remove core from bblayers.conf. Core does have distro, machine and software components too, in the case of distro, our fallback default settings. Whilst the qemu machines could be split into a seperate layer directory, core wouldn't then parse at all standalone due to the lack of any machine so it seems a bit pointless to do that. These changes tweak the script to handle core's special cases, specifically to allow distro and machine directories and to account for the README placed a directory level higher than other layers. (From OE-Core rev: ba312ed228507d05f280aeb96819d671b01400b8) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
1aae880d7d
commit
7458ad340f
|
@ -16,6 +16,7 @@ class LayerType(Enum):
|
|||
BSP = 0
|
||||
DISTRO = 1
|
||||
SOFTWARE = 2
|
||||
CORE = 3
|
||||
ERROR_NO_LAYER_CONF = 98
|
||||
ERROR_BSP_DISTRO = 99
|
||||
|
||||
|
@ -106,7 +107,13 @@ def _detect_layer(layer_path):
|
|||
if distros:
|
||||
is_distro = True
|
||||
|
||||
if is_bsp and is_distro:
|
||||
layer['collections'] = _get_layer_collections(layer['path'])
|
||||
|
||||
if layer_name == "meta" and "core" in layer['collections']:
|
||||
layer['type'] = LayerType.CORE
|
||||
layer['conf']['machines'] = machines
|
||||
layer['conf']['distros'] = distros
|
||||
elif is_bsp and is_distro:
|
||||
layer['type'] = LayerType.ERROR_BSP_DISTRO
|
||||
elif is_bsp:
|
||||
layer['type'] = LayerType.BSP
|
||||
|
@ -117,8 +124,6 @@ def _detect_layer(layer_path):
|
|||
else:
|
||||
layer['type'] = LayerType.SOFTWARE
|
||||
|
||||
layer['collections'] = _get_layer_collections(layer['path'])
|
||||
|
||||
return layer
|
||||
|
||||
def detect_layers(layer_directories, no_auto):
|
||||
|
|
|
@ -11,7 +11,7 @@ from checklayer.case import OECheckLayerTestCase
|
|||
class BSPCheckLayer(OECheckLayerTestCase):
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
if self.tc.layer['type'] != LayerType.BSP:
|
||||
if self.tc.layer['type'] not in (LayerType.BSP, LayerType.CORE):
|
||||
raise unittest.SkipTest("BSPCheckLayer: Layer %s isn't BSP one." %\
|
||||
self.tc.layer['name'])
|
||||
|
||||
|
|
|
@ -12,6 +12,9 @@ from checklayer.case import OECheckLayerTestCase
|
|||
|
||||
class CommonCheckLayer(OECheckLayerTestCase):
|
||||
def test_readme(self):
|
||||
if self.tc.layer['type'] == LayerType.CORE:
|
||||
raise unittest.SkipTest("Core layer's README is top level")
|
||||
|
||||
# The top-level README file may have a suffix (like README.rst or README.txt).
|
||||
readme_files = glob.glob(os.path.join(self.tc.layer['path'], '[Rr][Ee][Aa][Dd][Mm][Ee]*'))
|
||||
self.assertTrue(len(readme_files) > 0,
|
||||
|
|
|
@ -11,7 +11,7 @@ from checklayer.case import OECheckLayerTestCase
|
|||
class DistroCheckLayer(OECheckLayerTestCase):
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
if self.tc.layer['type'] != LayerType.DISTRO:
|
||||
if self.tc.layer['type'] not in (LayerType.DISTRO, LayerType.CORE):
|
||||
raise unittest.SkipTest("DistroCheckLayer: Layer %s isn't Distro one." %\
|
||||
self.tc.layer['name'])
|
||||
|
||||
|
|
|
@ -168,14 +168,13 @@ def main():
|
|||
|
||||
layers_tested = 0
|
||||
for layer in layers:
|
||||
if layer['type'] == LayerType.ERROR_NO_LAYER_CONF or \
|
||||
layer['type'] == LayerType.ERROR_BSP_DISTRO:
|
||||
if layer['type'] in (LayerType.ERROR_NO_LAYER_CONF, LayerType.ERROR_BSP_DISTRO):
|
||||
continue
|
||||
|
||||
# Reset to a clean backup copy for each run
|
||||
shutil.copyfile(bblayersconf + '.backup', bblayersconf)
|
||||
|
||||
if check_bblayers(bblayersconf, layer['path'], logger):
|
||||
if layer['type'] not in (LayerType.CORE, ) and check_bblayers(bblayersconf, layer['path'], logger):
|
||||
logger.info("%s already in %s. To capture initial signatures, layer under test should not present "
|
||||
"in BBLAYERS. Please remove %s from BBLAYERS." % (layer['name'], bblayersconf, layer['name']))
|
||||
results[layer['name']] = None
|
||||
|
|
Loading…
Reference in New Issue
Block a user