summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/data_smart.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 17a642ee2..3f2d42c1b 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -72,10 +72,23 @@ class VariableParse:
self.references |= parser.references
self.execs |= parser.execs
- value = utils.better_eval(codeobj, {"d": self.d})
+ value = utils.better_eval(codeobj, DataDict(self.d))
return str(value)
+class DataDict(dict):
+ def __init__(self, metadata, **kwargs):
+ self.metadata = metadata
+ dict.__init__(self, **kwargs)
+ self['d'] = metadata
+
+ def __missing__(self, key):
+ value = self.metadata.getVar(key, True)
+ if value is None or self.metadata.getVarFlag(key, 'func'):
+ raise KeyError(key)
+ else:
+ return value
+
class DataSmart(MutableMapping):
def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ):
self.dict = {}