Changed yaml format for node_dicts to mitigate future incompatibilities
This commit is contained in:
parent
ae5198e5e7
commit
3b84345b77
@ -760,13 +760,13 @@ def dag_hash(self, length=None):
|
|||||||
|
|
||||||
|
|
||||||
def to_node_dict(self):
|
def to_node_dict(self):
|
||||||
|
params = dict( (name, v.value) for name, v in self.variants.items() )
|
||||||
|
params.update( dict( (name, value) for name, value in self.compiler_flags.items()) )
|
||||||
d = {
|
d = {
|
||||||
'variants' : dict(
|
'parameters' : params,
|
||||||
(name,v.value) for name, v in self.variants.items()),
|
|
||||||
'arch' : self.architecture,
|
'arch' : self.architecture,
|
||||||
'dependencies' : dict((d, self.dependencies[d].dag_hash())
|
'dependencies' : dict((d, self.dependencies[d].dag_hash())
|
||||||
for d in sorted(self.dependencies)),
|
for d in sorted(self.dependencies)),
|
||||||
'compiler_flags' : dict((name, value) for name, value in self.compiler_flags.items())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Older concrete specs do not have a namespace. Omit for
|
# Older concrete specs do not have a namespace. Omit for
|
||||||
@ -807,11 +807,17 @@ def from_node_dict(node):
|
|||||||
else:
|
else:
|
||||||
spec.compiler = CompilerSpec.from_dict(node)
|
spec.compiler = CompilerSpec.from_dict(node)
|
||||||
|
|
||||||
|
if 'parameters' in node:
|
||||||
|
for name, value in node['parameters'].items():
|
||||||
|
if name in _valid_compiler_flags:
|
||||||
|
spec.compiler_flags[name] = value
|
||||||
|
else:
|
||||||
|
spec.variants[name] = VariantSpec(name, value)
|
||||||
|
elif 'variants' in node:
|
||||||
for name, value in node['variants'].items():
|
for name, value in node['variants'].items():
|
||||||
spec.variants[name] = VariantSpec(name, value)
|
spec.variants[name] = VariantSpec(name, value)
|
||||||
|
else:
|
||||||
for name, value in node['compiler_flags'].items():
|
raise SpackRecordError("Did not find a valid format for variants in YAML file")
|
||||||
spec.compiler_flags[name] = value
|
|
||||||
|
|
||||||
return spec
|
return spec
|
||||||
|
|
||||||
@ -2436,3 +2442,7 @@ def __init__(self, provided, required):
|
|||||||
class SpackYAMLError(spack.error.SpackError):
|
class SpackYAMLError(spack.error.SpackError):
|
||||||
def __init__(self, msg, yaml_error):
|
def __init__(self, msg, yaml_error):
|
||||||
super(SpackYAMLError, self).__init__(msg, str(yaml_error))
|
super(SpackYAMLError, self).__init__(msg, str(yaml_error))
|
||||||
|
|
||||||
|
class SpackRecordError(spack.error.SpackError):
|
||||||
|
def __init__(self, msg):
|
||||||
|
super(SpackRecordError, self).__init__(msg)
|
||||||
|
Loading…
Reference in New Issue
Block a user