summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Jardón <jjardon@gnome.org>2019-02-08 20:29:05 +0000
committerJavier Jardón <jjardon@gnome.org>2019-02-08 20:29:05 +0000
commita937f99a5676f4284a2a4d578db18d2113eb3e24 (patch)
treefa10a359f59c0c5f571a44065871eef286083676
parent77ce0c1607d060eda098779228d5b0ab62ec04ef (diff)
parent24c0de16faec2b8b9bd6a03504ce951dc49afbe2 (diff)
downloadbuildstream-a937f99a5676f4284a2a4d578db18d2113eb3e24.tar.gz
Merge branch 'abderrahim/artifact-cache-junction' into 'master'
Use artifact cache specs from the parent project before those defined in junctions Closes #618 and #401 See merge request BuildStream/buildstream!1113
-rw-r--r--buildstream/_artifactcache.py7
-rw-r--r--buildstream/_project.py10
2 files changed, 11 insertions, 6 deletions
diff --git a/buildstream/_artifactcache.py b/buildstream/_artifactcache.py
index 48ab278c4..5404dc12e 100644
--- a/buildstream/_artifactcache.py
+++ b/buildstream/_artifactcache.py
@@ -467,7 +467,7 @@ class ArtifactCache():
# on_failure (callable): Called if we fail to contact one of the caches.
#
def initialize_remotes(self, *, on_failure=None):
- remote_specs = self.global_remote_specs
+ remote_specs = list(self.global_remote_specs)
for project in self.project_remote_specs:
remote_specs += self.project_remote_specs[project]
@@ -1046,8 +1046,5 @@ class ArtifactCache():
# A list of ArtifactCacheSpec instances describing the remote artifact caches.
#
def _configured_remote_artifact_cache_specs(context, project):
- project_overrides = context.get_overrides(project.name)
- project_extra_specs = ArtifactCache.specs_from_config_node(project_overrides)
-
return list(utils._deduplicate(
- project_extra_specs + project.artifact_cache_specs + context.artifact_cache_specs))
+ project.artifact_cache_specs + context.artifact_cache_specs))
diff --git a/buildstream/_project.py b/buildstream/_project.py
index 3ec141d58..5f4389edb 100644
--- a/buildstream/_project.py
+++ b/buildstream/_project.py
@@ -549,7 +549,15 @@ class Project():
#
# Load artifacts pull/push configuration for this project
- self.artifact_cache_specs = ArtifactCache.specs_from_config_node(config, self.directory)
+ project_specs = ArtifactCache.specs_from_config_node(config, self.directory)
+ override_specs = ArtifactCache.specs_from_config_node(
+ self._context.get_overrides(self.name), self.directory)
+
+ self.artifact_cache_specs = override_specs + project_specs
+
+ if self.junction:
+ parent = self.junction._get_project()
+ self.artifact_cache_specs = parent.artifact_cache_specs + self.artifact_cache_specs
# Load remote-execution configuration for this project
project_specs = SandboxRemote.specs_from_config_node(config, self.directory)