diff options
Diffstat (limited to 'lib/spack/spack/spec.py')
-rw-r--r-- | lib/spack/spack/spec.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 08625eaa82..7268142537 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2597,7 +2597,7 @@ class Spec(object): msg += " For each package listed, choose another spec\n" raise SpecDeprecatedError(msg) - def _new_concretize(self, tests=False): + def _new_concretize(self, tests=False, reuse=False): import spack.solver.asp if not self.name: @@ -2607,7 +2607,7 @@ class Spec(object): if self._concrete: return - result = spack.solver.asp.solve([self], tests=tests) + result = spack.solver.asp.solve([self], tests=tests, reuse=reuse) result.raise_if_unsat() # take the best answer @@ -2625,17 +2625,23 @@ class Spec(object): self._dup(concretized) self._mark_concrete() - def concretize(self, tests=False): + def concretize(self, tests=False, reuse=False): """Concretize the current spec. Args: tests (bool or list): if False disregard 'test' dependencies, if a list of names activate them for the packages in the list, if True activate 'test' dependencies for all packages. + reuse (bool): if True try to maximize reuse of already installed + specs, if False don't account for installation status. """ if spack.config.get('config:concretizer') == "clingo": - self._new_concretize(tests) + self._new_concretize(tests, reuse=reuse) else: + if reuse: + msg = ('maximizing reuse of installed specs is not ' + 'possible with the original concretizer') + raise spack.error.SpecError(msg) self._old_concretize(tests) def _mark_root_concrete(self, value=True): |