diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2019-11-07 17:13:51 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2019-12-01 20:23:06 -0800 |
commit | c36d9f297fafd1f9a1fd3d309a46eb3ee8987f44 (patch) | |
tree | b4621e6f0df88dff9431fecb5ebdf5b2ec982ec5 | |
parent | b44df29316c52150702d35026e8da7b84fd8632b (diff) | |
download | spack-c36d9f297fafd1f9a1fd3d309a46eb3ee8987f44.tar.gz spack-c36d9f297fafd1f9a1fd3d309a46eb3ee8987f44.tar.bz2 spack-c36d9f297fafd1f9a1fd3d309a46eb3ee8987f44.tar.xz spack-c36d9f297fafd1f9a1fd3d309a46eb3ee8987f44.zip |
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
-rw-r--r-- | lib/spack/spack/mirror.py | 4 | ||||
-rw-r--r-- | 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() |