diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2019-11-07 17:13:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-07 17:13:51 -0700 |
commit | c9c267518fe28b2f4566626ae1b7a24cdb7131ca (patch) | |
tree | 0a61267bab17fabf904d5b14936239cc2b5218aa /lib | |
parent | 719ebd18c3c2450d7b62252d758b7dde8f4d2114 (diff) | |
download | spack-c9c267518fe28b2f4566626ae1b7a24cdb7131ca.tar.gz spack-c9c267518fe28b2f4566626ae1b7a24cdb7131ca.tar.bz2 spack-c9c267518fe28b2f4566626ae1b7a24cdb7131ca.tar.xz spack-c9c267518fe28b2f4566626ae1b7a24cdb7131ca.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
Diffstat (limited to 'lib')
-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 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() |