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>
This commit is contained in:
parent
46818e5227
commit
74e403705e
|
@ -60,14 +60,12 @@ def find_bblayers(scripts_path):
|
||||||
in_bblayers = True
|
in_bblayers = True
|
||||||
quotes = line.strip().count('"')
|
quotes = line.strip().count('"')
|
||||||
if quotes > 1:
|
if quotes > 1:
|
||||||
break
|
in_bblayers = False
|
||||||
continue
|
continue
|
||||||
if in_bblayers:
|
if in_bblayers:
|
||||||
bblayers_lines.append(line)
|
bblayers_lines.append(line)
|
||||||
if line.strip().endswith("\""):
|
if line.strip().endswith("\""):
|
||||||
break
|
in_bblayers = False
|
||||||
else:
|
|
||||||
continue
|
|
||||||
|
|
||||||
for i, line in enumerate(bblayers_lines):
|
for i, line in enumerate(bblayers_lines):
|
||||||
if line.strip().endswith("\\"):
|
if line.strip().endswith("\\"):
|
||||||
|
@ -75,19 +73,31 @@ def find_bblayers(scripts_path):
|
||||||
|
|
||||||
bblayers_line = " ".join(bblayers_lines)
|
bblayers_line = " ".join(bblayers_lines)
|
||||||
|
|
||||||
start_quote = bblayers_line.find("\"")
|
openquote = ''
|
||||||
if start_quote == -1:
|
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
|
||||||
|
|
||||||
|
if openquote:
|
||||||
print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
|
print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
start_quote += 1
|
bblayers_line = bblayers_line.strip().replace('\"', '')
|
||||||
end_quote = bblayers_line.find("\"", start_quote)
|
bblayers_line = bblayers_line.strip().replace('\'', '')
|
||||||
if end_quote == -1:
|
|
||||||
print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
bblayers_line = bblayers_line[start_quote:end_quote]
|
raw_layers = bblayers_line.split()
|
||||||
layers = bblayers_line.split()
|
|
||||||
|
for layer in raw_layers:
|
||||||
|
if layer == 'BBLAYERS' or '=' in layer:
|
||||||
|
continue
|
||||||
|
layers.append(layer)
|
||||||
|
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
@ -114,7 +124,7 @@ def find_bsp_layer(scripts_path, machine):
|
||||||
layers = find_bblayers(scripts_path)
|
layers = find_bblayers(scripts_path)
|
||||||
|
|
||||||
for layer in layers:
|
for layer in layers:
|
||||||
if machine in layer:
|
if layer.endswith(machine):
|
||||||
return layer
|
return layer
|
||||||
|
|
||||||
print "Unable to find the BSP layer for machine %s." % machine
|
print "Unable to find the BSP layer for machine %s." % machine
|
||||||
|
|
Loading…
Reference in New Issue