From c36d9f297fafd1f9a1fd3d309a46eb3ee8987f44 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 7 Nov 2019 17:13:51 -0700 Subject: bugfix: mirror path works for unknown versions (#13626) `mirror_archive_path` was failing to account for the case where the fetched version isn't known to Spack. - [x] don't require the fetched version to be in `Package.versions` - [x] add regression test for mirror paths when package does not have a version --- lib/spack/spack/mirror.py | 4 ++-- lib/spack/spack/test/mirror.py | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 0c5e2a9cc2..f7e8e73ea9 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -303,8 +303,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() -- cgit v1.2.3-70-g09d2