diff options
author | Harmen Stoppels <me@harmenstoppels.nl> | 2024-08-24 09:09:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-24 09:09:25 +0200 |
commit | 296e5308a7d2cde1226e179c7d695b45ff287c58 (patch) | |
tree | f34292db004a82c4465b0aa0695519a663ce97d9 /NOTICE | |
parent | 47e79c32fdd820b3ce825f62619c693e4a57d549 (diff) | |
download | spack-296e5308a7d2cde1226e179c7d695b45ff287c58.tar.gz spack-296e5308a7d2cde1226e179c7d695b45ff287c58.tar.bz2 spack-296e5308a7d2cde1226e179c7d695b45ff287c58.tar.xz spack-296e5308a7d2cde1226e179c7d695b45ff287c58.zip |
mirror: fetch by digest (#45809)
Source mirrors store entries by digest and add a human readable alias of the
form 'name-version'. If no digest is available, the alias is used as the primary
storage location.
Spack erroneously fetches by alias when the digest path does not exist. This is
problematic if `version(..., sha256=...)` changes in package.py, and the mirror
is populated with the old shasum. That would result in an error when a digest
is available, but in case of git versions with a modified commit sha, the wrong
sources would be fetched without error. With this PR, only the digest path is
used, not the alias, in case a digest is available. This is also a small performance
optimization, as the number of request is halved for mirrors that don't contain
the sources.
Further, for git sources the tag was used as a digest, but this is a moving
target. Only commit sha is used now.
Also whenever the alias already existed, Spack used to keep it in place when
updating the mirror cache, which means that aliases would always point to
outdated mirror entries whenever digests are modified. With this PR the alias
is moved in place.
Lastly, fix a recent regression where `Stage.disable_mirrors` disabled mirrors
but not the local download cache, which was the intention.
Diffstat (limited to 'NOTICE')
0 files changed, 0 insertions, 0 deletions