You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by gi...@apache.org on 2020/12/29 13:08:10 UTC
[buildstream] 02/04: Load excepted elements as part of the pipeline
This is an automated email from the ASF dual-hosted git repository.
github-bot 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)