diff options
author | Jürg Billeter <j@bitron.ch> | 2019-10-17 10:18:36 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2019-10-17 10:21:06 +0200 |
commit | bd5f6ffc0d0b3a8eda0f2318e4186f8f39c84415 (patch) | |
tree | a5806b243c2b29b27768e11856208d759b4f6f3d | |
parent | 50a5131596dda5072596637bb0d99af8c0d925a5 (diff) | |
download | buildstream-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.py | 5 |
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): |