summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Maat <tristan.maat@codethink.co.uk>2017-11-07 18:04:13 +0000
committerTristan Maat <tristan.maat@codethink.co.uk>2017-11-07 18:04:13 +0000
commita2c07e8e5d65e3a1972d80bc25cadf91999fc3b7 (patch)
treebbf76f661676b650792287a8078c7ab956dd5859
parentb354b0f62e82b1d46193f1454c7d0d4c5bcaba28 (diff)
downloadbuildstream-a2c07e8e5d65e3a1972d80bc25cadf91999fc3b7.tar.gz
Load excepted elements as part of the pipeline
-rw-r--r--buildstream/_frontend/main.py21
-rw-r--r--buildstream/_pipeline.py12
2 files changed, 20 insertions, 13 deletions
diff --git a/buildstream/_frontend/main.py b/buildstream/_frontend/main.py
index 19823417a..e8f8bb7f6 100644
--- a/buildstream/_frontend/main.py
+++ b/buildstream/_frontend/main.py
@@ -245,9 +245,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("")
@@ -283,9 +284,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("")
@@ -423,9 +425,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)
@@ -548,7 +550,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)
@@ -766,7 +768,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) + '-' +
self.host_arch + '-' + self.target_arch)
@@ -840,7 +843,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 08f231723..1ff568e3a 100644
--- a/buildstream/_pipeline.py
+++ b/buildstream/_pipeline.py
@@ -126,7 +126,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,
@@ -141,7 +141,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,
context.host_arch, context.target_arch)
meta_elements = loader.load(rewritable, load_ticker)
@@ -159,8 +159,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)