[oe-commits] [bitbake] 03/06: cache: Improve versions fields handling

git at git.openembedded.org git at git.openembedded.org
Fri Jul 22 10:41:49 UTC 2016


rpurdie pushed a commit to branch master-next
in repository bitbake.

commit cb666262b2f986b5d9331dfb30458ef1a151fa4d
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Fri Jul 22 11:27:21 2016 +0100

    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.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/cache.py | 43 ++++++++++++++++++++-----------------------
 1 file changed, 20 insertions(+), 23 deletions(-)

diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index b90d488..d0fb234 100644
--- a/lib/bb/cache.py
+++ b/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():

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list