summaryrefslogtreecommitdiffstats
path: root/yocto-poky/bitbake/lib/bb/data_smart.py
diff options
context:
space:
mode:
Diffstat (limited to 'yocto-poky/bitbake/lib/bb/data_smart.py')
-rw-r--r--yocto-poky/bitbake/lib/bb/data_smart.py29
1 files changed, 17 insertions, 12 deletions
diff --git a/yocto-poky/bitbake/lib/bb/data_smart.py b/yocto-poky/bitbake/lib/bb/data_smart.py
index 70558c15a..fa1e79427 100644
--- a/yocto-poky/bitbake/lib/bb/data_smart.py
+++ b/yocto-poky/bitbake/lib/bb/data_smart.py
@@ -40,7 +40,7 @@ logger = logging.getLogger("BitBake.Data")
__setvar_keyword__ = ["_append", "_prepend", "_remove"]
__setvar_regexp__ = re.compile('(?P<base>.*?)(?P<keyword>_append|_prepend|_remove)(_(?P<add>.*))?$')
-__expand_var_regexp__ = re.compile(r"\${[^{}@\n\t ]+}")
+__expand_var_regexp__ = re.compile(r"\${[^{}@\n\t :]+}")
__expand_python_regexp__ = re.compile(r"\${@.+?}")
def infer_caller_details(loginfo, parent = False, varval = True):
@@ -147,7 +147,7 @@ class DataContext(dict):
def __missing__(self, key):
value = self.metadata.getVar(key, True)
- if value is None or self.metadata.getVarFlag(key, 'func'):
+ if value is None or self.metadata.getVarFlag(key, 'func', False):
raise KeyError(key)
else:
return value
@@ -384,7 +384,12 @@ class DataSmart(MutableMapping):
olds = s
try:
s = __expand_var_regexp__.sub(varparse.var_sub, s)
- s = __expand_python_regexp__.sub(varparse.python_sub, s)
+ try:
+ s = __expand_python_regexp__.sub(varparse.python_sub, s)
+ except SyntaxError as e:
+ # Likely unmatched brackets, just don't expand the expression
+ if e.msg != "EOL while scanning string literal":
+ raise
if s == olds:
break
except ExpansionError:
@@ -475,7 +480,7 @@ class DataSmart(MutableMapping):
base = match.group('base')
keyword = match.group("keyword")
override = match.group('add')
- l = self.getVarFlag(base, keyword) or []
+ l = self.getVarFlag(base, keyword, False) or []
l.append([value, override])
self.setVarFlag(base, keyword, l, ignore=True)
# And cause that to be recorded:
@@ -547,7 +552,7 @@ class DataSmart(MutableMapping):
# aka pay the cookie monster
override = var[var.rfind('_')+1:]
shortvar = var[:var.rfind('_')]
- while override:
+ while override and override.islower():
if shortvar not in self.overridedata:
self.overridedata[shortvar] = []
if [var, override] not in self.overridedata[shortvar]:
@@ -561,7 +566,7 @@ class DataSmart(MutableMapping):
if len(shortvar) == 0:
override = None
- def getVar(self, var, expand=False, noweakdefault=False, parsing=False):
+ def getVar(self, var, expand, noweakdefault=False, parsing=False):
return self.getVarFlag(var, "_content", expand, noweakdefault, parsing)
def renameVar(self, key, newkey, **loginfo):
@@ -577,11 +582,11 @@ class DataSmart(MutableMapping):
self.setVar(newkey, val, ignore=True, parsing=True)
for i in (__setvar_keyword__):
- src = self.getVarFlag(key, i)
+ src = self.getVarFlag(key, i, False)
if src is None:
continue
- dest = self.getVarFlag(newkey, i) or []
+ dest = self.getVarFlag(newkey, i, False) or []
dest.extend(src)
self.setVarFlag(newkey, i, dest, ignore=True)
@@ -621,7 +626,7 @@ class DataSmart(MutableMapping):
if '_' in var:
override = var[var.rfind('_')+1:]
shortvar = var[:var.rfind('_')]
- while override:
+ while override and override.islower():
try:
if shortvar in self.overridedata:
# Force CoW by recreating the list first
@@ -658,7 +663,7 @@ class DataSmart(MutableMapping):
self.dict["__exportlist"]["_content"] = set()
self.dict["__exportlist"]["_content"].add(var)
- def getVarFlag(self, var, flag, expand=False, noweakdefault=False, parsing=False):
+ def getVarFlag(self, var, flag, expand, noweakdefault=False, parsing=False):
local_var = self._findVar(var)
value = None
if flag == "_content" and var in self.overridedata and not parsing:
@@ -687,7 +692,7 @@ class DataSmart(MutableMapping):
match = active[a]
del active[a]
if match:
- value = self.getVar(match)
+ value = self.getVar(match, False)
if local_var is not None and value is None:
if flag in local_var:
@@ -957,7 +962,7 @@ class DataSmart(MutableMapping):
if key == "__BBANONFUNCS":
for i in bb_list:
- value = d.getVar(i, True) or ""
+ value = d.getVar(i, False) or ""
data.update({i:value})
data_str = str([(k, data[k]) for k in sorted(data.keys())])
OpenPOWER on IntegriCloud