]> code.ossystems Code Review - openembedded-core.git/commitdiff
Simplify cache syncing
authorChris Larson <chris_larson@mentor.com>
Fri, 19 Nov 2010 05:28:09 +0000 (22:28 -0700)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 4 Jan 2011 14:46:43 +0000 (14:46 +0000)
Rather than adding nocache items to the cache, then copying the cache and
removing them to sync it, don't add them in the first place.  Also use 'with'
for the cachefile.

(Bitbake rev: 343b6f6255ad020c39e30742175a241f0859a5a6)

Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/cache.py

index 93dccf21f162845e879b2c726c7a5f8797a3de09..3edd80ec3b60b6dd3637536b29342f3beef5b341 100644 (file)
@@ -402,22 +402,15 @@ class Cache(object):
             logger.debug(2, "Cache is clean, not saving.")
             return
 
-        version_data = {}
-        version_data['CACHE_VER'] = __cache_version__
-        version_data['BITBAKE_VER'] = bb.__version__
-
-        cache_data = dict(self.depends_cache)
-        for fn, info in self.depends_cache.iteritems():
-            if info.nocache:
-                logger.debug(2, "Not caching %s, marked as not cacheable", fn)
-                del cache_data[fn]
-            elif info.pv and 'SRCREVINACTION' in info.pv:
-                logger.error("Not caching %s as it had SRCREVINACTION in PV. "
-                             "Please report this bug", fn)
-                del cache_data[fn]
-
-        p = pickle.Pickler(file(self.cachefile, "wb"), -1)
-        p.dump([cache_data, version_data])
+        version_data = {
+            'CACHE_VER': __cache_version__,
+            'BITBAKE_VER': bb.__version__,
+        }
+
+        with open(self.cachefile, "wb") as cachefile:
+            pickle.Pickler(cachefile, -1).dump([self.depends_cache,
+                                                version_data])
+
         del self.depends_cache
 
     @staticmethod
@@ -425,13 +418,11 @@ class Cache(object):
         return bb.parse.cached_mtime_noerror(cachefile)
 
     def add_info(self, filename, info, cacheData, parsed=None):
-        self.depends_cache[filename] = info
         cacheData.add_from_recipeinfo(filename, info)
-        if parsed and not info.nocache:
-            # The recipe was parsed, and is not marked as being
-            # uncacheable, so we need to ensure that we write out the
-            # new cache data.
-            self.cacheclean = False
+        if 'SRCREVINACTION' not in info.pv and not info.nocache:
+            if parsed:
+                self.cacheclean = False
+            self.depends_cache[filename] = info
 
     def add(self, file_name, data, cacheData, parsed=None):
         """