Skip to content

fix(lock): key pypi wheel tags check on rich platform name - #7299

Open
Tyagiquamar wants to merge 4 commits into
prefix-dev:mainfrom
Tyagiquamar:fix/pypi-wheel-tags-rich-platforms-7040
Open

Tyagiquamar wants to merge 4 commits into
prefix-dev:mainfrom
Tyagiquamar:fix/pypi-wheel-tags-rich-platforms-7040

Conversation

@Tyagiquamar

Copy link
Copy Markdown

Description

Fixes #7040

Previously in crates/pixi_core/src/lock_file/satisfiability/environment.rs, PypiWheelTagsCheck stored wheel tags keyed by lock_platform.subdir() (Subdir / conda platform).

When multiple rich platforms share the same underlying conda subdir (such as linux-64 and a rich platform linux-new specifying a newer glibc or other virtual package requirements), both platforms collided on the same Subdir key in platform_wheel_tags: HashMap<Subdir, Tags>. Because HashMap iteration is nondeterministic across processes, one platform overwrote the other, causing pixi lock --check to nondeterministically pass or fail on identical lockfiles with:

INFO pixi_core::lock_file::outdated: environment 'default' is out of date because the lock file was solved with system requirements incompatible with the tags on wheel

Changes

  • Key platform_wheel_tags by the unique lock platform name (String), which uniquely distinguishes rich platforms sharing a common subdir.
  • Updated check(&self, platform: &str, ...) to look up tags by platform name.

Checklist:

  • I have performed a self-review of my own code
  • I have added sufficient tests to cover my changes.

Tyagiquamar and others added 4 commits October 18, 2026 09:02
…v#7040)

Signed-off-by: Mohd Quamar Tyagi <104281681+Tyagiquamar@users.noreply.github.com>
Reintroduce workspace platform resolution when building the per-lock-platform
PyPI wheel tag cache so pixi_core compiles and rich platform names stay keyed correctly.
Store lock platform names as String in the PyPI wheel tag map so the struct
matches the rich-platform lookup path.
Signed-off-by: Tyagiquamar <Tyagiquamar@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug(lock): rich platforms sharing a subdir make PyPI wheel-tag checks nondeterministic

1 participant