diff --git a/docs/faq.md b/docs/faq.md index 7d73e3e2f..2192a7868 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -118,6 +118,8 @@ The CPython Limited API is a subset of the Python C Extension API that's declare To create a package that builds ABI3 wheels, you'll need to configure your build backend to compile libraries correctly create wheels with the right tags. [Check this repo](https://github.com/joerick/python-abi3-package-sample) for an example of how to do this with setuptools. +You could also consider running [abi3audit](https://github.com/trailofbits/abi3audit) against the produced wheels in order to check for abi3 violations or inconsistencies. You can run it alongside the default in your [CIBW_REPAIR_WHEEL_COMMAND](options.md#repair-wheel-command). + ### Packages with optional C extensions {: #optional-extensions} `cibuildwheel` defines the environment variable `CIBUILDWHEEL` to the value `1` allowing projects for which the C extension is optional to make it mandatory when building wheels. diff --git a/docs/options.md b/docs/options.md index f2a5c142d..62c5ecf2a 100644 --- a/docs/options.md +++ b/docs/options.md @@ -898,6 +898,18 @@ Platform-specific environment variables are also available:
python scripts/check_repaired_wheel.py -w {dest_dir} {wheel} ``` + ```yaml + # Use abi3audit to catch issues with Limited API wheels + CIBW_REPAIR_WHEEL_COMMAND_LINUX: > + auditwheel repair -w {dest_dir} {wheel} && + pipx run abi3audit --strict --report {wheel} + CIBW_REPAIR_WHEEL_COMMAND_MACOS: > + delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && + pipx run abi3audit --strict --report {wheel} + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: > + pipx run abi3audit --strict --report {wheel} + ``` + !!! tab examples "pyproject.toml" ```toml @@ -922,6 +934,22 @@ Platform-specific environment variables are also available:
] ``` + ```toml + # Use abi3audit to catch issues with Limited API wheels + [tool.cibuildwheel.linux] + repair-wheel-command = [ + "auditwheel repair -w {dest_dir} {wheel}", + "pipx run abi3audit --strict --report {wheel}", + ] + [tool.cibuildwheel.macos] + repair-wheel-command = [ + "delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}", + "pipx run abi3audit --strict --report {wheel}", + ] + [tool.cibuildwheel.windows] + repair-wheel-command = "pipx run abi3audit --strict --report {wheel}" + ``` + In configuration mode, you can use an inline array, and the items will be joined with `&&`.