diff --git a/src/buildstream/element.py b/src/buildstream/element.py index 584dc6231..0cfa81236 100644 --- a/src/buildstream/element.py +++ b/src/buildstream/element.py @@ -1264,10 +1264,12 @@ def _cached_failure(self): # (bool): Whether this element can currently be built # def _buildable(self): - if self._fetch_needed(): + # This check must be before `_fetch_needed()` as source cache status + # is not always available for non-build pipelines. + if not self.__assemble_scheduled: return False - if not self.__assemble_scheduled: + if self._fetch_needed(): return False return self.__build_deps_uncached == 0 @@ -2410,10 +2412,12 @@ def _update_ready_for_runtime_and_cached(self): rdep.__build_deps_uncached -= 1 assert not rdep.__build_deps_uncached < 0 - if rdep.__buildable_callback is not None and rdep._buildable(): + if rdep._buildable(): rdep.__update_cache_key_non_strict() - rdep.__buildable_callback(rdep) - rdep.__buildable_callback = None + + if rdep.__buildable_callback is not None: + rdep.__buildable_callback(rdep) + rdep.__buildable_callback = None # _walk_artifact_files() #