Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maturin does not calculate wheel tags the same way as pypa/packaging #1545

Closed
2 tasks
timfel opened this issue Mar 30, 2023 · 5 comments · Fixed by #1648
Closed
2 tasks

Maturin does not calculate wheel tags the same way as pypa/packaging #1545

timfel opened this issue Mar 30, 2023 · 5 comments · Fixed by #1648
Labels
bug Something isn't working

Comments

@timfel
Copy link
Contributor

timfel commented Mar 30, 2023

Bug Description

With pypa/packaging#607, the official way that pip and wheel calculate wheel tags has changed. It looks like maturin is replicating a different (old) strategy in get_interpreter_metadata.py. The generated wheel tags will thus be incompatible and refuse installation of Rust packages e.g. on GraalPy.

Your maturin version (maturin --version)

all

Your Python version (python -V)

all

Your pip version (pip -V)

all

What bindings you're using

None

Does cargo build work?

  • Yes, it works

If on windows, have you checked that you aren't accidentally using unix path (those with the forward slash /)?

  • Yes

Steps to Reproduce

Currently no steps to reproduce, as the old way still works for now, but maturin should upgrade to replicate the new behaviour (as e.g. wheel has already upgraded their vendored packaging version, pip is about to, and meson-build already replicated that new behaviour also).

@timfel timfel added the bug Something isn't working label Mar 30, 2023
@messense
Copy link
Member

Thanks for the report. Looks like GraalPy is currently using a very old version of packaging (installed via graalpy -m ginstall install packaging) so I can't test that change right now:

Python 3.8.5 (Thu Jan 19 11:35:16 PST 2023)
[Graal, GraalVM CE, Java 19.0.2] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import packaging
>>> packaging.__version__
'19.0'

@timfel
Copy link
Contributor Author

timfel commented Mar 31, 2023

Hi, this is about the packaging as vendored in wheel, for example. If you pip install the latest wheel, you get a newer version of packaging, and the generated wheels will have the newer tags.

@messense
Copy link
Member

Thanks! BTW I think the wheel tags is still a bit odd (I'm using arm64 macOS), for example in graalpy38-graalpy_38_native_aarch64_darwin-macosx_13_0_i386 the i386 part doesn't make much sense?

$ graalpy -m pip debug --verbose
WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
pip version: pip 23.0.1 from /Users/messense/.local/lib/python3.8/site-packages/pip-23.0.1-py3.8.egg/pip (python 3.8)
sys.version: 3.8.5 (Thu Jan 19 11:35:16 PST 2023)
[Graal, GraalVM CE, Java 19.0.2]
sys.executable: /Users/messense/.jenv/versions/graalvm64-19.0.2/bin/graalpy
sys.getdefaultencoding: UTF-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: UTF-8
sys.platform: darwin
sys.implementation:
  name: graalpy
'cert' config value: Not specified
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): /Users/messense/.local/lib/python3.8/site-packages/pip-23.0.1-py3.8.egg/pip/_vendor/certifi/cacert.pem
pip._vendor.DEBUNDLED: False
vendored library versions:
  CacheControl==0.12.11
  colorama==0.4.6
  distlib==0.3.6
  distro==1.8.0
  msgpack==1.0.4
  packaging==21.3
  platformdirs==2.6.2
  pyparsing==3.0.9
  pyproject-hooks==1.0.0
  requests==2.28.2
  certifi==2022.12.07
  chardet==5.1.0
  idna==3.4
  urllib3==1.26.14
  rich==12.6.0 (Unable to locate actual module version, using vendor.txt specified version)
  pygments==2.13.0
  typing_extensions==4.4.0 (Unable to locate actual module version, using vendor.txt specified version)
  resolvelib==0.8.1
  setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version)
  six==1.16.0
  tenacity==8.1.0 (Unable to locate actual module version, using vendor.txt specified version)
  tomli==2.0.1
  webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
