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:
		| @@ -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): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Todd Gamblin
					Todd Gamblin