summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/data_smart.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r--bitbake/lib/bb/data_smart.py46
1 files changed, 22 insertions, 24 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 6ea0182852..5ff0b37bfc 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -31,11 +31,11 @@ BitBake build tools.
31import copy, os, re, sys, time, types 31import copy, os, re, sys, time, types
32import bb 32import bb
33from bb import utils, methodpool 33from bb import utils, methodpool
34from COW import COWDictBase 34from bb.COW import COWDictBase
35from new import classobj 35from new import classobj
36 36
37 37
38__setvar_keyword__ = ["_append","_prepend"] 38__setvar_keyword__ = ["_append", "_prepend"]
39__setvar_regexp__ = re.compile('(?P<base>.*?)(?P<keyword>_append|_prepend)(_(?P<add>.*))?') 39__setvar_regexp__ = re.compile('(?P<base>.*?)(?P<keyword>_append|_prepend)(_(?P<add>.*))?')
40__expand_var_regexp__ = re.compile(r"\${[^{}]+}") 40__expand_var_regexp__ = re.compile(r"\${[^{}]+}")
41__expand_python_regexp__ = re.compile(r"\${@.+?}") 41__expand_python_regexp__ = re.compile(r"\${@.+?}")
@@ -51,7 +51,7 @@ class DataSmart:
51 51
52 self.expand_cache = {} 52 self.expand_cache = {}
53 53
54 def expand(self,s, varname): 54 def expand(self, s, varname):
55 def var_sub(match): 55 def var_sub(match):
56 key = match.group()[2:-1] 56 key = match.group()[2:-1]
57 if varname and key: 57 if varname and key:
@@ -165,7 +165,7 @@ class DataSmart:
165 if not var in self.dict: 165 if not var in self.dict:
166 self.dict[var] = {} 166 self.dict[var] = {}
167 167
168 def _findVar(self,var): 168 def _findVar(self, var):
169 _dest = self.dict 169 _dest = self.dict
170 170
171 while (_dest and var not in _dest): 171 while (_dest and var not in _dest):
@@ -189,7 +189,7 @@ class DataSmart:
189 else: 189 else:
190 self.initVar(var) 190 self.initVar(var)
191 191
192 def setVar(self,var,value): 192 def setVar(self, var, value):
193 self.expand_cache = {} 193 self.expand_cache = {}
194 match = __setvar_regexp__.match(var) 194 match = __setvar_regexp__.match(var)
195 if match and match.group("keyword") in __setvar_keyword__: 195 if match and match.group("keyword") in __setvar_keyword__:
@@ -223,16 +223,16 @@ class DataSmart:
223 # setting var 223 # setting var
224 self.dict[var]["content"] = value 224 self.dict[var]["content"] = value
225 225
226 def getVar(self,var,exp): 226 def getVar(self, var, exp):
227 value = self.getVarFlag(var,"content") 227 value = self.getVarFlag(var, "content")
228 228
229 if exp and value: 229 if exp and value:
230 return self.expand(value,var) 230 return self.expand(value, var)
231 return value 231 return value
232 232
233 def renameVar(self, key, newkey): 233 def renameVar(self, key, newkey):
234 """ 234 """
235 Rename the variable key to newkey 235 Rename the variable key to newkey
236 """ 236 """
237 val = self.getVar(key, 0) 237 val = self.getVar(key, 0)
238 if val is not None: 238 if val is not None:
@@ -246,30 +246,30 @@ class DataSmart:
246 dest = self.getVarFlag(newkey, i) or [] 246 dest = self.getVarFlag(newkey, i) or []
247 dest.extend(src) 247 dest.extend(src)
248 self.setVarFlag(newkey, i, dest) 248 self.setVarFlag(newkey, i, dest)
249 249
250 if self._special_values.has_key(i) and key in self._special_values[i]: 250 if self._special_values.has_key(i) and key in self._special_values[i]:
251 self._special_values[i].remove(key) 251 self._special_values[i].remove(key)
252 self._special_values[i].add(newkey) 252 self._special_values[i].add(newkey)
253 253
254 self.delVar(key) 254 self.delVar(key)
255 255
256 def delVar(self,var): 256 def delVar(self, var):
257 self.expand_cache = {} 257 self.expand_cache = {}
258 self.dict[var] = {} 258 self.dict[var] = {}
259 259
260 def setVarFlag(self,var,flag,flagvalue): 260 def setVarFlag(self, var, flag, flagvalue):
261 if not var in self.dict: 261 if not var in self.dict:
262 self._makeShadowCopy(var) 262 self._makeShadowCopy(var)
263 self.dict[var][flag] = flagvalue 263 self.dict[var][flag] = flagvalue
264 264
265 def getVarFlag(self,var,flag): 265 def getVarFlag(self, var, flag):
266 local_var = self._findVar(var) 266 local_var = self._findVar(var)
267 if local_var: 267 if local_var:
268 if flag in local_var: 268 if flag in local_var:
269 return copy.copy(local_var[flag]) 269 return copy.copy(local_var[flag])
270 return None 270 return None
271 271
272 def delVarFlag(self,var,flag): 272 def delVarFlag(self, var, flag):
273 local_var = self._findVar(var) 273 local_var = self._findVar(var)
274 if not local_var: 274 if not local_var:
275 return 275 return
@@ -279,7 +279,7 @@ class DataSmart:
279 if var in self.dict and flag in self.dict[var]: 279 if var in self.dict and flag in self.dict[var]:
280 del self.dict[var][flag] 280 del self.dict[var][flag]
281 281
282 def setVarFlags(self,var,flags): 282 def setVarFlags(self, var, flags):
283 if not var in self.dict: 283 if not var in self.dict:
284 self._makeShadowCopy(var) 284 self._makeShadowCopy(var)
285 285
@@ -288,7 +288,7 @@ class DataSmart:
288 continue 288 continue
289 self.dict[var][i] = flags[i] 289 self.dict[var][i] = flags[i]
290 290
291 def getVarFlags(self,var): 291 def getVarFlags(self, var):
292 local_var = self._findVar(var) 292 local_var = self._findVar(var)
293 flags = {} 293 flags = {}
294 294
@@ -303,7 +303,7 @@ class DataSmart:
303 return flags 303 return flags
304 304
305 305
306 def delVarFlags(self,var): 306 def delVarFlags(self, var):
307 if not var in self.dict: 307 if not var in self.dict:
308 self._makeShadowCopy(var) 308 self._makeShadowCopy(var)
309 309
@@ -333,21 +333,19 @@ class DataSmart:
333 def keys(self): 333 def keys(self):
334 def _keys(d, mykey): 334 def _keys(d, mykey):
335 if "_data" in d: 335 if "_data" in d:
336 _keys(d["_data"],mykey) 336 _keys(d["_data"], mykey)
337 337
338 for key in d.keys(): 338 for key in d.keys():
339 if key != "_data": 339 if key != "_data":
340 mykey[key] = None 340 mykey[key] = None
341 keytab = {} 341 keytab = {}
342 _keys(self.dict,keytab) 342 _keys(self.dict, keytab)
343 return keytab.keys() 343 return keytab.keys()
344 344
345 def __getitem__(self,item): 345 def __getitem__(self, item):
346 #print "Warning deprecated" 346 #print "Warning deprecated"
347 return self.getVar(item, False) 347 return self.getVar(item, False)
348 348
349 def __setitem__(self,var,data): 349 def __setitem__(self, var, data):
350 #print "Warning deprecated" 350 #print "Warning deprecated"
351 self.setVar(var,data) 351 self.setVar(var, data)
352
353