summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-16 21:59:44 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-18 15:13:14 +0100
commit82143ac064d391300e762ba7520ef1f8df18b574 (patch)
tree7f717ce5b9eed4ab80b0858d6941aec30ffc54da
parent10279697c701e01bf6fdd5e9f92792ef5134807b (diff)
downloadbitbake-82143ac064d391300e762ba7520ef1f8df18b574.zip
data_smart: When considering OVERRIDE dependencies, do so recursively
Sadly its not enough to consider the dependencies of OVERRIDES, we need to resolve their dependencies and so on recursively. If we don't do this, some variable can be changed and the resulting data store is incorrect. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/data_smart.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index 85412b2a..99f55cf4 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -530,7 +530,13 @@ class DataSmart(MutableMapping):
self._setvar_update_overridevars(var, value)
def _setvar_update_overridevars(self, var, value):
- self.overridevars.update(self.expandWithRefs(value, var).references)
+ new = self.expandWithRefs(value, var).references
+ while not new.issubset(self.overridevars):
+ nextnew = set()
+ self.overridevars.update(new)
+ for i in new:
+ nextnew.update(self.expandWithRefs(self.getVar(i, True), i).references)
+ new = nextnew
self.internal_finalize(True)
def _setvar_update_overrides(self, var, **loginfo):