From a2c07e8e5d65e3a1972d80bc25cadf91999fc3b7 Mon Sep 17 00:00:00 2001 From: Tristan Maat Date: Tue, 7 Nov 2017 18:04:13 +0000 Subject: 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 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) -- cgit v1.2.1