diff options
author | Tom Zanussi <tom.zanussi@linux.intel.com> | 2013-07-10 09:11:44 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-07-13 18:23:39 +0100 |
commit | 74e403705e25afec656b5e40921771a9c29bdc40 (patch) | |
tree | b65f3d5ce4e54b93c2c60b303bea8341f7741126 /scripts/lib/bsp | |
parent | 46818e5227e173666f8ad704ff2fe622ffaa2414 (diff) | |
download | ast2050-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/lib/bsp')
-rw-r--r-- | scripts/lib/bsp/kernel.py | 38 |
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 |