diff options
-rw-r--r-- | lib/spack/spack/cmd/__init__.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 54496dc32d..cf6e3b7c3e 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -357,15 +357,18 @@ def display_specs(specs, args=None, **kwargs): max_width = max(len(f[0]) for f in formatted) path_fmt = "%%-%ds%%s" % (max_width + 2) - for string, spec in formatted: - if not string: - print() # print newline from above - continue - - if paths: - print(path_fmt % (string, spec.prefix)) - else: - print(string) + # getting lots of prefixes requires DB lookups. Ensure + # all spec.prefix calls are in one transaction. + with spack.store.db.read_transaction(): + for string, spec in formatted: + if not string: + print() # print newline from above + continue + + if paths: + print(path_fmt % (string, spec.prefix)) + else: + print(string) if groups: for specs in iter_groups(specs, indent, all_headers): |