Initial abi3t support#15063
Conversation
|
Thanks for working on this! |
|
OK great, it looks like the only failing CI jobs use a Rust compiler that's too old to build Maturin. There are two Windows jobs that timed out but I'm not worried about that because building Maturin on Windows is very slow. I opened PyO3/maturin#3233 to fix the bug in Maturin. I'll try to work on getting the CFFI and Maturin PRs that I'm depending on here merged. |
|
In practice those iwll be solved by a maturin release with wheels |
The `&& !force_target_abi` was [introduced incorrectly by me](https://github.com/PyO3/maturin/blame/main/src/compile.rs#L898) in #3226 and hasn't yet shown up in a release. I hit this testing abi3t builds for cryptography with from-source builds of maturin: pyca/cryptography#15063. To better help Maturin's CI catch issues that are load-bearing for the cryptography project, I also added a test crate that uses CFFI like cryptography does: cooperatively with PyO3 and using PYO3_PYTHON to shell out and run a CFFI script. I manually verified that the new integration test fails on maturin's current `main` branch.
|
Maturin cut a 1.14.1 release so now all that's needed is CFFI. |
|
Looks like unconditionally requiring Maturin 1.14.1 or newer works in CI 🥳 I can probably upstream part of this while we wait for CFFI to do a release but for now I think I'll just wait for that before finishing this up. |
|
The |
|
@alex I think this is ready now. |
|
This is now a very small PR 😄 What's the next step after merging this? |
alex
left a comment
There was a problem hiding this comment.
Do we need to update version bounds on cffi or anything?
I don't think so. The first CFFI release with Python 3.15 support is CFFI 2.1, which is >= 2.0. 2.0 is fine for older Python versions.
Probably worth doing a dry-run of the release automation to verify that you do actually get three wheels per platform out to upload to PyPI. Other than that, I think just a release advertising Python 3.15 support. |
|
Do we need >=2.1; python_version >= '3.15'? |
Sure, let's add that just in case someone does something weird. |
|
|
||
| # Must be kept in sync with `project.dependencies` | ||
| "cffi>=2.0.0; platform_python_implementation != 'PyPy'", | ||
| "cffi>=2.1; python_version >= '3.15'", |
There was a problem hiding this comment.
ugh, do we need the and platform_python_implementation != 'PyPy' just in case?
There was a problem hiding this comment.
I'm pretty sure we're safe given the status of Python 3.12 support in PyPy, but let's add it just to cover our bases I guess...
|
better safe than sorry 🙃 |
Build abi3t wheels on python 3.15 and newer.