Skip to content

wheels: run 'abi3audit' for limited ABI wheels #315

Description

@jameslamb

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions