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.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index 08326c6f3..587e9133f 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -208,7 +208,8 @@ class Element(Plugin):
self.__runtime_dependencies = [] # Direct runtime dependency Elements
self.__build_dependencies = [] # Direct build dependency Elements
self.__reverse_dependencies = set() # Direct reverse dependency Elements
- self.__ready_for_runtime = False # Wether the element has all its dependencies ready and has a cache key
+ self.__ready_for_runtime = False # Whether the element has all dependencies ready and has a cache key
+ self.__ready_for_runtime_2 = False # XXX: Probably need a better name than this
self.__sources = [] # List of Sources
self.__weak_cache_key = None # Our cached weak cache key
self.__strict_cache_key = None # Our cached cache key for strict builds
@@ -1219,6 +1220,14 @@ class Element(Plugin):
self.__ready_for_runtime = all(
dep.__ready_for_runtime for dep in self.__runtime_dependencies)
+ if not self.__ready_for_runtime_2 and self.__cache_key is not None and self._cached():
+ self.__ready_for_runtime_2 = all(
+ dep.__ready_for_runtime_2 for dep in self.__runtime_dependencies)
+
+ if self.__buildable_callback is not None and self._buildable():
+ self.__buildable_callback(self)
+ self.__buildable_callback = None
+
# _get_display_key():
#
# Returns cache keys for display purposes
@@ -2873,10 +2882,12 @@ class Element(Plugin):
element = queue.pop()
old_ready_for_runtime = element.__ready_for_runtime
+ old_ready_for_runtime_2 = element.__ready_for_runtime_2
old_strict_cache_key = element.__strict_cache_key
element._update_state()
if element.__ready_for_runtime != old_ready_for_runtime or \
+ element.__ready_for_runtime_2 != old_ready_for_runtime_2 or \
element.__strict_cache_key != old_strict_cache_key:
for rdep in element.__reverse_dependencies:
queue.push(rdep._unique_id, rdep)