summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/data_smart.py
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2017-03-20 17:05:52 +1300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-22 11:35:22 +0000
commit99414bdb1c64f7f03e12c347cc16c43c2fa336b2 (patch)
treeed87faa1728cd3731a846b278269281e348c401b /bitbake/lib/bb/data_smart.py
parent0cb6f853357f26962748ab1a21490e7d4af53af0 (diff)
downloadpoky-99414bdb1c64f7f03e12c347cc16c43c2fa336b2.tar.gz
bitbake: tinfoil: fix override handling in remote datastores
There was a huge gap in the remote datastore code introduced in the tinfoil2 rework - we weren't handling overrides at all, since these are stored separately from the actual data in the DataSmart object. Thus, when a datastore actually represents a remote datastore we need to go back to that remote datastore to get the override data as well, so introduce code to do that. To avoid a second round-trip I had to modify the _findVar() function to return the override data as well. This will increase the overhead a little when that data is superfluous, but without making the function even uglier I don't think there's a way to avoid that. (Bitbake rev: 4f9d6f060ed247fb6fa2f45668a892a1788d3f91) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r--bitbake/lib/bb/data_smart.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 4d56081b66..5777d545a8 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -473,7 +473,7 @@ class DataSmart(MutableMapping):
473 dest = self.dict 473 dest = self.dict
474 while dest: 474 while dest:
475 if var in dest: 475 if var in dest:
476 return dest[var] 476 return dest[var], self.overridedata.get(var, None)
477 477
478 if "_remote_data" in dest: 478 if "_remote_data" in dest:
479 connector = dest["_remote_data"]["_content"] 479 connector = dest["_remote_data"]["_content"]
@@ -482,12 +482,13 @@ class DataSmart(MutableMapping):
482 if "_data" not in dest: 482 if "_data" not in dest:
483 break 483 break
484 dest = dest["_data"] 484 dest = dest["_data"]
485 return None, self.overridedata.get(var, None)
485 486
486 def _makeShadowCopy(self, var): 487 def _makeShadowCopy(self, var):
487 if var in self.dict: 488 if var in self.dict:
488 return 489 return
489 490
490 local_var = self._findVar(var) 491 local_var, _ = self._findVar(var)
491 492
492 if local_var: 493 if local_var:
493 self.dict[var] = copy.copy(local_var) 494 self.dict[var] = copy.copy(local_var)
@@ -699,13 +700,13 @@ class DataSmart(MutableMapping):
699 self.dict["__exportlist"]["_content"].add(var) 700 self.dict["__exportlist"]["_content"].add(var)
700 701
701 def getVarFlag(self, var, flag, expand=True, noweakdefault=False, parsing=False): 702 def getVarFlag(self, var, flag, expand=True, noweakdefault=False, parsing=False):
702 local_var = self._findVar(var) 703 local_var, overridedata = self._findVar(var)
703 value = None 704 value = None
704 if flag == "_content" and var in self.overridedata and not parsing: 705 if flag == "_content" and overridedata is not None and not parsing:
705 match = False 706 match = False
706 active = {} 707 active = {}
707 self.need_overrides() 708 self.need_overrides()
708 for (r, o) in self.overridedata[var]: 709 for (r, o) in overridedata:
709 # What about double overrides both with "_" in the name? 710 # What about double overrides both with "_" in the name?
710 if o in self.overridesset: 711 if o in self.overridesset:
711 active[o] = r 712 active[o] = r
@@ -796,7 +797,7 @@ class DataSmart(MutableMapping):
796 797
797 def delVarFlag(self, var, flag, **loginfo): 798 def delVarFlag(self, var, flag, **loginfo):
798 self.expand_cache = {} 799 self.expand_cache = {}
799 local_var = self._findVar(var) 800 local_var, _ = self._findVar(var)
800 if not local_var: 801 if not local_var:
801 return 802 return
802 if not var in self.dict: 803 if not var in self.dict:
@@ -839,7 +840,7 @@ class DataSmart(MutableMapping):
839 self.dict[var][i] = flags[i] 840 self.dict[var][i] = flags[i]
840 841
841 def getVarFlags(self, var, expand = False, internalflags=False): 842 def getVarFlags(self, var, expand = False, internalflags=False):
842 local_var = self._findVar(var) 843 local_var, _ = self._findVar(var)
843 flags = {} 844 flags = {}
844 845
845 if local_var: 846 if local_var: