Full PyPy support
konstin opened this issue · 4 comments
pyo3-pack gets basic pypy support from #105, while some things are still missing.
- Add some automated testing, ideally on ci as pyo3 does.
- Figure out the best way to deal with manylinux.
- pypy doesn't support maynlinux1. manylinux2010 was mentioned to be on the agenda of a pypy sprint meeting, however I couldn't find anything about the results.
- If we need to keep different defaults for pypy and cpython, the
Manylinux
enum should get a default variant so we can disambiguate whether a user requestedmanylinux1
explicitly (i.e. we need to fail/skip pypy).
- Add windows support
- Find a reference how a native pypy wheel on windows should look like:
python_Levenshtein-0.10.2-pp38-pypy38_pp73-win_amd64.whl
containsLevenshtein.pypy38-pp73-win_amd64.pyd
: https://paste.rs/ZAJ
- Find a reference how a native pypy wheel on windows should look like:
- Test on mac (done by @messense, it works)
-
Skip pypy wheels when uploading - Autodetect pypy binaries, but only for pyo3
- Look for a better way than using
SOABI
to determine the native extensions filename since that value isn't define on windows for both cpython andpypy.SOABI
is defined on windows for at least pypy 3.7 and later. - #460
I got here from a failing build of pywinpty when rebuilding for PyPy3.7 and windows. The failure is ERROR: pywinpty-1.1.3-pp3pp73-pypy3_pp73-win_amd64.whl is not a supported wheel on this platform.
(link may dissapear in a week or so). The project uses maturin build --release -i pypy3.7.exe
.
Bottom line: The wheel name should end with -pp37-pypy37_pp73-win_amd64.whl
not -pp3pp73-pypy3_pp73-win_amd64.whl
. Any ideas where the extra pp3
at the beninning is coming from?
Some additional comments:
- Add some automated testing, ideally on ci as pyo3 does:
github actions setup-pythonv2 supports pypy - Look for a better way than using SOABI to determine the native extensions filename since that value isn't define on windows for both cpython and pypy:
I thinksysconfig.get_config_var('SOABI')
is the canonical way to do this. What versions of python do not support it? You could get some inspriation from thepypa/wheel
source code
Bottom line: The wheel name should end with -pp37-pypy37_pp73-win_amd64.whl not -pp3pp73-pypy3_pp73-win_amd64.whl. Any ideas where the extra pp3 at the beninning is coming from?
maturin/src/python_interpreter.rs
Line 369 in cb839bd
It comes from here.
Got it thanks: that was changed for version 0.11.3, and the feedstock is pinning to <=0.9.1
All done.