summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-18 12:23:54 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-18 13:27:30 +0100
commitf1ff3c2fdceda7829ee2393fa60856ab49ef7713 (patch)
tree18f868a7d7a83570673d8b1bcbca60fe9253bffa
parenteaf06bc2840cc39026033de0779858b1bf82f06f (diff)
downloadpoky-f1ff3c2fdceda7829ee2393fa60856ab49ef7713.tar.gz
bitbake: data_smart: Fix variable reference issues
The change to use the expansion cache in VariableParse was incorrect as it was adding in references it shouldn't have been. This patch corrects the codepaths and ensures the references are correct. The cache version is bumped since the previous bug could have leave to invalid checksum calculations and a clean cache is therefore desireable. The impact of the bug was that sstate was not getting reused when it should and some tasks were also being rerun when they should not have been. (Bitbake rev: 8a42d082315bd6ce091d006bf83476db257fa48b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/cache.py2
-rw-r--r--bitbake/lib/bb/data_smart.py7
2 files changed, 4 insertions, 5 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index b99fa99cfb..318781ba9b 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/lib/bb/cache.py
@@ -43,7 +43,7 @@ except ImportError:
43 logger.info("Importing cPickle failed. " 43 logger.info("Importing cPickle failed. "
44 "Falling back to a very slow implementation.") 44 "Falling back to a very slow implementation.")
45 45
46__cache_version__ = "146" 46__cache_version__ = "147"
47 47
48def getCacheFile(path, filename, data_hash): 48def getCacheFile(path, filename, data_hash):
49 return os.path.join(path, filename + "." + data_hash) 49 return os.path.join(path, filename + "." + data_hash)
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 79bf331082..71b67e458f 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -96,10 +96,9 @@ class VariableParse:
96 raise Exception("variable %s references itself!" % self.varname) 96 raise Exception("variable %s references itself!" % self.varname)
97 if key in self.d.expand_cache: 97 if key in self.d.expand_cache:
98 varparse = self.d.expand_cache[key] 98 varparse = self.d.expand_cache[key]
99 self.references |= varparse.references 99 var = varparse.value
100 self.execs |= varparse.execs 100 else:
101 return varparse.value 101 var = self.d.getVar(key, True)
102 var = self.d.getVar(key, True)
103 self.references.add(key) 102 self.references.add(key)
104 if var is not None: 103 if var is not None:
105 return var 104 return var