summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-10-17 10:18:36 +0200
committerJürg Billeter <j@bitron.ch>2019-10-17 10:21:06 +0200
commitbd5f6ffc0d0b3a8eda0f2318e4186f8f39c84415 (patch)
treea5806b243c2b29b27768e11856208d759b4f6f3d
parent50a5131596dda5072596637bb0d99af8c0d925a5 (diff)
downloadbuildstream-juerg/fetch-tree-test.tar.gz
element.py: Avoid redundant SourceCache.contains() callsjuerg/fetch-tree-test
If the sources of an element are cached, they will stay cached for the duration of the bst session.
-rw-r--r--src/buildstream/element.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index 65b87e631..21fec5006 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -269,6 +269,7 @@ class Element(Plugin):
self.__tracking_scheduled = False # Sources are scheduled to be tracked
self.__pull_done = False # Whether pull was attempted
self.__cached_successfully = None # If the Element is known to be successfully cached
+ self.__source_cached = None # If the sources are known to be successfully cached
self.__splits = None # Resolved regex objects for computing split domains
self.__whitelist_regex = None # Resolved regex object to check if file is allowed to overlap
# Location where Element.stage_sources() was called
@@ -2189,6 +2190,9 @@ class Element(Plugin):
# Check if sources are cached, generating the source key if it hasn't been
def _source_cached(self):
+ if self.__source_cached is not None:
+ return self.__source_cached
+
if self.__sources:
sourcecache = self._get_context().sourcecache
@@ -2205,6 +2209,7 @@ class Element(Plugin):
if not sourcecache.contains(source):
return False
+ self.__source_cached = True
return True
def _should_fetch(self, fetch_original=False):