diff options
author | James Ennis <james.ennis@codethink.co.uk> | 2019-08-01 12:06:02 +0100 |
---|---|---|
committer | James Ennis <james.ennis@codethink.com> | 2019-08-06 13:03:47 +0000 |
commit | ef757b5e8ee7d1bfab8750d4a87cbc374eda295e (patch) | |
tree | 1ed88743f0d11200c87ffeaed740f294504568be /src/buildstream | |
parent | 34529551faf0c1206e5fe887355da882a5c32c9e (diff) | |
download | buildstream-ef757b5e8ee7d1bfab8750d4a87cbc374eda295e.tar.gz |
plugins/elements/junction.py: Add 'cache-junction-elements' option
The 'cache-junction-elements' configuration option for junction's
is a boolean which enables elements from within the junction to
interact with the parent project's remote(s).
A test has been added to enforce this behaviour and the
BST_FORMAT_VERSION has been bumped.
Diffstat (limited to 'src/buildstream')
-rw-r--r-- | src/buildstream/_project.py | 6 | ||||
-rw-r--r-- | src/buildstream/_versions.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/junction.py | 9 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py index 8d06c7cef..3a5923f80 100644 --- a/src/buildstream/_project.py +++ b/src/buildstream/_project.py @@ -645,6 +645,12 @@ class Project(): # Load artifacts pull/push configuration for this project self.artifact_cache_specs = ArtifactCache.specs_from_config_node(config, self.directory) + # 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: + parent = self.junction._get_project() + self.artifact_cache_specs = parent.artifact_cache_specs + 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/_versions.py b/src/buildstream/_versions.py index c439f59fb..cbaa52e4f 100644 --- a/src/buildstream/_versions.py +++ b/src/buildstream/_versions.py @@ -23,7 +23,7 @@ # This version is bumped whenever enhancements are made # to the `project.conf` format or the core element format. # -BST_FORMAT_VERSION = 24 +BST_FORMAT_VERSION = 25 # The base BuildStream artifact version diff --git a/src/buildstream/plugins/elements/junction.py b/src/buildstream/plugins/elements/junction.py index b21ef0777..235702b07 100644 --- a/src/buildstream/plugins/elements/junction.py +++ b/src/buildstream/plugins/elements/junction.py @@ -55,10 +55,16 @@ Overview # Note that this option cannot be used in conjunction with sources. target: sub-project.bst:sub-sub-project.bst + # Optionally declare whether elements within the junction project + # should interact with project remotes (default: False). + cache-junction-elements: False + .. note:: The configuration option to allow specifying junction targets is available - since :ref:`format version 24 <project_format_version>`. + 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>`. .. note:: @@ -180,6 +186,7 @@ class JunctionElement(Element): self.target = node.get_str('target', default=None) self.target_element = None self.target_junction = None + self.cache_junction_elements = node.get_bool('cache-junction-elements', default=False) def preflight(self): # "target" cannot be used in conjunction with: |