PyO3/maturin

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.
  • 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 contains Levenshtein.pypy38-pp73-win_amd64.pyd: https://paste.rs/ZAJ
  • 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 and pypy. 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 think sysconfig.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 the pypa/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?

"pp{major}{minor}-pypy{major}{minor}_{abi_tag}-{platform}",

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.