Description
In #42, we introduced the use of CPython's "limited ABI", to reduce the total number of wheels RAPIDS publishes and reduce the effort to support future Python versions.
That effort relied on packaging tools to produce wheels tagged cp3{n}-abi3 which only used things available in Python 3.{n}'s limited ABI.
Unfortunately, in at least one case a wheel was produced with tags that didn't match its limited ABI usage: rapidsai/ucxx#723
We should run abi3audit in CI for all projects, to prevent this.
Benefits of this work
- reduces the risk of producing broken wheels
- improves release confidence
Acceptance Criteria
abi3audit is run in CI for every RAPIDS project building wheels.
Approach
All RAPIDS repos already have a dedicated place for such checks... a ci/validate_wheel.sh script where tools like pydistcheck and twine check are run. That would be a good home for abi3audit.
abi3audit will pass when run on a wheel that doesn't declare a -abi3- tag, so for simplicity it should just be run unconditionally on every wheel produced within a repo.
$ pip download --no-deps spongebobcase
$ abi3audit --verbose --strict spongebobcase-0.4.1-py3-none-any.whl
[18:51:39] 🤷 nothing auditable found in spongebobcase-0.4.1-py3-none-any.whl
$ echo $?
0
... but we could skip adding this to repos that don't produce any wheels with compiled code.
Before starting:
Roll out to all other repos that produce wheels with any compiled code (GitHub search)
Notes
This was briefly mentioned in #42 (comment), but didn't become part of scope for that issue. I think that was just an oversight, not intentional, and that this tool would be a welcome addition to RAPIDS CI checks.
Description
In #42, we introduced the use of CPython's "limited ABI", to reduce the total number of wheels RAPIDS publishes and reduce the effort to support future Python versions.
That effort relied on packaging tools to produce wheels tagged
cp3{n}-abi3which only used things available in Python3.{n}'s limited ABI.Unfortunately, in at least one case a wheel was produced with tags that didn't match its limited ABI usage: rapidsai/ucxx#723
We should run
abi3auditin CI for all projects, to prevent this.Benefits of this work
Acceptance Criteria
abi3auditis run in CI for every RAPIDS project building wheels.Approach
All RAPIDS repos already have a dedicated place for such checks... a
ci/validate_wheel.shscript where tools likepydistcheckandtwine checkare run. That would be a good home forabi3audit.abi3auditwill pass when run on a wheel that doesn't declare a-abi3-tag, so for simplicity it should just be run unconditionally on every wheel produced within a repo.... but we could skip adding this to repos that don't produce any wheels with compiled code.
Before starting:
abi3auditto CI images (ci-wheel: add 'abi3audit' ci-imgs#454)ucxx-cu{12,13}wheels tagged ascp311-abi3, use symbols introduced in CPython 3.12 ucxx#723 + useabi3auditthereRoll out to all other repos that produce wheels with any compiled code (GitHub search)
Notes
This was briefly mentioned in #42 (comment), but didn't become part of scope for that issue. I think that was just an oversight, not intentional, and that this tool would be a welcome addition to RAPIDS CI checks.