summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/data_smart.py
diff options
context:
space:
mode:
authorChris Larson <chris_larson@mentor.com>2010-10-05 19:35:23 -0700
committerRichard Purdie <rpurdie@linux.intel.com>2011-01-04 14:46:38 +0000
commit283b0a20c2a9bfa27966e10f40669cbe904b7080 (patch)
treebf0946ca363c9f9a9d5b7217df0782e904b37c90 /bitbake/lib/bb/data_smart.py
parentf3406dd28846f4782bec36cb0bd1f834e068147b (diff)
downloadpoky-283b0a20c2a9bfa27966e10f40669cbe904b7080.tar.gz
Access metadata vars as locals in python snippets
Example: FOO = "bar" BAR = "${@FOO + '/baz'}" ${BAR} == "bar/baz" (Bitbake rev: 606fa1fd97cbd47a6a7ebdc7a2e6aa93a8f65cf5) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-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 17a642ee2d..3f2d42c1bb 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -72,10 +72,23 @@ class VariableParse:
72 self.references |= parser.references 72 self.references |= parser.references
73 self.execs |= parser.execs 73 self.execs |= parser.execs
74 74
75 value = utils.better_eval(codeobj, {"d": self.d}) 75 value = utils.better_eval(codeobj, DataDict(self.d))
76 return str(value) 76 return str(value)
77 77
78 78
79class DataDict(dict):
80 def __init__(self, metadata, **kwargs):
81 self.metadata = metadata
82 dict.__init__(self, **kwargs)
83 self['d'] = metadata
84
85 def __missing__(self, key):
86 value = self.metadata.getVar(key, True)
87 if value is None or self.metadata.getVarFlag(key, 'func'):
88 raise KeyError(key)
89 else:
90 return value
91
79class DataSmart(MutableMapping): 92class DataSmart(MutableMapping):
80 def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ): 93 def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ):
81 self.dict = {} 94 self.dict = {}