diff options
author | Tristan Maat <tristan.maat@codethink.co.uk> | 2017-10-31 15:58:14 +0000 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-11-04 17:35:30 +0900 |
commit | 6d6f44eaa38222ce7f339e1d9e0321c96614f656 (patch) | |
tree | 530cb5a8842f75e9e4b92179e16ac3c2d49796f4 | |
parent | 2a7d316d9480f50fa67b0958eb3f1341450e63cd (diff) | |
download | buildstream-6d6f44eaa38222ce7f339e1d9e0321c96614f656.tar.gz |
_pipeline.py: Misc adjustments to multiple targets
-rw-r--r-- | buildstream/_pipeline.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/buildstream/_pipeline.py b/buildstream/_pipeline.py index 8d390fc3a..05801895e 100644 --- a/buildstream/_pipeline.py +++ b/buildstream/_pipeline.py @@ -39,6 +39,7 @@ from . import Scope from . import _site from . import _yaml, utils from ._platform import Platform +from .element import Element from ._scheduler import SchedStatus, TrackQueue, FetchQueue, BuildQueue, PullQueue, PushQueue @@ -170,13 +171,14 @@ class Pipeline(): self.total_elements = len(list(self.dependencies(Scope.ALL))) for element_name, source, workspace in project._list_workspaces(): - element = self.target.search(Scope.ALL, element_name) + for target in self.targets: + element = target.search(Scope.ALL, element_name) - if element is None: - self.unused_workspaces.append((element_name, source, workspace)) - continue + if element is None: + self.unused_workspaces.append((element_name, source, workspace)) + continue - self.project._set_workspace(element, source, workspace) + self.project._set_workspace(element, source, workspace) if fetch_remote_refs and self.artifacts.can_fetch(): try: @@ -207,7 +209,20 @@ class Pipeline(): # also iterate over sources. # def dependencies(self, scope, include_sources=False): - for element in self.target.dependencies(scope): + # Create a dummy element (can't use namedtuple because of the + # '__' prefix). + class DummyElement(object): + def __init__(self, build_dependencies, runtime_dependencies): + self.name = '' + self._Element__build_dependencies = build_dependencies + self._Element__runtime_dependencies = runtime_dependencies + dummy = DummyElement(self.targets, self.targets) + + for element in Element.dependencies(dummy, scope): + # We don't actually want to find the dummy element + if isinstance(element, DummyElement): + continue + if include_sources: for source in element.sources(): yield source @@ -775,7 +790,7 @@ class Pipeline(): elements = None if mode == 'none': - elements = [self.target] + elements = self.targets elif mode == 'plan': elements = list(self.plan()) else: |