diff options
| -rw-r--r-- | bitbake/lib/bb/data_smart.py | 15 | 
1 files changed, 14 insertions, 1 deletions
| diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 17a642ee2d..3f2d42c1bb 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 = {} | 
