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:23 +0100
commit8a42d082315bd6ce091d006bf83476db257fa48b (patch)
tree00ef533bf28067bd063d311cd7ba3f74d655bb06
parent97db2a0792d605f27d434bc6a4acce52857deee1 (diff)
downloadbitbake-8a42d082315bd6ce091d006bf83476db257fa48b.tar.gz
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. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/cache.py2
-rw-r--r--lib/bb/data_smart.py7
2 files changed, 4 insertions, 5 deletions
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index b99fa99cf..318781ba9 100644
--- a/lib/bb/cache.py
+++ b/lib/bb/cache.py
@@ -43,7 +43,7 @@ except ImportError:
logger.info("Importing cPickle failed. "
"Falling back to a very slow implementation.")
-__cache_version__ = "146"
+__cache_version__ = "147"
def getCacheFile(path, filename, data_hash):
return os.path.join(path, filename + "." + data_hash)
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index 79bf33108..71b67e458 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -96,10 +96,9 @@ class VariableParse:
raise Exception("variable %s references itself!" % self.varname)
if key in self.d.expand_cache:
varparse = self.d.expand_cache[key]
- self.references |= varparse.references
- self.execs |= varparse.execs
- return varparse.value
- var = self.d.getVar(key, True)
+ var = varparse.value
+ else:
+ var = self.d.getVar(key, True)
self.references.add(key)
if var is not None:
return var