Skip to content

Conversation

@ichard26
Copy link

@ichard26 ichard26 commented Dec 20, 2025

Hello, pip maintainer here! 👋

The wheel specification requires that the Tag field contains all of the tags in their expanded form. Leaving the compressed form unchanged is usually "fine", but pip check (only!) misidentifies the wheel as incompatible with the system when fed a compressed wheel tag set. See also: pypa/pip#13709

While I'm unfamiliar with this repository and can't test the build script directly, the tag expansion logic has been tested below.

>>> def expand(tag):
...     pytag, abitag, platformtag = tag.split("-")
...     return [
...         "-".join((x, y, z))
...         for z in platformtag.split(".")
...         for y in abitag.split(".")
...         for x in pytag.split(".")
...     ]
...     
>>> list(expand("py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64"))
['py3-none-manylinux_2_17_aarch64', 'py3-none-manylinux2014_aarch64', 'py3-none-musllinux_1_1_aarch64']

Unfortunately, other projects seem to be copying ziglang's wheel build scripts so this oversight has spread across the ecosystem.

The wheel specification requires that the Tag field contains all of the
tags in their expanded form. Leaving the compressed form unchanged is
usually "fine", but pip check (only!) misidentifies the wheel as incompatible
with the system when fed a compressed wheel tag set.
@whitequark
Copy link
Collaborator

Hi!

That's really unfortunate; to the extent I am responsible for this mess, I genuinely apologize, as I did my best to follow the relevant standards and avoid causing issues to the ecosystem. The only reason I am generating wheels directly in first place is to ensure that the wheels are reproducible, which as far as I know isn't readily achievable in any other manner.

(For what it's worth, it wasn't clear to me that people would copy the scripts we wrote here, though I could have probably predicted it from past experience.)

You can test the script with just python make_wheel.py. I would have attached a wheel but unfortunately they're too big to attach in a GitHub comment. Let me know if you need me to put a wheel elsewhere.

If you can confirm that the generated wheels are OK to go, what should I do about existing uploads? Unfortunately, I cannot upload new wheels for even the latest release at the moment due to the archive size limits; I have a pending support issue but it's gotten caught a bit in a limbo: pypi/support#8180

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.

2 participants