summaryrefslogtreecommitdiffstats
path: root/lib/bb/cache.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bb/cache.py')
-rw-r--r--lib/bb/cache.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index 99d7395f86..6e152fa0c9 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__ = "140"
+__cache_version__ = "141"
def getCacheFile(path, filename):
return os.path.join(path, filename)
@@ -94,6 +94,7 @@ class CoreRecipeInfo(RecipeInfoCommon):
self.file_depends = metadata.getVar('__depends', False)
self.timestamp = bb.parse.cached_mtime(filename)
self.variants = self.listvar('__VARIANTS', metadata) + ['']
+ self.appends = self.listvar('__BBAPPEND', metadata)
self.nocache = self.getvar('__BB_DONT_CACHE', metadata)
self.skipreason = self.getvar('__SKIPPED', metadata)
@@ -429,7 +430,7 @@ class Cache(object):
automatically add the information to the cache or to your
CacheData. Use the add or add_info method to do so after
running this, or use loadData instead."""
- cached = self.cacheValid(filename)
+ cached = self.cacheValid(filename, appends)
if cached:
infos = []
# info_array item is a list of [CoreRecipeInfo, XXXRecipeInfo]
@@ -460,13 +461,13 @@ class Cache(object):
return cached, skipped, virtuals
- def cacheValid(self, fn):
+ def cacheValid(self, fn, appends):
"""
Is the cache valid for fn?
Fast version, no timestamps checked.
"""
if fn not in self.checked:
- self.cacheValidUpdate(fn)
+ self.cacheValidUpdate(fn, appends)
# Is cache enabled?
if not self.has_cache:
@@ -475,7 +476,7 @@ class Cache(object):
return True
return False
- def cacheValidUpdate(self, fn):
+ def cacheValidUpdate(self, fn, appends):
"""
Is the cache valid for fn?
Make thorough (slower) checks including timestamps.
@@ -524,6 +525,12 @@ class Cache(object):
self.remove(fn)
return False
+ if appends != info_array[0].appends:
+ logger.debug(2, "Cache: appends for %s changed", fn)
+ bb.note("%s to %s" % (str(appends), str(info_array[0].appends)))
+ self.remove(fn)
+ return False
+
invalid = False
for cls in info_array[0].variants:
virtualfn = self.realfn2virtual(fn, cls)