summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/mirror.py4
-rw-r--r--lib/spack/spack/test/mirror.py6
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py
index 21d34b579e..bae250b97b 100644
--- a/lib/spack/spack/mirror.py
+++ b/lib/spack/spack/mirror.py
@@ -306,8 +306,8 @@ def mirror_archive_paths(fetcher, per_package_ref, spec=None):
storage path of the resource associated with the specified ``fetcher``."""
ext = None
if spec:
- ext = spec.package.versions[spec.package.version].get(
- 'extension', None)
+ versions = spec.package.versions.get(spec.package.version, {})
+ ext = versions.get('extension', None)
# If the spec does not explicitly specify an extension (the default case),
# then try to determine it automatically. An extension can only be
# specified for the primary source of the package (e.g. the source code
diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py
index da40cfac37..9068db7193 100644
--- a/lib/spack/spack/test/mirror.py
+++ b/lib/spack/spack/test/mirror.py
@@ -146,6 +146,12 @@ def test_all_mirror(
repos.clear()
+def test_mirror_archive_paths_no_version(mock_packages, config, mock_archive):
+ spec = Spec('trivial-install-test-package@nonexistingversion')
+ fetcher = spack.fetch_strategy.URLFetchStrategy(mock_archive.url)
+ spack.mirror.mirror_archive_paths(fetcher, 'per-package-ref', spec)
+
+
def test_mirror_with_url_patches(mock_packages, config, monkeypatch):
spec = Spec('patch-several-dependencies')
spec.concretize()