summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames Ennis <james.ennis@codethink.co.uk>2019-08-01 12:50:46 +0100
committerJames Ennis <james.ennis@codethink.com>2019-08-06 13:03:47 +0000
commitef778ca58d13be60faad37d55a4a64918c1b3d00 (patch)
treec6dc8ab2f03662d91416450fb0456eac92bcd862 /src
parentef757b5e8ee7d1bfab8750d4a87cbc374eda295e (diff)
downloadbuildstream-ef778ca58d13be60faad37d55a4a64918c1b3d00.tar.gz
plugins/elements/junction.py: Add 'ignore-junction-remotes' option
This option allows us to completely ignore remotes defined in the subproject. As a user, we may not wish to interact with subproject remotes as we may not be able to trust them, for example. An appropriate test and some documentation has also been added.
Diffstat (limited to 'src')
-rw-r--r--src/buildstream/_project.py8
-rw-r--r--src/buildstream/plugins/elements/junction.py11
2 files changed, 15 insertions, 4 deletions
diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py
index 3a5923f80..dff101582 100644
--- a/src/buildstream/_project.py
+++ b/src/buildstream/_project.py
@@ -647,9 +647,13 @@ class Project():
# If there is a junction Element which specifies that we want to remotely cache
# its elements, append the junction's remotes to the artifact cache specs list
- if self.junction and self.junction.cache_junction_elements:
+ if self.junction:
parent = self.junction._get_project()
- self.artifact_cache_specs = parent.artifact_cache_specs + self.artifact_cache_specs
+ if self.junction.cache_junction_elements:
+ self.artifact_cache_specs = parent.artifact_cache_specs + self.artifact_cache_specs
+
+ if self.junction.ignore_junction_remotes:
+ self.artifact_cache_specs = []
# Load source caches with pull/push config
self.source_cache_specs = SourceCache.specs_from_config_node(config, self.directory)
diff --git a/src/buildstream/plugins/elements/junction.py b/src/buildstream/plugins/elements/junction.py
index 235702b07..aec32516b 100644
--- a/src/buildstream/plugins/elements/junction.py
+++ b/src/buildstream/plugins/elements/junction.py
@@ -59,12 +59,18 @@ Overview
# should interact with project remotes (default: False).
cache-junction-elements: False
+ # Optionally ignore junction remotes, this means that BuildStream
+ # will not attempt to pull artifacts from the junction project's
+ # remote(s) (default: False).
+ ignore-junction-remotes: False
+
.. note::
The configuration option to allow specifying junction targets is available
since :ref:`format version 24 <project_format_version>` and the configuration
- option allowing junction project elements to interact with parent remotes is
- available since :ref:`format version 25 <project_format_version>`.
+ options allowing for junction project elements to interact with parent remotes
+ or to completely ignore junction project remotes are available since
+ :ref:`format version 25 <project_format_version>`.
.. note::
@@ -187,6 +193,7 @@ class JunctionElement(Element):
self.target_element = None
self.target_junction = None
self.cache_junction_elements = node.get_bool('cache-junction-elements', default=False)
+ self.ignore_junction_remotes = node.get_bool('ignore-junction-remotes', default=False)
def preflight(self):
# "target" cannot be used in conjunction with: