summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/cache.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2016-07-22 11:27:21 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-07-26 08:10:35 +0100
commitc9e65c5d29afa5a9fc89b929e4f2a3d5954428c0 (patch)
treeb278bd99ff48ba94cc72249018b0a497993b1d31 /bitbake/lib/bb/cache.py
parent09f6a56aa48f8d73d2900ab7c874258741bc054b (diff)
downloadopenembedded-core-contrib-c9e65c5d29afa5a9fc89b929e4f2a3d5954428c0.tar.gz
bitbake: cache: Improve versions fields handling
Firstly, don't store the versions fields in memory in the cache objects data store. This just complicates the code for no good reason. Secondly, write the version fields to all cache files, not just the core one. This makes everything consistent and easier. (Bitbake rev: cb666262b2f986b5d9331dfb30458ef1a151fa4d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/cache.py')
-rw-r--r--bitbake/lib/bb/cache.py43
1 files changed, 20 insertions, 23 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index b90d488b99..d0fb234f89 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/lib/bb/cache.py
@@ -290,25 +290,6 @@ class Cache(object):
logger.info("Out of date cache found, rebuilding...")
def load_cachefile(self):
- # Firstly, using core cache file information for
- # valid checking
- with open(self.cachefile, "rb") as cachefile:
- pickled = pickle.Unpickler(cachefile)
- try:
- cache_ver = pickled.load()
- bitbake_ver = pickled.load()
- except Exception:
- logger.info('Invalid cache, rebuilding...')
- return
-
- if cache_ver != __cache_version__:
- logger.info('Cache version mismatch, rebuilding...')
- return
- elif bitbake_ver != bb.__version__:
- logger.info('Bitbake version mismatch, rebuilding...')
- return
-
-
cachesize = 0
previous_progress = 0
previous_percent = 0
@@ -326,7 +307,24 @@ class Cache(object):
if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
with open(cachefile, "rb") as cachefile:
- pickled = pickle.Unpickler(cachefile)
+ pickled = pickle.Unpickler(cachefile)
+ # Check cache version information
+ try:
+ cache_ver = pickled.load()
+ bitbake_ver = pickled.load()
+ except Exception:
+ logger.info('Invalid cache, rebuilding...')
+ return
+
+ if cache_ver != __cache_version__:
+ logger.info('Cache version mismatch, rebuilding...')
+ return
+ elif bitbake_ver != bb.__version__:
+ logger.info('Bitbake version mismatch, rebuilding...')
+ return
+
+ # Load the rest of the cache file
+ current_progress = 0
while cachefile:
try:
key = pickled.load()
@@ -608,9 +606,8 @@ class Cache(object):
cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
file_dict[cache_class_name] = open(cachefile, "wb")
pickler_dict[cache_class_name] = pickle.Pickler(file_dict[cache_class_name], pickle.HIGHEST_PROTOCOL)
-
- pickler_dict['CoreRecipeInfo'].dump(__cache_version__)
- pickler_dict['CoreRecipeInfo'].dump(bb.__version__)
+ pickler_dict[cache_class_name].dump(__cache_version__)
+ pickler_dict[cache_class_name].dump(bb.__version__)
try:
for key, info_array in self.depends_cache.items():