diff options
Diffstat (limited to 'buildstream/_loader/loadelement.py')
-rw-r--r-- | buildstream/_loader/loadelement.py | 43 |
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 |