diff options
author | Pedro Alvarez Piedehierro <palvarez89@gmail.com> | 2017-07-23 00:29:11 +0100 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-07-25 18:00:39 +0100 |
commit | 5e7cf0efb2cd5253635900fa150e68d8f5476ae1 (patch) | |
tree | 8f7fa2b4608ddceee67e5338f18add8b408bd259 | |
parent | bd19c93beb07d8b9ce08d515920078f6628f950f (diff) | |
download | buildstream-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.py | 12 |
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 # |