summaryrefslogtreecommitdiffstats
path: root/lib/bb/cache.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2011-07-06 17:54:49 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-07-07 10:56:34 +0100
commit54fe91fe96aaae47c40077c5f441c79da71da777 (patch)
treec54157230391e18f7f12d25d2579bd3e5ba62f0a /lib/bb/cache.py
parentc8f46dfcc2f660a9cd52c64515624fad8d66461a (diff)
downloadopenembedded-core-contrib-54fe91fe96aaae47c40077c5f441c79da71da777.tar.gz
cache.py: Ensure additional .bbappend files are accounted for
Currently if a user adds a new .bbappend file to the system, the cache still thinks the cached data is valid. This code fixes that to ensure additions and changed in append application order are accounted for. [YOCTO #1091] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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)