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-22 11:35:22 +0000 |
commit | 99414bdb1c64f7f03e12c347cc16c43c2fa336b2 (patch) | |
tree | ed87faa1728cd3731a846b278269281e348c401b /bitbake/lib/bb/data_smart.py | |
parent | 0cb6f853357f26962748ab1a21490e7d4af53af0 (diff) | |
download | poky-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.py | 15 |
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: |