Compatible tags: 347
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_13_0_i386
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_13_0_intel
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_13_0_fat32
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_13_0_fat
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_13_0_universal
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_12_0_i386
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_12_0_intel
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_12_0_fat32
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_12_0_fat
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_12_0_universal
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_11_0_i386
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_11_0_intel
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_11_0_fat32
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_11_0_fat
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_11_0_universal
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_16_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_15_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_14_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_13_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_12_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_11_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_10_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_9_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_8_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_7_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_6_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_5_universal2
  graalpy38-graalpy_38_native_aarch64_darwin-macosx_10_4_universal2
  graalpy38-none-macosx_13_0_i386
  graalpy38-none-macosx_13_0_intel
  graalpy38-none-macosx_13_0_fat32
  graalpy38-none-macosx_13_0_fat
  graalpy38-none-macosx_13_0_universal
  graalpy38-none-macosx_12_0_i386
  graalpy38-none-macosx_12_0_intel
  graalpy38-none-macosx_12_0_fat32
  graalpy38-none-macosx_12_0_fat
  graalpy38-none-macosx_12_0_universal
  graalpy38-none-macosx_11_0_i386
  graalpy38-none-macosx_11_0_intel
  graalpy38-none-macosx_11_0_fat32
  graalpy38-none-macosx_11_0_fat
  graalpy38-none-macosx_11_0_universal
  graalpy38-none-macosx_10_16_universal2
  graalpy38-none-macosx_10_15_universal2
  graalpy38-none-macosx_10_14_universal2
  graalpy38-none-macosx_10_13_universal2
  graalpy38-none-macosx_10_12_universal2
  graalpy38-none-macosx_10_11_universal2
  graalpy38-none-macosx_10_10_universal2
  graalpy38-none-macosx_10_9_universal2
  graalpy38-none-macosx_10_8_universal2
  graalpy38-none-macosx_10_7_universal2
  graalpy38-none-macosx_10_6_universal2
  graalpy38-none-macosx_10_5_universal2
  graalpy38-none-macosx_10_4_universal2
  py38-none-macosx_13_0_i386
  py38-none-macosx_13_0_intel
  py38-none-macosx_13_0_fat32
  py38-none-macosx_13_0_fat
  py38-none-macosx_13_0_universal
  py38-none-macosx_12_0_i386
  py38-none-macosx_12_0_intel
  py38-none-macosx_12_0_fat32
  py38-none-macosx_12_0_fat
  py38-none-macosx_12_0_universal
  py38-none-macosx_11_0_i386
  py38-none-macosx_11_0_intel
  py38-none-macosx_11_0_fat32
  py38-none-macosx_11_0_fat
  py38-none-macosx_11_0_universal
  py38-none-macosx_10_16_universal2
  py38-none-macosx_10_15_universal2
  py38-none-macosx_10_14_universal2
  py38-none-macosx_10_13_universal2
  py38-none-macosx_10_12_universal2
  py38-none-macosx_10_11_universal2
  py38-none-macosx_10_10_universal2
  py38-none-macosx_10_9_universal2
  py38-none-macosx_10_8_universal2
  py38-none-macosx_10_7_universal2
  py38-none-macosx_10_6_universal2
  py38-none-macosx_10_5_universal2
  py38-none-macosx_10_4_universal2
  py3-none-macosx_13_0_i386
  py3-none-macosx_13_0_intel
  py3-none-macosx_13_0_fat32
  py3-none-macosx_13_0_fat
  py3-none-macosx_13_0_universal
  py3-none-macosx_12_0_i386
  py3-none-macosx_12_0_intel
  py3-none-macosx_12_0_fat32
  py3-none-macosx_12_0_fat
  py3-none-macosx_12_0_universal
  py3-none-macosx_11_0_i386
  py3-none-macosx_11_0_intel
  py3-none-macosx_11_0_fat32
  py3-none-macosx_11_0_fat
  py3-none-macosx_11_0_universal
  py3-none-macosx_10_16_universal2
  py3-none-macosx_10_15_universal2
  py3-none-macosx_10_14_universal2
  py3-none-macosx_10_13_universal2
  py3-none-macosx_10_12_universal2
  py3-none-macosx_10_11_universal2
  py3-none-macosx_10_10_universal2
  py3-none-macosx_10_9_universal2
  py3-none-macosx_10_8_universal2
  py3-none-macosx_10_7_universal2
  py3-none-macosx_10_6_universal2
  py3-none-macosx_10_5_universal2
  py3-none-macosx_10_4_universal2
  py37-none-macosx_13_0_i386
  py37-none-macosx_13_0_intel
  py37-none-macosx_13_0_fat32
  py37-none-macosx_13_0_fat
  py37-none-macosx_13_0_universal
  py37-none-macosx_12_0_i386
  py37-none-macosx_12_0_intel
  py37-none-macosx_12_0_fat32
  py37-none-macosx_12_0_fat
  py37-none-macosx_12_0_universal
  py37-none-macosx_11_0_i386
  py37-none-macosx_11_0_intel
  py37-none-macosx_11_0_fat32
  py37-none-macosx_11_0_fat
  py37-none-macosx_11_0_universal
  py37-none-macosx_10_16_universal2
  py37-none-macosx_10_15_universal2
  py37-none-macosx_10_14_universal2
  py37-none-macosx_10_13_universal2
  py37-none-macosx_10_12_universal2
  py37-none-macosx_10_11_universal2
  py37-none-macosx_10_10_universal2
  py37-none-macosx_10_9_universal2
  py37-none-macosx_10_8_universal2
  py37-none-macosx_10_7_universal2
  py37-none-macosx_10_6_universal2
  py37-none-macosx_10_5_universal2
  py37-none-macosx_10_4_universal2
  py36-none-macosx_13_0_i386
  py36-none-macosx_13_0_intel
  py36-none-macosx_13_0_fat32
  py36-none-macosx_13_0_fat
  py36-none-macosx_13_0_universal
  py36-none-macosx_12_0_i386
  py36-none-macosx_12_0_intel
  py36-none-macosx_12_0_fat32
  py36-none-macosx_12_0_fat
  py36-none-macosx_12_0_universal
  py36-none-macosx_11_0_i386
  py36-none-macosx_11_0_intel
  py36-none-macosx_11_0_fat32
  py36-none-macosx_11_0_fat
  py36-none-macosx_11_0_universal
  py36-none-macosx_10_16_universal2
  py36-none-macosx_10_15_universal2
  py36-none-macosx_10_14_universal2
  py36-none-macosx_10_13_universal2
  py36-none-macosx_10_12_universal2
  py36-none-macosx_10_11_universal2
  py36-none-macosx_10_10_universal2
  py36-none-macosx_10_9_universal2
  py36-none-macosx_10_8_universal2
  py36-none-macosx_10_7_universal2
  py36-none-macosx_10_6_universal2
  py36-none-macosx_10_5_universal2
  py36-none-macosx_10_4_universal2
  py35-none-macosx_13_0_i386
  py35-none-macosx_13_0_intel
  py35-none-macosx_13_0_fat32
  py35-none-macosx_13_0_fat
  py35-none-macosx_13_0_universal
  py35-none-macosx_12_0_i386
  py35-none-macosx_12_0_intel
  py35-none-macosx_12_0_fat32
  py35-none-macosx_12_0_fat
  py35-none-macosx_12_0_universal
  py35-none-macosx_11_0_i386
  py35-none-macosx_11_0_intel
  py35-none-macosx_11_0_fat32
  py35-none-macosx_11_0_fat
  py35-none-macosx_11_0_universal
  py35-none-macosx_10_16_universal2
  py35-none-macosx_10_15_universal2
  py35-none-macosx_10_14_universal2
  py35-none-macosx_10_13_universal2
  py35-none-macosx_10_12_universal2
  py35-none-macosx_10_11_universal2
  py35-none-macosx_10_10_universal2
  py35-none-macosx_10_9_universal2
  py35-none-macosx_10_8_universal2
  py35-none-macosx_10_7_universal2
  py35-none-macosx_10_6_universal2
  py35-none-macosx_10_5_universal2
  py35-none-macosx_10_4_universal2
  py34-none-macosx_13_0_i386
  py34-none-macosx_13_0_intel
  py34-none-macosx_13_0_fat32
  py34-none-macosx_13_0_fat
  py34-none-macosx_13_0_universal
  py34-none-macosx_12_0_i386
  py34-none-macosx_12_0_intel
  py34-none-macosx_12_0_fat32
  py34-none-macosx_12_0_fat
  py34-none-macosx_12_0_universal
  py34-none-macosx_11_0_i386
  py34-none-macosx_11_0_intel
  py34-none-macosx_11_0_fat32
  py34-none-macosx_11_0_fat
  py34-none-macosx_11_0_universal
  py34-none-macosx_10_16_universal2
  py34-none-macosx_10_15_universal2
  py34-none-macosx_10_14_universal2
  py34-none-macosx_10_13_universal2
  py34-none-macosx_10_12_universal2
  py34-none-macosx_10_11_universal2
  py34-none-macosx_10_10_universal2
  py34-none-macosx_10_9_universal2
  py34-none-macosx_10_8_universal2
  py34-none-macosx_10_7_universal2
  py34-none-macosx_10_6_universal2
  py34-none-macosx_10_5_universal2
  py34-none-macosx_10_4_universal2
  py33-none-macosx_13_0_i386
  py33-none-macosx_13_0_intel
  py33-none-macosx_13_0_fat32
  py33-none-macosx_13_0_fat
  py33-none-macosx_13_0_universal
  py33-none-macosx_12_0_i386
  py33-none-macosx_12_0_intel
  py33-none-macosx_12_0_fat32
  py33-none-macosx_12_0_fat
  py33-none-macosx_12_0_universal
  py33-none-macosx_11_0_i386
  py33-none-macosx_11_0_intel
  py33-none-macosx_11_0_fat32
  py33-none-macosx_11_0_fat
  py33-none-macosx_11_0_universal
  py33-none-macosx_10_16_universal2
  py33-none-macosx_10_15_universal2
  py33-none-macosx_10_14_universal2
  py33-none-macosx_10_13_universal2
  py33-none-macosx_10_12_universal2
  py33-none-macosx_10_11_universal2
  py33-none-macosx_10_10_universal2
  py33-none-macosx_10_9_universal2
  py33-none-macosx_10_8_universal2
  py33-none-macosx_10_7_universal2
  py33-none-macosx_10_6_universal2
  py33-none-macosx_10_5_universal2
  py33-none-macosx_10_4_universal2
  py32-none-macosx_13_0_i386
  py32-none-macosx_13_0_intel
  py32-none-macosx_13_0_fat32
  py32-none-macosx_13_0_fat
  py32-none-macosx_13_0_universal
  py32-none-macosx_12_0_i386
  py32-none-macosx_12_0_intel
  py32-none-macosx_12_0_fat32
  py32-none-macosx_12_0_fat
  py32-none-macosx_12_0_universal
  py32-none-macosx_11_0_i386
  py32-none-macosx_11_0_intel
  py32-none-macosx_11_0_fat32
  py32-none-macosx_11_0_fat
  py32-none-macosx_11_0_universal
  py32-none-macosx_10_16_universal2
  py32-none-macosx_10_15_universal2
  py32-none-macosx_10_14_universal2
  py32-none-macosx_10_13_universal2
  py32-none-macosx_10_12_universal2
  py32-none-macosx_10_11_universal2
  py32-none-macosx_10_10_universal2
  py32-none-macosx_10_9_universal2
  py32-none-macosx_10_8_universal2
  py32-none-macosx_10_7_universal2
  py32-none-macosx_10_6_universal2
  py32-none-macosx_10_5_universal2
  py32-none-macosx_10_4_universal2
  py31-none-macosx_13_0_i386
  py31-none-macosx_13_0_intel
  py31-none-macosx_13_0_fat32
  py31-none-macosx_13_0_fat
  py31-none-macosx_13_0_universal
  py31-none-macosx_12_0_i386
  py31-none-macosx_12_0_intel
  py31-none-macosx_12_0_fat32
  py31-none-macosx_12_0_fat
  py31-none-macosx_12_0_universal
  py31-none-macosx_11_0_i386
  py31-none-macosx_11_0_intel
  py31-none-macosx_11_0_fat32
  py31-none-macosx_11_0_fat
  py31-none-macosx_11_0_universal
  py31-none-macosx_10_16_universal2
  py31-none-macosx_10_15_universal2
  py31-none-macosx_10_14_universal2
  py31-none-macosx_10_13_universal2
  py31-none-macosx_10_12_universal2
  py31-none-macosx_10_11_universal2
  py31-none-macosx_10_10_universal2
  py31-none-macosx_10_9_universal2
  py31-none-macosx_10_8_universal2
  py31-none-macosx_10_7_universal2
  py31-none-macosx_10_6_universal2
  py31-none-macosx_10_5_universal2
  py31-none-macosx_10_4_universal2
  py30-none-macosx_13_0_i386
  py30-none-macosx_13_0_intel
  py30-none-macosx_13_0_fat32
  py30-none-macosx_13_0_fat
  py30-none-macosx_13_0_universal
  py30-none-macosx_12_0_i386
  py30-none-macosx_12_0_intel
  py30-none-macosx_12_0_fat32
  py30-none-macosx_12_0_fat
  py30-none-macosx_12_0_universal
  py30-none-macosx_11_0_i386
  py30-none-macosx_11_0_intel
  py30-none-macosx_11_0_fat32
  py30-none-macosx_11_0_fat
  py30-none-macosx_11_0_universal
  py30-none-macosx_10_16_universal2
  py30-none-macosx_10_15_universal2
  py30-none-macosx_10_14_universal2
  py30-none-macosx_10_13_universal2
  py30-none-macosx_10_12_universal2
  py30-none-macosx_10_11_universal2
  py30-none-macosx_10_10_universal2
  py30-none-macosx_10_9_universal2
  py30-none-macosx_10_8_universal2
  py30-none-macosx_10_7_universal2
  py30-none-macosx_10_6_universal2
  py30-none-macosx_10_5_universal2
  py30-none-macosx_10_4_universal2
  graalpy38-none-any
  py38-none-any
  py3-none-any
  py37-none-any
  py36-none-any
  py35-none-any
  py34-none-any
  py33-none-any
  py32-none-any
  py31-none-any
  py30-none-any

@messense
Copy link
Member

BTW, does GraalPy support abi3? I didn't see any abi3 tags in pip debug --verbose.

@timfel
Copy link
Contributor Author

timfel commented Mar 31, 2023

The i386 is another packaging bug, the discussion has stalled a bit: pypa/packaging#614

GraalPy does not support the cpython abi, we cannot because of recounting. HPy is the solution to being binary compatible across different Python implementations, we will also try to contribute HPy compilation at a later stage :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants