summaryrefslogtreecommitdiff
path: root/src/buildstream/element.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/element.py')
-rw-r--r--src/buildstream/element.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index 0efb6b48c..6bb00d393 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -258,6 +258,7 @@ class Element(Plugin):
self.__cached_remotely = None # Whether the element is cached remotely
# List of Sources
self.__sources = [] # type: List[Source]
+ self.__has_no_ref_source = False # at least one of the sources advertises BST_NO_REF = True
self.__weak_cache_key = None # Our cached weak cache key
self.__strict_cache_key = None # Our cached cache key for strict builds
self.__artifacts = context.artifactcache # Artifact cache
@@ -2167,6 +2168,8 @@ class Element(Plugin):
self.__cache_key_dict['sources'] = []
for source in self.__sources:
+ if source.BST_NO_REF:
+ self.__has_no_ref_source = True
self.__cache_key_dict['sources'].append(
{'key': source._get_unique_key(),
'name': source._get_source_name()})
@@ -2174,13 +2177,15 @@ class Element(Plugin):
self.__cache_key_dict['fatal-warnings'] = sorted(project._fatal_warnings)
cache_key_dict = self.__cache_key_dict.copy()
- cache_key_dict['dependency-keys-strong'] = []
- cache_key_dict['dependency-keys-weak'] = []
- if dep_strength == _KeyStrength.WEAK:
- cache_key_dict['dependency-keys-weak'] = dependencies
+ if self.__has_no_ref_source:
+ cache_key_dict['dependency-names'] = []
+ cache_key_dict['dependency-keys'] = []
+
+ if dep_strength == _KeyStrength.WEAK and not self.BST_STRICT_REBUILD:
+ cache_key_dict['dependency-names'] = dependencies
else:
- cache_key_dict['dependency-keys-strong'] = dependencies
+ cache_key_dict['dependency-keys'] = dependencies
return _cachekey.generate_key(cache_key_dict)