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)
downloadpoky-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):
290 logger.info("Out of date cache found, rebuilding...") 290 logger.info("Out of date cache found, rebuilding...")
291 291
292 def load_cachefile(self): 292 def load_cachefile(self):
293 # Firstly, using core cache file information for
294 # valid checking
295 with open(self.cachefile, "rb") as cachefile:
296 pickled = pickle.Unpickler(cachefile)
297 try:
298 cache_ver = pickled.load()
299 bitbake_ver = pickled.load()
300 except Exception:
301 logger.info('Invalid cache, rebuilding...')
302 return
303
304 if cache_ver != __cache_version__:
305 logger.info('Cache version mismatch, rebuilding...')
306 return
307 elif bitbake_ver != bb.__version__:
308 logger.info('Bitbake version mismatch, rebuilding...')
309 return
310
311
312 cachesize = 0 293 cachesize = 0
313 previous_progress = 0 294 previous_progress = 0
314 previous_percent = 0 295 previous_percent = 0
@@ -326,7 +307,24 @@ class Cache(object):
326 if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon): 307 if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
327 cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash) 308 cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
328 with open(cachefile, "rb") as cachefile: 309 with open(cachefile, "rb") as cachefile:
329 pickled = pickle.Unpickler(cachefile) 310 pickled = pickle.Unpickler(cachefile)
311 # Check cache version information
312 try:
313 cache_ver = pickled.load()
314 bitbake_ver = pickled.load()
315 except Exception:
316 logger.info('Invalid cache, rebuilding...')
317 return
318
319 if cache_ver != __cache_version__:
320 logger.info('Cache version mismatch, rebuilding...')
321 return
322 elif bitbake_ver != bb.__version__:
323 logger.info('Bitbake version mismatch, rebuilding...')
324 return
325
326 # Load the rest of the cache file
327 current_progress = 0
330 while cachefile: 328 while cachefile:
331 try: 329 try:
332 key = pickled.load() 330 key = pickled.load()
@@ -608,9 +606,8 @@ class Cache(object):
608 cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash) 606 cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
609 file_dict[cache_class_name] = open(cachefile, "wb") 607 file_dict[cache_class_name] = open(cachefile, "wb")
610 pickler_dict[cache_class_name] = pickle.Pickler(file_dict[cache_class_name], pickle.HIGHEST_PROTOCOL) 608 pickler_dict[cache_class_name] = pickle.Pickler(file_dict[cache_class_name], pickle.HIGHEST_PROTOCOL)
611 609 pickler_dict[cache_class_name].dump(__cache_version__)
612 pickler_dict['CoreRecipeInfo'].dump(__cache_version__) 610 pickler_dict[cache_class_name].dump(bb.__version__)
613 pickler_dict['CoreRecipeInfo'].dump(bb.__version__)
614 611
615 try: 612 try:
616 for key, info_array in self.depends_cache.items(): 613 for key, info_array in self.depends_cache.items():