Skip to content

Comments

Reject already-installed wheels built with outdated settings#15289

Merged
charliermarsh merged 1 commit intomainfrom
charlie/build-info
Aug 15, 2025
Merged

Reject already-installed wheels built with outdated settings#15289
charliermarsh merged 1 commit intomainfrom
charlie/build-info

Conversation

@charliermarsh
Copy link
Member

@charliermarsh charliermarsh commented Aug 14, 2025

Summary

With this PR, we track the settings that were used to build a wheel (--config-settings, plus any extra-build-dependencies or extra-build-variables) and write those to the .dist-info directory upon install. This then allows us to "reject" already-installed wheels, if the user changes the build dependencies or --config-settings (or, crucially, if they use match-runtime = true and the resolution changes).

Closes #15218.

@charliermarsh charliermarsh added no-build Disable building binaries in CI test:skip Disable running tests for a pull request labels Aug 14, 2025
@charliermarsh
Copy link
Member Author

(Needs tests, still iterating on the abstractions.)

@charliermarsh charliermarsh force-pushed the charlie/build-info branch 4 times, most recently from 1b4cc80 to 973d160 Compare August 14, 2025 22:42
@charliermarsh charliermarsh removed the test:skip Disable running tests for a pull request label Aug 14, 2025
@charliermarsh charliermarsh requested a review from zanieb August 14, 2025 22:47
@charliermarsh charliermarsh marked this pull request as ready for review August 14, 2025 22:47
@charliermarsh charliermarsh added the bug Something isn't working label Aug 14, 2025
Comment on lines 135 to 139
let cache_shard = if build_info.is_empty() {
cache_shard
} else {
cache_shard.shard(cache_digest(&(
&config_settings,
extra_build_deps,
extra_build_vars,
)))
cache_shard.shard(cache_digest(&build_info))
};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would probably implement this as let cache_shard = build_info.cache_shard().and_then(cache_shard.shard).unwrap_or(cache_shard) if the compiler will let you.

@charliermarsh charliermarsh force-pushed the charlie/build-info branch 3 times, most recently from 9cbf0ab to 1e57d23 Compare August 15, 2025 14:58
adding stuff

Mostly wired up, satisfies isn't done, now adding a separate struct

Trying to move itno dist types

Add separate struct
@charliermarsh charliermarsh enabled auto-merge (squash) August 15, 2025 15:05
@charliermarsh charliermarsh merged commit 58c7cc0 into main Aug 15, 2025
110 checks passed
@charliermarsh charliermarsh deleted the charlie/build-info branch August 15, 2025 15:15
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Aug 21, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.8.11` -> `0.8.12` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>astral-sh/uv (astral-sh/uv)</summary>

### [`v0.8.12`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)

[Compare Source](astral-sh/uv@0.8.11...0.8.12)

##### Python

- Add 3.13.7
- Improve performance of zstd in Python 3.14

See the [python-build-standalone release notes](https://github.com/astral-sh/python-build-standalone/releases/tag/20250818) for details.

##### Enhancements

- Add an `aarch64-pc-windows-msvc` target for `python-platform` ([#&#8203;15347](astral-sh/uv#15347))
- Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](astral-sh/uv#15356))
- Install non-build-isolation packages in a second phase ([#&#8203;15306](astral-sh/uv#15306))
- Add hint when virtual environments are included in source distributions ([#&#8203;15202](astral-sh/uv#15202))
- Add Docker images derived from `buildpack-deps:trixie`, `debian:trixie-slim`, `alpine:3.22` ([#&#8203;15351](astral-sh/uv#15351))

##### Bug fixes

- Reject already-installed wheels built with outdated settings ([#&#8203;15289](astral-sh/uv#15289))
- Skip interpreters that are not found on query ([#&#8203;15315](astral-sh/uv#15315))
- Handle dotted package names in script path resolution ([#&#8203;15300](astral-sh/uv#15300))
- Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](astral-sh/uv#15292))

##### Documentation

- Document improvements to build-isolation setups ([#&#8203;15326](astral-sh/uv#15326))
- Fix reference documentation recommendation to use `uv cache clean` instead of `clear` ([#&#8203;15313](astral-sh/uv#15313))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS43Ni4wIiwidXBkYXRlZEluVmVyIjoiNDEuNzYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working no-build Disable building binaries in CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

match-runtime = true build dependencies should invalidate installed distributions

2 participants