summaryrefslogtreecommitdiff
path: root/lib/spack/spack/spec.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/spack/spack/spec.py')
-rw-r--r--lib/spack/spack/spec.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 3586cb2aae..c7926ad3a3 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -3951,17 +3951,15 @@ class SpecParser(spack.parse.Parser):
def spec_by_hash(self):
self.expect(ID)
- specs = spack.store.db.query()
- matches = [spec for spec in specs if
- spec.dag_hash()[:len(self.token.value)] == self.token.value]
-
+ dag_hash = self.token.value
+ matches = spack.store.db.get_by_hash(dag_hash)
if not matches:
- raise NoSuchHashError(self.token.value)
+ raise NoSuchHashError(dag_hash)
if len(matches) != 1:
raise AmbiguousHashError(
"Multiple packages specify hash beginning '%s'."
- % self.token.value, *matches)
+ % dag_hash, *matches)
return matches[0]