diff options
-rw-r--r-- | src/buildstream/element.py | 13 |
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) |