mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35:00 +00:00
Heal cache entries with missing source distributions (#7559)
## Summary `uv cache prune --ci` will remove the source distribution directory. If we then need to build a _different_ wheel (e.g., you're building a package that has Python minor version-specific wheels), we fail, because we expect the source to be there. Now, if the source is missing, we re-download it. It would be slightly easier to just _ignore_ that revision, but that would mean we'd also lose the already-built wheels -- so if you ran against many Python versions, we'd continuously lose the cached data. Closes https://github.com/astral-sh/uv/issues/7543. ## Test Plan We can add tests, but they _need_ to build non-pure Python wheels, which tends to be expensive... For reference: ```console $ cargo run venv --python 3.12 $ cargo run pip install mercurial==6.8.1 --verbose $ cargo run cache prune --ci $ cargo run venv --python 3.11 $ cargo run pip install mercurial==6.8.1 --verbose ``` I also did this with a local `.tar.gz` that I downloaded from PyPI.
This commit is contained in:
parent
5de6d2338d
commit
f3463b3d08
5 changed files with 138 additions and 10 deletions
|
@ -45,6 +45,11 @@ impl CacheEntry {
|
|||
Self(path.into())
|
||||
}
|
||||
|
||||
/// Return the cache entry's parent directory.
|
||||
pub fn shard(&self) -> CacheShard {
|
||||
CacheShard(self.dir().to_path_buf())
|
||||
}
|
||||
|
||||
/// Convert the [`CacheEntry`] into a [`PathBuf`].
|
||||
#[inline]
|
||||
pub fn into_path_buf(self) -> PathBuf {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue