diff options
author | Jürg Billeter <j@bitron.ch> | 2019-10-17 10:18:36 +0200 |
---|---|---|
committer | bst-marge-bot <marge-bot@buildstream.build> | 2019-11-05 07:42:05 +0000 |
commit | 601a06ddf8ffa1cc797be0c64ac2e74b35c52d74 (patch) | |
tree | 0ba113bd5bb93bf267c3acb96a78978db34d5155 | |
parent | 4c623c0bd24da1610aa916de1600df115a139c5d (diff) | |
download | buildstream-601a06ddf8ffa1cc797be0c64ac2e74b35c52d74.tar.gz |
element.py: Avoid redundant SourceCache.contains() calls
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 a6b2af110..9a0a71a97 100644 --- a/src/buildstream/element.py +++ b/src/buildstream/element.py @@ -267,6 +267,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 @@ -2173,6 +2174,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 @@ -2189,6 +2193,7 @@ class Element(Plugin): if not sourcecache.contains(source): return False + self.__source_cached = True return True def _should_fetch(self, fetch_original=False): |