summaryrefslogtreecommitdiff
path: root/buildstream/_loader/loadelement.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildstream/_loader/loadelement.py')
-rw-r--r--buildstream/_loader/loadelement.py43
1 files changed, 5 insertions, 38 deletions
diff --git a/buildstream/_loader/loadelement.py b/buildstream/_loader/loadelement.py
index 4104dfd59..0b38cad65 100644
--- a/buildstream/_loader/loadelement.py
+++ b/buildstream/_loader/loadelement.py
@@ -18,10 +18,10 @@
# Tristan Van Berkom <tristan.vanberkom@codethink.co.uk>
# System imports
-from collections import Mapping
+from itertools import count
+
# BuildStream toplevel imports
-from .._exceptions import LoadError, LoadErrorReason
from .. import _yaml
# Local package imports
@@ -146,42 +146,9 @@ def _extract_depends_from_node(node, *, key=None):
depends = _yaml.node_get(node, list, key, default_value=[])
output_deps = []
- for dep in depends:
- dep_provenance = _yaml.node_get_provenance(node, key=key, indices=[depends.index(dep)])
-
- if isinstance(dep, str):
- dependency = Dependency(dep, provenance=dep_provenance, dep_type=default_dep_type)
-
- elif isinstance(dep, Mapping):
- if default_dep_type:
- _yaml.node_validate(dep, ['filename', 'junction'])
- dep_type = default_dep_type
- else:
- _yaml.node_validate(dep, ['filename', 'type', 'junction'])
-
- # Make type optional, for this we set it to None
- dep_type = _yaml.node_get(dep, str, Symbol.TYPE, default_value=None)
- if dep_type is None or dep_type == Symbol.ALL:
- dep_type = None
- elif dep_type not in [Symbol.BUILD, Symbol.RUNTIME]:
- provenance = _yaml.node_get_provenance(dep, key=Symbol.TYPE)
- raise LoadError(LoadErrorReason.INVALID_DATA,
- "{}: Dependency type '{}' is not 'build', 'runtime' or 'all'"
- .format(provenance, dep_type))
-
- filename = _yaml.node_get(dep, str, Symbol.FILENAME)
- junction = _yaml.node_get(dep, str, Symbol.JUNCTION, default_value=None)
- dependency = Dependency(filename,
- dep_type=dep_type,
- junction=junction,
- provenance=dep_provenance)
-
- else:
- index = depends.index(dep)
- p = _yaml.node_get_provenance(node, key=key, indices=[index])
- raise LoadError(LoadErrorReason.INVALID_DATA,
- "{}: Dependency is not specified as a string or a dictionary".format(p))
-
+ for index, dep in enumerate(depends):
+ dep_provenance = _yaml.node_get_provenance(node, key=key, indices=[index])
+ dependency = Dependency(dep, dep_provenance, default_dep_type=default_dep_type)
output_deps.append(dependency)
# Now delete the field, we dont want it anymore