From 979f987c44928f2d47d319cf5fc34e7f3d2113b7 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 30 Sep 2008 21:54:47 +0000 Subject: bitbake cache.py: When SRCREV autorevisioning for a recipe is in use, don't cache the recipe. Based on work from Heikki Paajanen git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5352 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- bitbake/ChangeLog | 1 + bitbake/lib/bb/cache.py | 11 ++++++++++- bitbake/lib/bb/fetch/__init__.py | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'bitbake') diff --git a/bitbake/ChangeLog b/bitbake/ChangeLog index ceb7e648b7..2d50c0e364 100644 --- a/bitbake/ChangeLog +++ b/bitbake/ChangeLog @@ -59,6 +59,7 @@ Changes in BitBake 1.8.x: all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used to extend the internal whitelist. + - 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. diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index fe38ea0aee..e0ba1de38e 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py @@ -259,6 +259,7 @@ class Cache: Save the cache Called from the parser when complete (or exiting) """ + import copy if not self.has_cache: return @@ -271,8 +272,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) @@ -373,6 +380,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): """ diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py index 721eb4d646..9300d0c234 100644 --- a/bitbake/lib/bb/fetch/__init__.py +++ b/bitbake/lib/bb/fetch/__init__.py @@ -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) -- cgit 1.2.3-korg