summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorTom Zanussi <tom.zanussi@linux.intel.com>2013-07-10 09:11:44 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-07-13 18:23:39 +0100
commit74e403705e25afec656b5e40921771a9c29bdc40 (patch)
treeb65f3d5ce4e54b93c2c60b303bea8341f7741126 /scripts
parent46818e5227e173666f8ad704ff2fe622ffaa2414 (diff)
downloadast2050-yocto-poky-74e403705e25afec656b5e40921771a9c29bdc40.zip
ast2050-yocto-poky-74e403705e25afec656b5e40921771a9c29bdc40.tar.gz
yocto-kernel: make BBLAYERS parsing more robust
This allows the BBLAYERS parsing code to handle cases where BBLAYERS is spread across multiple assignments or all on a single line, within double or single quotes. Fixes [YOCTO #3746]. (From meta-yocto rev: 4ab26d9e655bab0069ffe9b135557d943cf1f524) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/bsp/kernel.py38
1 files changed, 24 insertions, 14 deletions
diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
index c3592a3..1971e90 100644
--- a/scripts/lib/bsp/kernel.py
+++ b/scripts/lib/bsp/kernel.py
@@ -60,14 +60,12 @@ def find_bblayers(scripts_path):
in_bblayers = True
quotes = line.strip().count('"')
if quotes > 1:
- break
+ in_bblayers = False
continue
if in_bblayers:
bblayers_lines.append(line)
if line.strip().endswith("\""):
- break
- else:
- continue
+ in_bblayers = False
for i, line in enumerate(bblayers_lines):
if line.strip().endswith("\\"):
@@ -75,19 +73,31 @@ def find_bblayers(scripts_path):
bblayers_line = " ".join(bblayers_lines)
- start_quote = bblayers_line.find("\"")
- if start_quote == -1:
- print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
- sys.exit(1)
+ openquote = ''
+ for c in bblayers_line:
+ if c == '\"' or c == '\'':
+ if openquote:
+ if c != openquote:
+ print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
+ sys.exit(1)
+ else:
+ openquote = ''
+ else:
+ openquote = c
- start_quote += 1
- end_quote = bblayers_line.find("\"", start_quote)
- if end_quote == -1:
+ if openquote:
print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
sys.exit(1)
- bblayers_line = bblayers_line[start_quote:end_quote]
- layers = bblayers_line.split()
+ bblayers_line = bblayers_line.strip().replace('\"', '')
+ bblayers_line = bblayers_line.strip().replace('\'', '')
+
+ raw_layers = bblayers_line.split()
+
+ for layer in raw_layers:
+ if layer == 'BBLAYERS' or '=' in layer:
+ continue
+ layers.append(layer)
f.close()
@@ -114,7 +124,7 @@ def find_bsp_layer(scripts_path, machine):
layers = find_bblayers(scripts_path)
for layer in layers:
- if machine in layer:
+ if layer.endswith(machine):
return layer
print "Unable to find the BSP layer for machine %s." % machine
OpenPOWER on IntegriCloud