When SRCREV autorevisioning for a recipe is in use, don't cache the recipe (from...
authorRichard Purdie <rpurdie@linux.intel.com>
Sat, 6 Dec 2008 11:43:08 +0000 (11:43 +0000)
committerRichard Purdie <rpurdie@linux.intel.com>
Sat, 6 Dec 2008 11:43:08 +0000 (11:43 +0000)
ChangeLog
lib/bb/cache.py
lib/bb/fetch/__init__.py

index ec3df1f..b260bca 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -62,6 +62,7 @@ Changes in BitBake 1.8.x:
        - Perforce fetcher fix to use commandline options instead of being overriden by the environment
        - use @rev when doing a svn checkout
        - Add osc fetcher (from Joshua Lock in Poky)
+       - When SRCREV autorevisioning for a recipe is in use, don't cache the recipe
 
 Changes in BitBake 1.8.10:
        - Psyco is available only for x86 - do not use it on other architectures.
index 5072ddf..a4a4f47 100644 (file)
@@ -39,7 +39,7 @@ except ImportError:
     import pickle
     bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
 
-__cache_version__ = "129"
+__cache_version__ = "130"
 
 class Cache:
     """
@@ -263,6 +263,7 @@ class Cache:
         Save the cache
         Called from the parser when complete (or exiting)
         """
+        import copy
 
         if not self.has_cache:
             return
@@ -275,8 +276,14 @@ class Cache:
         version_data['CACHE_VER'] = __cache_version__
         version_data['BITBAKE_VER'] = bb.__version__
 
+        cache_data = copy.deepcopy(self.depends_cache)
+        for fn in self.depends_cache:
+            if '__BB_DONT_CACHE' in self.depends_cache[fn] and self.depends_cache[fn]['__BB_DONT_CACHE']:
+                bb.msg.debug(2, bb.msg.domain.Cache, "Not caching %s, marked as not cacheable" % fn)
+                del cache_data[fn]
+
         p = pickle.Pickler(file(self.cachefile, "wb" ), -1 )
-        p.dump([self.depends_cache, version_data])
+        p.dump([cache_data, version_data])
 
     def mtime(self, cachefile):
         return bb.parse.cached_mtime_noerror(cachefile)
@@ -377,6 +384,8 @@ class Cache:
         if not self.getVar('BROKEN', file_name, True) and not self.getVar('EXCLUDE_FROM_WORLD', file_name, True):
             cacheData.possible_world.append(file_name)
 
+        # Touch this to make sure its in the cache
+        self.getVar('__BB_DONT_CACHE', file_name, True)
 
     def load_bbfile( self, bbfile , config):
         """
index 7fe1b8e..ab0865b 100644 (file)
@@ -232,6 +232,8 @@ def get_srcrev(d):
         bb.msg.error(bb.msg.domain.Fetcher, "SRCREV was used yet no valid SCM was found in SRC_URI")
         raise ParameterError
 
+    bb.data.setVar('__BB_DONT_CACHE','1', d)
+
     if len(scms) == 1:
         return urldata[scms[0]].method.sortable_revision(scms[0], urldata[scms[0]], d)