summaryrefslogtreecommitdiffstats
path: root/bitbake/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:57:42 +0100
commit159aee22dc7d8c78ca2920dfc58d8bf9238ef720 (patch)
tree88efc1c0ae9ceeb176f21889119bd918ecef9af0 /bitbake/lib/bb/cache.py
parentd4132fa12885fc050313a5c9aa6903e4fa92c94f (diff)
downloadast2050-yocto-poky-159aee22dc7d8c78ca2920dfc58d8bf9238ef720.zip
ast2050-yocto-poky-159aee22dc7d8c78ca2920dfc58d8bf9238ef720.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] (Bitbake rev: 54fe91fe96aaae47c40077c5f441c79da71da777) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/cache.py')
-rw-r--r--bitbake/lib/bb/cache.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index 99d7395..6e152fa 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/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)
OpenPOWER on IntegriCloud