aboutsummaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2008-09-30 21:54:47 +0000
committerRichard Purdie <richard@openedhand.com>2008-09-30 21:54:47 +0000
commit979f987c44928f2d47d319cf5fc34e7f3d2113b7 (patch)
treeb49dca768f15cc67c1fa2ff499552a2c67baa7c1 /bitbake
parente2d321075a6c1aecd09a705d97f2347863a685f9 (diff)
downloadopenembedded-core-contrib-979f987c44928f2d47d319cf5fc34e7f3d2113b7.tar.gz
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
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/ChangeLog1
-rw-r--r--bitbake/lib/bb/cache.py11
-rw-r--r--bitbake/lib/bb/fetch/__init__.py2
3 files changed, 13 insertions, 1 deletions
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)