Merge pull request #239 from LLNL/bugfix/238-db-specs-not-concrete

Fix #238: Database specs need to be concrete when read in as well.
This commit is contained in:
Gregory Lee 2015-12-16 11:37:51 -08:00
commit 9cab88071b
3 changed files with 17 additions and 4 deletions

View file

@ -211,6 +211,10 @@ def _read_spec_from_yaml(self, hash_key, installs, parent_key=None):
child = self._read_spec_from_yaml(dep_hash, installs, hash_key) child = self._read_spec_from_yaml(dep_hash, installs, hash_key)
spec._add_dependency(child) spec._add_dependency(child)
# Specs from the database need to be marked concrete because
# they represent actual installations.
spec._mark_concrete()
return spec return spec

View file

@ -212,9 +212,7 @@ def read_spec(self, path):
spec = Spec.from_yaml(f) spec = Spec.from_yaml(f)
# Specs read from actual installations are always concrete # Specs read from actual installations are always concrete
for s in spec.traverse(): spec._mark_concrete()
s._normal = True
s._concrete = True
return spec return spec

View file

@ -833,7 +833,18 @@ def concretize(self):
changed = any(changes) changed = any(changes)
force=True force=True
self._concrete = True self._mark_concrete()
def _mark_concrete(self):
"""Mark this spec and its dependencies as concrete.
Only for internal use -- client code should use "concretize"
unless there is a need to force a spec to be concrete.
"""
for s in self.traverse():
s._normal = True
s._concrete = True
def concretized(self): def concretized(self):