diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2017-03-20 17:05:52 +1300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-03-21 21:01:56 +0000 |
commit | 4f9d6f060ed247fb6fa2f45668a892a1788d3f91 (patch) | |
tree | 79aee54d849ed2bbaab451ba17735531e47dbe59 /lib/bb/data_smart.py | |
parent | 1ff9b3c669fa187f152de7b8b57d14c2468d926c (diff) | |
download | bitbake-4f9d6f060ed247fb6fa2f45668a892a1788d3f91.tar.gz |
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.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/data_smart.py')
-rw-r--r-- | lib/bb/data_smart.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py index 4d56081b6..5777d545a 100644 --- a/lib/bb/data_smart.py +++ b/lib/bb/data_smart.py @@ -473,7 +473,7 @@ class DataSmart(MutableMapping): dest = self.dict while dest: if var in dest: - return dest[var] + return dest[var], self.overridedata.get(var, None) if "_remote_data" in dest: connector = dest["_remote_data"]["_content"] @@ -482,12 +482,13 @@ class DataSmart(MutableMapping): if "_data" not in dest: break dest = dest["_data"] + return None, self.overridedata.get(var, None) def _makeShadowCopy(self, var): if var in self.dict: return - local_var = self._findVar(var) + local_var, _ = self._findVar(var) if local_var: self.dict[var] = copy.copy(local_var) @@ -699,13 +700,13 @@ class DataSmart(MutableMapping): self.dict["__exportlist"]["_content"].add(var) def getVarFlag(self, var, flag, expand=True, noweakdefault=False, parsing=False): - local_var = self._findVar(var) + local_var, overridedata = self._findVar(var) value = None - if flag == "_content" and var in self.overridedata and not parsing: + if flag == "_content" and overridedata is not None and not parsing: match = False active = {} self.need_overrides() - for (r, o) in self.overridedata[var]: + for (r, o) in overridedata: # What about double overrides both with "_" in the name? if o in self.overridesset: active[o] = r @@ -796,7 +797,7 @@ class DataSmart(MutableMapping): def delVarFlag(self, var, flag, **loginfo): self.expand_cache = {} - local_var = self._findVar(var) + local_var, _ = self._findVar(var) if not local_var: return if not var in self.dict: @@ -839,7 +840,7 @@ class DataSmart(MutableMapping): self.dict[var][i] = flags[i] def getVarFlags(self, var, expand = False, internalflags=False): - local_var = self._findVar(var) + local_var, _ = self._findVar(var) flags = {} if local_var: |