summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-07-11 14:04:15 +0200
committerJürg Billeter <j@bitron.ch>2019-07-11 14:09:43 +0200
commit1500dcaaa5dfffef4026f462a291ba7992ffa4e4 (patch)
tree4affec0669625b1464617b5155f294f9cea064b3
parent077edb0040b928c669e617e1c4a6d6c87c27cd74 (diff)
downloadbuildstream-juerg/update_ready_for_runtime.tar.gz
-rw-r--r--src/buildstream/element.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index 2ca83f783..6610b7eb3 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -3214,6 +3214,37 @@ class Element(Plugin):
self.__cache_key is not None and not self.__cache_keys_unstable:
self.__ready_for_runtime = True
+ if not self.__ready_for_runtime_and_cached:
+ if self.__runtime_deps_uncached == 0 and self._cached_success() and \
+ self.__cache_key and not self.__cache_keys_unstable:
+ self.__ready_for_runtime_and_cached = True
+
+ # Notify reverse dependencies
+ for rdep in self.__reverse_runtime_deps:
+ n = rdep.__runtime_deps_without_cache_key - 1
+ rdep.__runtime_deps_without_cache_key = n
+
+ rdep.__runtime_deps_uncached -= 1
+
+ # Try to notify reverse dependencies if all runtime deps are ready
+ if n == 0:
+ rdep.__update_ready_for_runtime()
+
+ for rdep in self.__reverse_build_deps:
+ n = rdep.__build_deps_without_cache_key - 1
+ rdep.__build_deps_without_cache_key = n
+
+ rdep.__build_deps_uncached -= 1
+
+ if n == 0:
+ rdep._update_state()
+
+ if rdep.__buildable_callback is not None and rdep._buildable():
+ rdep.__buildable_callback(rdep)
+ rdep.__buildable_callback = None
+
+ return
+
# Notify reverse dependencies
for rdep in self.__reverse_runtime_deps:
n = rdep.__runtime_deps_without_cache_key - 1