You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2021/02/04 08:01:45 UTC

[buildstream] 02/04: Load excepted elements as part of the pipeline

This is an automated email from the ASF dual-hosted git repository.

tvb pushed a commit to branch test_coverage_segfault
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 8f9558e080042555110af2559347a54b04f33a04
Author: Tristan Maat <tr...@codethink.co.uk>
AuthorDate: Tue Nov 7 18:04:13 2017 +0000

    Load excepted elements as part of the pipeline
---
 buildstream/_frontend/main.py | 21 ++++++++++++---------
 buildstream/_pipeline.py      | 12 ++++++++----
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/buildstream/_frontend/main.py b/buildstream/_frontend/main.py
index 3189e10..446445c 100644
--- a/buildstream/_frontend/main.py
+++ b/buildstream/_frontend/main.py
@@ -242,9 +242,10 @@ def fetch(app, elements, deps, track, except_):
         plan:  Only dependencies required for the build plan
         all:   All dependencies
     """
-    app.initialize(elements, rewritable=track, inconsistent=track)
+    app.initialize(elements, except_=except_,
+                   rewritable=track, inconsistent=track)
     try:
-        dependencies = app.pipeline.deps_elements(deps, except_)
+        dependencies = app.pipeline.deps_elements(deps)
         app.print_heading(deps=dependencies)
         app.pipeline.fetch(app.scheduler, dependencies, track)
         click.echo("")
@@ -281,9 +282,10 @@ def track(app, elements, deps, except_):
         none:  No dependencies, just the element itself
         all:   All dependencies
     """
-    app.initialize(elements, rewritable=True, inconsistent=True)
+    app.initialize(elements, except_=except_,
+                   rewritable=True, inconsistent=True)
     try:
-        dependencies = app.pipeline.deps_elements(deps, except_)
+        dependencies = app.pipeline.deps_elements(deps)
         app.print_heading(deps=dependencies)
         app.pipeline.track(app.scheduler, dependencies)
         click.echo("")
@@ -422,9 +424,9 @@ def show(app, elements, deps, except_, order, format, downloadable):
         bst show target.bst --format \\
             $'---------- %{name} ----------\\n%{vars}'
     """
-    app.initialize(elements, fetch_remote_refs=downloadable)
+    app.initialize(elements, except_=except_, fetch_remote_refs=downloadable)
     try:
-        dependencies = app.pipeline.deps_elements(deps, except_)
+        dependencies = app.pipeline.deps_elements(deps)
     except PipelineError as e:
         click.echo("{}".format(e))
         sys.exit(-1)
@@ -550,7 +552,7 @@ def source_bundle(app, target, force, directory,
     """Produce a source bundle to be manually executed"""
     app.initialize((target,), rewritable=track, inconsistent=track)
     try:
-        dependencies = app.pipeline.deps_elements('all', except_)
+        dependencies = app.pipeline.deps_elements('all')
         app.print_heading(dependencies)
         app.pipeline.source_bundle(app.scheduler, dependencies, force, track,
                                    compression, directory)
@@ -762,7 +764,8 @@ class App():
     #
     # Initialize the main pipeline
     #
-    def initialize(self, elements, rewritable=False, inconsistent=False, fetch_remote_refs=False):
+    def initialize(self, elements, except_=tuple(), rewritable=False,
+                   inconsistent=False, fetch_remote_refs=False):
 
         profile_start(Topics.LOAD_PIPELINE, "_".join(t.replace(os.sep, '-') for t in elements))
 
@@ -835,7 +838,7 @@ class App():
             sys.exit(-1)
 
         try:
-            self.pipeline = Pipeline(self.context, self.project, elements,
+            self.pipeline = Pipeline(self.context, self.project, elements, except_,
                                      inconsistent=inconsistent,
                                      rewritable=rewritable,
                                      fetch_remote_refs=fetch_remote_refs,
diff --git a/buildstream/_pipeline.py b/buildstream/_pipeline.py
index 9860d29..f89ad2d 100644
--- a/buildstream/_pipeline.py
+++ b/buildstream/_pipeline.py
@@ -112,7 +112,7 @@ class Planner():
 #
 class Pipeline():
 
-    def __init__(self, context, project, targets,
+    def __init__(self, context, project, targets, except_,
                  inconsistent=False,
                  rewritable=False,
                  fetch_remote_refs=False,
@@ -127,7 +127,7 @@ class Pipeline():
         self.unused_workspaces = []
         self._resolved_elements = {}
 
-        loader = Loader(self.project.element_path, targets,
+        loader = Loader(self.project.element_path, targets + except_,
                         self.project._options)
         meta_elements = loader.load(rewritable, load_ticker)
         if load_ticker:
@@ -144,8 +144,12 @@ class Pipeline():
         self.source_factory = SourceFactory(pluginbase, project._plugin_source_paths)
 
         # Resolve the real elements now that we've resolved the project
-        self.targets = [self.resolve(meta_element, ticker=resolve_ticker)
-                        for meta_element in meta_elements]
+        resolved_elements = [self.resolve(meta_element, ticker=resolve_ticker)
+                             for meta_element in meta_elements]
+
+        self.targets = resolved_elements[:len(targets)]
+        self.exceptions = resolved_elements[len(targets):]
+
         if resolve_ticker:
             resolve_ticker(None)