summaryrefslogtreecommitdiffstats
path: root/scripts/lib
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2019-02-12 18:16:42 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-14 11:20:55 +0000
commit5501f12ef605a874479a050c4a391f9610a1cebf (patch)
tree0e726dba1cb72d77c66cc1765ebd3e223cd84b93 /scripts/lib
parenta6a2c8969239a7120959419a23b43dc4dcb61fd0 (diff)
downloadpoky-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/lib')
-rw-r--r--scripts/lib/checklayer/__init__.py36
1 files changed, 17 insertions, 19 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) 203def 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
217def 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
224def check_command(error_msg, cmd, cwd=None): 222def 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,