Remove single-root assertion from Spec.root
- Assertion would search for root through all possible paths. - It's also really slow. - This isn't needed anymore. We're pretty good at ensuring single-rooted DAGs, and this assertion has never been thrown. - This shaves another 6 seconds off r-rminer concretization
This commit is contained in:
parent
3f091fb6db
commit
afc99ca516
2 changed files with 6 additions and 11 deletions
|
@ -113,7 +113,9 @@ def choose_virtual_or_external(self, spec):
|
|||
|
||||
# Find the nearest spec in the dag that has a compiler. We'll
|
||||
# use that spec to calibrate compiler compatibility.
|
||||
abi_exemplar = find_spec(spec, lambda x: x.compiler, spec.root)
|
||||
abi_exemplar = find_spec(spec, lambda x: x.compiler)
|
||||
if abi_exemplar is None:
|
||||
abi_exemplar = spec.root
|
||||
|
||||
# Sort candidates from most to least compatibility.
|
||||
# We reverse because True > False.
|
||||
|
|
|
@ -1178,20 +1178,13 @@ def fullname(self):
|
|||
@property
|
||||
def root(self):
|
||||
"""Follow dependent links and find the root of this spec's DAG.
|
||||
In spack specs, there should be a single root (the package being
|
||||
installed). This will throw an assertion error if that is not
|
||||
the case.
|
||||
|
||||
Spack specs have a single root (the package being installed).
|
||||
"""
|
||||
if not self._dependents:
|
||||
return self
|
||||
|
||||
# If the spec has multiple dependents, ensure that they all
|
||||
# lead to the same place. Spack shouldn't deal with any DAGs
|
||||
# with multiple roots, so something's wrong if we find one.
|
||||
depiter = iter(self._dependents.values())
|
||||
first_root = next(depiter).parent.root
|
||||
assert(all(first_root is d.parent.root for d in depiter))
|
||||
return first_root
|
||||
return next(iter(self._dependents.values())).parent.root
|
||||
|
||||
@property
|
||||
def package(self):
|
||||
|
|
Loading…
Reference in a new issue