diff options
Diffstat (limited to 'buildstream/_stream.py')
-rw-r--r-- | buildstream/_stream.py | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/buildstream/_stream.py b/buildstream/_stream.py index 262b38852..87c2d172f 100644 --- a/buildstream/_stream.py +++ b/buildstream/_stream.py @@ -41,6 +41,9 @@ from .types import _KeyStrength from . import utils, _yaml, _site from . import Scope, Consistency +import sys +def debug(*args): + print("➤➤➤", *args, file=sys.stderr) # Stream() # @@ -152,6 +155,7 @@ class Stream(): isolate=False, command=None, usebuildtree=None): + raise NotImplementedError() # Assert we have everything we need built, unless the directory is specified # in which case we just blindly trust the directory, using the element @@ -258,8 +262,10 @@ class Stream(): if self._artifacts.has_fetch_remotes(): self._add_queue(PullQueue(self._scheduler)) - self._add_queue(FetchQueue(self._scheduler, skip_cached=True)) - self._add_queue(BuildQueue(self._scheduler)) + build_queue = BuildQueue(self._scheduler) + + self._add_queue(FetchQueue(self._scheduler, next_queue=build_queue, skip_cached=True)) + self._add_queue(build_queue) if self._artifacts.has_push_remotes(): self._add_queue(PushQueue(self._scheduler)) @@ -359,7 +365,6 @@ class Stream(): selection=PipelineSelection.NONE, ignore_junction_targets=False, remote=None): - use_config = True if remote: use_config = False @@ -400,6 +405,7 @@ class Stream(): selection=PipelineSelection.NONE, ignore_junction_targets=False, remote=None): + raise NotImplementedError() use_config = True if remote: @@ -1022,6 +1028,8 @@ class Stream(): rewritable=rewritable, fetch_subprojects=fetch_subprojects) + debug("Elements order", [str(e) for e in elements]) + # Obtain the ArtifactElement objects artifacts = [self._project.create_artifact_element(ref) for ref in target_artifacts] @@ -1093,6 +1101,8 @@ class Stream(): selected, except_elements) + debug("SELECTED", [str(e) for e in selected]) + # Set the "required" artifacts that should not be removed # while this pipeline is active # @@ -1107,6 +1117,10 @@ class Stream(): itertools.chain.from_iterable( [element.sources() for element in required_elements()])) + counter = itertools.count() + for element in selected: + element._pipeline_id = next(counter) + debug("Setting id to", element._pipeline_id, "for", element) if selection == PipelineSelection.PLAN and dynamic_plan: # We use a dynamic build plan, only request artifacts of top-level targets, # others are requested dynamically as needed. @@ -1153,7 +1167,10 @@ class Stream(): def _enqueue_plan(self, plan, *, queue=None): queue = queue or self._first_non_track_queue - queue.enqueue(plan) + debug("Plan is: ", [str(e) for e in plan]) + + for element in plan: + queue.push(element) self.session_elements += plan # _run() @@ -1188,10 +1205,11 @@ class Stream(): # fetch_original (Bool): Whether to fetch original unstaged # def _fetch(self, elements, *, track_elements=None, fetch_original=False): - if track_elements is None: track_elements = [] + debug("FETCH", [str(e) for e in elements], [str(e) for e in track_elements]) + # Subtract the track elements from the fetch elements, they will be added separately fetch_plan = self._pipeline.subtract_elements(elements, track_elements) |