diff options
| author | Robert Yang <liezhi.yang@windriver.com> | 2019-02-12 18:16:42 +0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-02-14 11:20:55 +0000 |
| commit | 5501f12ef605a874479a050c4a391f9610a1cebf (patch) | |
| tree | 0e726dba1cb72d77c66cc1765ebd3e223cd84b93 /scripts | |
| parent | a6a2c8969239a7120959419a23b43dc4dcb61fd0 (diff) | |
| download | poky-5501f12ef605a874479a050c4a391f9610a1cebf.tar.gz | |
checklayer: Avoid adding the layer if it is already present
* Rename add_layer() to add_layers() so that add_layer_dependencies() can
re-use it.
* Avoid adding the layer if it is already present
[YOCTO #13148]
(From OE-Core rev: b9cc18d83f55ff48c3d6e60c56359f6736d5a06a)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/lib/checklayer/__init__.py | 36 | ||||
| -rwxr-xr-x | scripts/yocto-check-layer | 6 |
2 files changed, 20 insertions, 22 deletions
diff --git a/scripts/lib/checklayer/__init__.py b/scripts/lib/checklayer/__init__.py index ca7863a19e..670f0eea39 100644 --- a/scripts/lib/checklayer/__init__.py +++ b/scripts/lib/checklayer/__init__.py | |||
| @@ -196,31 +196,29 @@ def add_layer_dependencies(bblayersconf, layer, layers, logger): | |||
| 196 | if layer_depends is None: | 196 | if layer_depends is None: |
| 197 | return False | 197 | return False |
| 198 | else: | 198 | else: |
| 199 | # Don't add a layer that is already present. | 199 | add_layers(bblayersconf, layer_depends, logger) |
| 200 | added = set() | 200 | |
| 201 | output = check_command('Getting existing layers failed.', 'bitbake-layers show-layers').decode('utf-8') | 201 | return True |
| 202 | for layer, path, pri in re.findall(r'^(\S+) +([^\n]*?) +(\d+)$', output, re.MULTILINE): | 202 | |
| 203 | added.add(path) | 203 | def add_layers(bblayersconf, layers, logger): |
| 204 | 204 | # Don't add a layer that is already present. | |
| 205 | for layer_depend in layer_depends: | 205 | added = set() |
| 206 | name = layer_depend['name'] | 206 | output = check_command('Getting existing layers failed.', 'bitbake-layers show-layers').decode('utf-8') |
| 207 | path = layer_depend['path'] | 207 | for layer, path, pri in re.findall(r'^(\S+) +([^\n]*?) +(\d+)$', output, re.MULTILINE): |
| 208 | added.add(path) | ||
| 209 | |||
| 210 | with open(bblayersconf, 'a+') as f: | ||
| 211 | for layer in layers: | ||
| 212 | logger.info('Adding layer %s' % layer['name']) | ||
| 213 | name = layer['name'] | ||
| 214 | path = layer['path'] | ||
| 208 | if path in added: | 215 | if path in added: |
| 209 | continue | 216 | logger.info('%s is already in %s' % (name, bblayersconf)) |
| 210 | else: | 217 | else: |
| 211 | added.add(path) | 218 | added.add(path) |
| 212 | logger.info('Adding layer dependency %s' % name) | ||
| 213 | with open(bblayersconf, 'a+') as f: | ||
| 214 | f.write("\nBBLAYERS += \"%s\"\n" % path) | 219 | f.write("\nBBLAYERS += \"%s\"\n" % path) |
| 215 | return True | 220 | return True |
| 216 | 221 | ||
| 217 | def add_layer(bblayersconf, layer, layers, logger): | ||
| 218 | logger.info('Adding layer %s' % layer['name']) | ||
| 219 | with open(bblayersconf, 'a+') as f: | ||
| 220 | f.write("\nBBLAYERS += \"%s\"\n" % layer['path']) | ||
| 221 | |||
| 222 | return True | ||
| 223 | |||
| 224 | def check_command(error_msg, cmd, cwd=None): | 222 | def check_command(error_msg, cmd, cwd=None): |
| 225 | ''' | 223 | ''' |
| 226 | Run a command under a shell, capture stdout and stderr in a single stream, | 224 | 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 9b7e53679b..106c955251 100755 --- a/scripts/yocto-check-layer +++ b/scripts/yocto-check-layer | |||
| @@ -22,7 +22,7 @@ import scriptpath | |||
| 22 | scriptpath.add_oe_lib_path() | 22 | scriptpath.add_oe_lib_path() |
| 23 | scriptpath.add_bitbake_lib_path() | 23 | scriptpath.add_bitbake_lib_path() |
| 24 | 24 | ||
| 25 | from checklayer import LayerType, detect_layers, add_layer, add_layer_dependencies, get_signatures | 25 | from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_signatures |
| 26 | from oeqa.utils.commands import get_bb_vars | 26 | from oeqa.utils.commands import get_bb_vars |
| 27 | 27 | ||
| 28 | PROGNAME = 'yocto-check-layer' | 28 | PROGNAME = 'yocto-check-layer' |
| @@ -157,7 +157,7 @@ def main(): | |||
| 157 | layers_tested = layers_tested + 1 | 157 | layers_tested = layers_tested + 1 |
| 158 | continue | 158 | continue |
| 159 | 159 | ||
| 160 | if any(map(lambda additional_layer: not add_layer(bblayersconf, additional_layer, dep_layers, logger), | 160 | if any(map(lambda additional_layer: not add_layers(bblayersconf, [additional_layer], logger), |
| 161 | additional_layers)): | 161 | additional_layers)): |
| 162 | logger.info('Skipping %s due to missing additional layers.' % layer['name']) | 162 | logger.info('Skipping %s due to missing additional layers.' % layer['name']) |
| 163 | results[layer['name']] = None | 163 | results[layer['name']] = None |
| @@ -179,7 +179,7 @@ def main(): | |||
| 179 | continue | 179 | continue |
| 180 | td['machines'] = args.machines | 180 | td['machines'] = args.machines |
| 181 | 181 | ||
| 182 | if not add_layer(bblayersconf, layer, dep_layers, logger): | 182 | if not add_layers(bblayersconf, [layer], logger): |
| 183 | logger.info('Skipping %s ???.' % layer['name']) | 183 | logger.info('Skipping %s ???.' % layer['name']) |
| 184 | results[layer['name']] = None | 184 | results[layer['name']] = None |
| 185 | results_status[layer['name']] = 'SKIPPED (Unknown)' | 185 | results_status[layer['name']] = 'SKIPPED (Unknown)' |
