summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alvarez Piedehierro <palvarez89@gmail.com>2017-07-23 00:29:11 +0100
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2017-07-25 18:00:39 +0100
commit5e7cf0efb2cd5253635900fa150e68d8f5476ae1 (patch)
tree8f7fa2b4608ddceee67e5338f18add8b408bd259
parentbd19c93beb07d8b9ce08d515920078f6628f950f (diff)
downloadbuildstream-5e7cf0efb2cd5253635900fa150e68d8f5476ae1.tar.gz
buildstream/_loader.py: Don't repeat elements in resolve_project_variant
Add an extra argument to the function to know which elements were already resolved.
-rw-r--r--buildstream/_loader.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/buildstream/_loader.py b/buildstream/_loader.py
index 831ea7faf..c461e5d93 100644
--- a/buildstream/_loader.py
+++ b/buildstream/_loader.py
@@ -762,7 +762,13 @@ class Loader():
########################################
# Resolve Project Variant #
########################################
- def resolve_project_variant(self, element_name):
+ def resolve_project_variant(self, element_name, resolved=None):
+ if resolved is None:
+ resolved = {}
+
+ if resolved.get(element_name) is not None:
+ return
+
element = self.elements[element_name]
project_variant = _yaml.node_get(element.data, str,
Symbol.PROJECT_VARIANT,
@@ -783,7 +789,9 @@ class Loader():
.format(request1, request2))
for dep in element.deps:
- self.resolve_project_variant(dep.name)
+ self.resolve_project_variant(dep.name, resolved)
+
+ resolved[element_name] = True
########################################
# Element Sorting #