Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f03ac7617d | ||
|
|
557c5f65f8 | ||
|
|
70975c2153 | ||
|
|
e2f143c327 | ||
|
|
866ae74781 | ||
|
|
84b518a1b1 | ||
|
|
785d812a47 |
@@ -139,7 +139,7 @@ jobs:
|
||||
# for oci_container unit tests
|
||||
- name: Set up QEMU
|
||||
if: runner.os == 'Linux'
|
||||
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
|
||||
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0
|
||||
|
||||
- name: Set up Xcode
|
||||
if: ${{ startsWith(matrix.os, 'macos-15') }}
|
||||
@@ -283,7 +283,7 @@ jobs:
|
||||
run: uv sync --no-dev --group test
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
|
||||
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0
|
||||
|
||||
- name: Run the emulation tests
|
||||
env:
|
||||
|
||||
@@ -34,7 +34,6 @@ While cibuildwheel itself requires a recent Python version to run (we support th
|
||||
| PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
|
||||
| PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
|
||||
| PyPy 3.11 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
|
||||
| GraalPy 3.11 v24.2 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
|
||||
| GraalPy 3.12 v25.0 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
|
||||
|
||||
<sup>**1** PyPy & GraalPy are only supported for manylinux wheels.</sup><br>
|
||||
@@ -100,7 +99,7 @@ jobs:
|
||||
- uses: actions/setup-python@v6
|
||||
|
||||
- name: Install cibuildwheel
|
||||
run: python -m pip install cibuildwheel==4.0.0rc2
|
||||
run: python -m pip install cibuildwheel==4.0.0
|
||||
|
||||
- name: Build wheels
|
||||
run: python -m cibuildwheel --output-dir wheelhouse
|
||||
@@ -241,15 +240,29 @@ Changelog
|
||||
|
||||
<!-- [[[cog from readme_changelog import mini_changelog; print(mini_changelog()) ]]] -->
|
||||
|
||||
### v4.0.0rc2
|
||||
### v4.0.0
|
||||
|
||||
_5 June 2026_
|
||||
_7 June 2026_
|
||||
|
||||
See @henryiii's [release post](https://iscinumpy.dev/post/cibuildwheel-4-0-0/) for more info on new features!
|
||||
|
||||
- 🌟 Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805)
|
||||
- 🌟 Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a2, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848)
|
||||
- 🌟 Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command) for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)
|
||||
- ✨ Adds CPython 3.15 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/stable/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.15.0b1. (#2833, #2850)
|
||||
|
||||
_While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.15 will be available in cibuildwheel without the flag._
|
||||
- ✨ Adds CPython 3.15 support for iOS and Android (#2857, #2858)
|
||||
- ✨ Adds Android improvements for building NumPy and related packages, including auditwheel support, pkg-config and Fortran configuration, and the [`xbuild-files`](https://cibuildwheel.pypa.io/en/stable/options/#xbuild-files) option (#2695)
|
||||
- ✨ Adds `CIBUILDWHEEL_BUILD_IDENTIFIER` environment variable set to the current build identifier (e.g. `cp311-manylinux_x86_64`) during per-build steps (#2872)
|
||||
- ✨ Adds `{project}` and `{package}` placeholders to [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827)
|
||||
- ⚠️ Drops support for Python 3.8 (#2686)
|
||||
- ⚠️ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)
|
||||
- ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)
|
||||
- ⚠️ Drops GraalPy 3.11 (gp311) support, as agreed in #2741, and removes GraalPy 24-only workarounds (#2895)
|
||||
- 🔐 Adds SHA256 verification for direct downloads of Python interpreters, virtualenv, and python-build-standalone assets (#2873)
|
||||
- 🔐 Adds tarfile extraction filter for safe archive extraction (#2856)
|
||||
- 🐛 Fixes `UV_PYTHON` not being set for [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) (#2830)
|
||||
- 🐛 Fixes detection of musl libc when downloading python-build-standalone, which previously always selected the gnu asset on musl hosts like Alpine (#2889)
|
||||
- 🐛 Fixes [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) expansion when `{project}` or `{package}` contains spaces or backslashes (#2886)
|
||||
- 🐛 Prevents deadlock when `linux32` fails and forwards platform args to the sanity check (#2880, #2888)
|
||||
@@ -257,45 +270,30 @@ _5 June 2026_
|
||||
- 🐛 Removes potential partial cache-population in case of error (#2892)
|
||||
- 🐛 Raises a clear error when `ANDROID_API_LEVEL` is not an integer (#2891)
|
||||
- 🐛 Replaces assert with proper exception in python-build-standalone (#2859)
|
||||
- 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884)
|
||||
- 🛠 Minor fixups across error messages, OCI container, and options (#2860)
|
||||
- 📚 Updates documentation for delvewheel as the default Windows [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command), including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)
|
||||
- 📚 Adds intersphinx support for external documentation linking (#2871)
|
||||
- 📚 Removes outdated numpy info (#2855)
|
||||
- 💼 Improves Azure test reliability with retries and caching (#2890)
|
||||
- 💼 Fixes Windows GitLab CI test running (#2870)
|
||||
- 💼 Updates CI action pins (#2867)
|
||||
- 💼 Adds agent and copilot setup files (#2861)
|
||||
- 💼 Uses `if TYPE_CHECKING:` blocks (#2866, #2864)
|
||||
- 🧪 Adds unit tests for `OCIContainer._get_platform_args` (#2878)
|
||||
|
||||
### v4.0.0rc1
|
||||
|
||||
_14 May 2026_
|
||||
|
||||
- 🌟 Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805)
|
||||
- 🌟 Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a1, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848)
|
||||
- 🌟 Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command) for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)
|
||||
- ✨ Adds CPython 3.15 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/stable/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.15.0b1. (#2833, #2850)
|
||||
|
||||
_While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.14 will be available in cibuildwheel without the flag._ (#2390)
|
||||
- ✨ Adds `{project}` and `{package}` placeholders to [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827)
|
||||
- ⚠️ Drops support for Python 3.8 (#2686)
|
||||
- ⚠️ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)
|
||||
- ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)
|
||||
- 🐛 Fixes `UV_PYTHON` not being set for [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) (#2830)
|
||||
- 🐛 Uses ConfigurationError when `package_dir` is outside cwd instead of a generic Exception (#2898)
|
||||
- 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884, #2845, #2837, #2818, #2810, #2838, #2813)
|
||||
- 🛠 Updates Android to Python 3.13.13 and 3.14.4 (#2821)
|
||||
- 🛠 Applies Pyodide-specific patches to the Emscripten toolchain installation (#2800)
|
||||
- 🛠 Updates dependencies and container pins (#2845, #2837, #2821, #2818, #2810, #2838, #2813)
|
||||
- 🛠 Uses `python -V -V` for Windows build diagnostics (#2832)
|
||||
- 🛠 Simplifies pinned container image lookup (#2897)
|
||||
- 🛠 Minor fixups across error messages, OCI container, and options (#2860)
|
||||
- 💼 Adds PEP 723 metadata for `bin/` scripts and drops the `bin` dependency group (#2819)
|
||||
- 💼 Improves Azure test reliability with retries and caching (#2890)
|
||||
- 💼 Fixes Windows GitLab CI test running (#2870)
|
||||
- 💼 Updates CI action pins and dev dependencies (#2902, #2867, #2851, #2843, #2826, #2823, #2820, #2807)
|
||||
- 💼 Adds agent and copilot setup files (#2861)
|
||||
- 💼 Uses `if TYPE_CHECKING:` blocks (#2866, #2864)
|
||||
- 🧪 Fixes Android tests using the `uv` frontend (#2809)
|
||||
- 🧪 Fixes the update-dependencies workflow to use `uv` to run `nox` (#2808)
|
||||
- 🧪 Adds unit tests for `OCIContainer._get_platform_args` (#2878)
|
||||
- 📚 Updates documentation for delvewheel as the default Windows [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command), including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)
|
||||
- 📚 Documents platform-specific [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) configuration (#2834)
|
||||
- 📚 Updates the "How it works" diagram with details of Android, iOS, and Pyodide builds (#2816)
|
||||
- 📚 Adds Pyodide icon and regenerates working examples data for Android, iOS, and Pyodide (#2815, #2811)
|
||||
- 📚 Adds intersphinx support for external documentation linking (#2871)
|
||||
- 📚 Adds instructions for building CUDA wheels and fixes manylinux container references in FAQ (#2896, #2900)
|
||||
- 📚 Links back to source in docs (#2806)
|
||||
- 💼 Adds PEP 723 metadata for `bin/` scripts and drops the `bin` dependency group (#2819)
|
||||
- 💼 Updates CI action pins and dev dependencies (#2851, #2843, #2826, #2823, #2820, #2807)
|
||||
- 🧪 Fixes Android tests using the `uv` frontend (#2809)
|
||||
- 🧪 Fixes the update-dependencies workflow to use `uv` to run `nox` (#2808)
|
||||
- 📚 Removes outdated numpy info (#2855)
|
||||
|
||||
|
||||
### v3.4.1
|
||||
@@ -326,7 +324,21 @@ _5 January 2026_
|
||||
|
||||
- 🛠 Update dependencies and container pins, including updating to CPython 3.14.2. (#2708)
|
||||
|
||||
<!-- [[[end]]] (sum: x/zQO1S1XP) -->
|
||||
### v3.3.0
|
||||
|
||||
_12 November 2025_
|
||||
|
||||
- 🐛 Fix an incompatibility with Docker v29 (#2660)
|
||||
- ✨ Adds `test-runtime` option, to customise how tests on simulated/emulated environments are run (#2636)
|
||||
- ✨ Adds support for new `manylinux_2_35` images on 32-bit ARM `armv7l`, offering better C++20 compatibility (#2656)
|
||||
- ✨ `build[uv]` is now supported on Android (#2587)
|
||||
- ✨ You can now install extras (such as `uv`) with a simple option on the GitHub Action (#2630)
|
||||
- ✨ `{project}` and `{package}` placeholders are now supported in `repair-wheel-command` (#2589)
|
||||
- 🛠 The versions set with `dependency-versions` no longer constrain packages specified by your `build-system.requires`. Previously, on platforms other than Linux, the constraints in this option would remain in the environment during the build. This has been tidied up make behaviour more consistent between platforms, and to prevent version conflicts. (#2583)
|
||||
- 🛠 Improve the handling of `test-command` on Android, enabling more options to be passed (#2590)
|
||||
- 📚 Docs improvements (#2618)
|
||||
|
||||
<!-- [[[end]]] (sum: B1EtXSS7u7) -->
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
__version__ = "4.0.0rc2"
|
||||
__version__ = "4.0.0"
|
||||
|
||||
+2
-10
@@ -880,11 +880,7 @@ class Options:
|
||||
f"manylinux-{build_platform}-image", ignore_empty=True
|
||||
)
|
||||
self._check_pinned_image(config_value, pinned_images)
|
||||
if config_value in pinned_images:
|
||||
image = pinned_images[config_value]
|
||||
else:
|
||||
image = config_value
|
||||
manylinux_images[build_platform] = image
|
||||
manylinux_images[build_platform] = pinned_images.get(config_value, config_value)
|
||||
|
||||
for build_platform in MUSLLINUX_ARCHS:
|
||||
pinned_images = all_pinned_container_images[build_platform]
|
||||
@@ -892,11 +888,7 @@ class Options:
|
||||
f"musllinux-{build_platform}-image", ignore_empty=True
|
||||
)
|
||||
self._check_pinned_image(config_value, pinned_images)
|
||||
if config_value in pinned_images:
|
||||
image = pinned_images[config_value]
|
||||
else:
|
||||
image = config_value
|
||||
musllinux_images[build_platform] = image
|
||||
musllinux_images[build_platform] = pinned_images.get(config_value, config_value)
|
||||
|
||||
container_engine_str = self.reader.get(
|
||||
"container-engine",
|
||||
|
||||
@@ -493,7 +493,7 @@ def build(options: Options, tmp_path: Path) -> None:
|
||||
abs_package_dir = options.globals.package_dir.resolve()
|
||||
if cwd != abs_package_dir and cwd not in abs_package_dir.parents:
|
||||
msg = "package_dir must be inside the working directory"
|
||||
raise Exception(msg)
|
||||
raise errors.ConfigurationError(msg)
|
||||
|
||||
container_project_path = PurePosixPath("/project")
|
||||
container_package_dir = container_project_path / abs_package_dir.relative_to(cwd)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import dataclasses
|
||||
import json
|
||||
import os
|
||||
import platform as platform_module
|
||||
import shutil
|
||||
@@ -390,42 +389,6 @@ def setup_python(
|
||||
setup_setuptools_cross_compile(tmp, python_configuration, python_libs_base, env)
|
||||
setup_rust_cross_compile(tmp, python_configuration, python_libs_base, env)
|
||||
|
||||
if implementation_id.startswith("gp311"):
|
||||
# GraalPy 24 fails to discover compilers, setup the relevant environment
|
||||
# variables. Adapted from
|
||||
# https://github.com/microsoft/vswhere/wiki/Start-Developer-Command-Prompt
|
||||
# Remove when GraalPy 24.x is dropped.
|
||||
vcpath = call(
|
||||
Path(os.environ["PROGRAMFILES(X86)"])
|
||||
/ "Microsoft Visual Studio"
|
||||
/ "Installer"
|
||||
/ "vswhere.exe",
|
||||
"-products",
|
||||
"*",
|
||||
"-latest",
|
||||
"-property",
|
||||
"installationPath",
|
||||
capture_stdout=True,
|
||||
).strip()
|
||||
log.notice(f"Discovering Visual Studio for GraalPy at {vcpath}")
|
||||
vcvars_file = tmp / "vcvars.json"
|
||||
call(
|
||||
f"{vcpath}\\Common7\\Tools\\vsdevcmd.bat",
|
||||
"-no_logo",
|
||||
"-arch=amd64",
|
||||
"-host_arch=amd64",
|
||||
"&&",
|
||||
"python",
|
||||
"-c",
|
||||
# this command needs to be one line for Windows reasons
|
||||
"import sys, json, pathlib, os; pathlib.Path(sys.argv[1]).write_text(json.dumps(dict(os.environ)))",
|
||||
vcvars_file,
|
||||
env=env,
|
||||
)
|
||||
with open(vcvars_file, encoding="utf-8") as f:
|
||||
vcvars = json.load(f)
|
||||
env.update(vcvars)
|
||||
|
||||
return base_python, env
|
||||
|
||||
|
||||
@@ -511,22 +474,6 @@ def build(options: Options, tmp_path: Path) -> None:
|
||||
),
|
||||
)
|
||||
|
||||
if (
|
||||
config.identifier.startswith("gp311")
|
||||
and build_frontend.name == "build"
|
||||
and "--no-isolation" not in extra_flags
|
||||
and "-n" not in extra_flags
|
||||
):
|
||||
# GraalPy 24 fails to discover its standard library when a venv is created
|
||||
# from a virtualenv seeded executable. See
|
||||
# https://github.com/oracle/graalpython/issues/491 and remove this once
|
||||
# GraalPy 24 is dropped.
|
||||
log.notice(
|
||||
"Disabling build isolation to workaround GraalPy bug. If the build fails, consider using pip or build[uv] as build frontend."
|
||||
)
|
||||
shell("graalpy -m pip install setuptools wheel", env=env)
|
||||
extra_flags = [*extra_flags, "-n"]
|
||||
|
||||
match build_frontend.name:
|
||||
case "pip":
|
||||
# Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org
|
||||
|
||||
@@ -21,7 +21,6 @@ python_configurations = [
|
||||
{ identifier = "pp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
||||
{ identifier = "pp310-manylinux_x86_64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
||||
{ identifier = "pp311-manylinux_x86_64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
||||
{ identifier = "gp311_242-manylinux_x86_64", version = "3.11", path_str = "/opt/python/graalpy311-graalpy242_311_native" },
|
||||
{ identifier = "gp312_250-manylinux_x86_64", version = "3.12", path_str = "/opt/python/graalpy312-graalpy250_312_native" },
|
||||
{ identifier = "cp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||
{ identifier = "cp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||
@@ -71,7 +70,6 @@ python_configurations = [
|
||||
{ identifier = "pp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
||||
{ identifier = "pp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
||||
{ identifier = "pp311-manylinux_aarch64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
||||
{ identifier = "gp311_242-manylinux_aarch64", version = "3.11", path_str = "/opt/python/graalpy311-graalpy242_311_native" },
|
||||
{ identifier = "gp312_250-manylinux_aarch64", version = "3.12", path_str = "/opt/python/graalpy312-graalpy250_312_native" },
|
||||
{ identifier = "pp39-manylinux_i686", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
||||
{ identifier = "pp310-manylinux_i686", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
||||
@@ -176,8 +174,6 @@ python_configurations = [
|
||||
{ identifier = "pp310-macosx_arm64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.19-macos_arm64.tar.bz2", sha256 = "3db8a03fc496164801646844d7f3b12baa0adb3ad9a0b7cb124521bc2e168a36" },
|
||||
{ identifier = "pp311-macosx_x86_64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.23-macos_x86_64.tar.bz2", sha256 = "c95363c4e87235d11a6cec8128239c291b1eb67a752778fbcfe029a71da82b5e" },
|
||||
{ identifier = "pp311-macosx_arm64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.23-macos_arm64.tar.bz2", sha256 = "4747b3aceba4c1c6104cddc0fe5ea302101d32955f0957347b9ecc4fbd7aed05" },
|
||||
{ identifier = "gp311_242-macosx_x86_64", version = "3.11", url = "https://github.com/oracle/graalpython/releases/download/graal-24.2.2/graalpy-24.2.2-macos-amd64.tar.gz", sha256 = "2f4d5e7dbdf90e38778dfcb8ca3e1ec7eee257ef726b1937d5bc91b54cdddf9b" },
|
||||
{ identifier = "gp311_242-macosx_arm64", version = "3.11", url = "https://github.com/oracle/graalpython/releases/download/graal-24.2.2/graalpy-24.2.2-macos-aarch64.tar.gz", sha256 = "f4a2ae01bae0fa53ec0d19f86d73c6dcc2a162d245552030183b84bfdd8f7635" },
|
||||
{ identifier = "gp312_250-macosx_x86_64", version = "3.12", url = "https://github.com/oracle/graalpython/releases/download/graal-25.0.1/graalpy-25.0.1-macos-amd64.tar.gz", sha256 = "10b0721d52397f0cc85f038900318da2203711cbcfae7899e3faed49d3dc6221" },
|
||||
{ identifier = "gp312_250-macosx_arm64", version = "3.12", url = "https://github.com/oracle/graalpython/releases/download/graal-25.0.3/graalpy-25.0.3-macos-aarch64.tar.gz", sha256 = "387d9f5b376860842bea4d55aae5820974f3f3b68fc36c77ae863a061a888857" },
|
||||
]
|
||||
@@ -214,7 +210,6 @@ python_configurations = [
|
||||
{ identifier = "pp39-win_amd64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip", sha256 = "06ec12a5e964dc0ad33e6f380185a4d295178dce6d6df512f508e7aee00a1323" },
|
||||
{ identifier = "pp310-win_amd64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.19-win64.zip", sha256 = "c0d07bba6c8fb4e5804f4a8b3f8ef07cc3d89f6ad1db42a45ffb9be60bbb7cc2" },
|
||||
{ identifier = "pp311-win_amd64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.23-win64.zip", sha256 = "948b8ea58dea5b9917210fe4afd242c788fbfaba1c3f1a25e696a404f703389a" },
|
||||
{ identifier = "gp311_242-win_amd64", version = "3.11", url = "https://github.com/oracle/graalpython/releases/download/graal-24.2.2/graalpy-24.2.2-windows-amd64.zip", sha256 = "9606134284d4d95b2f9d69c3087cd3e9e488f46355b419f5e66588a3281df6a3" },
|
||||
{ identifier = "gp312_250-win_amd64", version = "3.12", url = "https://github.com/oracle/graalpython/releases/download/graal-25.0.3/graalpy-25.0.3-windows-amd64.zip", sha256 = "2ae5c42b93e08d9e106a017634a3442b272ccae6d08ace157244de0449e937d4" },
|
||||
]
|
||||
|
||||
|
||||
+33
-34
@@ -5,15 +5,29 @@ ref: changelog
|
||||
|
||||
# Changelog
|
||||
|
||||
### v4.0.0rc2
|
||||
### v4.0.0
|
||||
|
||||
_5 June 2026_
|
||||
_7 June 2026_
|
||||
|
||||
See @henryiii's [release post](https://iscinumpy.dev/post/cibuildwheel-4-0-0/) for more info on new features!
|
||||
|
||||
- 🌟 Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805)
|
||||
- 🌟 Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a2, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848)
|
||||
- 🌟 Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command) for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)
|
||||
- ✨ Adds CPython 3.15 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/stable/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.15.0b1. (#2833, #2850)
|
||||
|
||||
_While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.15 will be available in cibuildwheel without the flag._
|
||||
- ✨ Adds CPython 3.15 support for iOS and Android (#2857, #2858)
|
||||
- ✨ Adds Android improvements for building NumPy and related packages, including auditwheel support, pkg-config and Fortran configuration, and the [`xbuild-files`](https://cibuildwheel.pypa.io/en/stable/options/#xbuild-files) option (#2695)
|
||||
- ✨ Adds `CIBUILDWHEEL_BUILD_IDENTIFIER` environment variable set to the current build identifier (e.g. `cp311-manylinux_x86_64`) during per-build steps (#2872)
|
||||
- ✨ Adds `{project}` and `{package}` placeholders to [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827)
|
||||
- ⚠️ Drops support for Python 3.8 (#2686)
|
||||
- ⚠️ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)
|
||||
- ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)
|
||||
- ⚠️ Drops GraalPy 3.11 (gp311) support, as agreed in #2741, and removes GraalPy 24-only workarounds (#2895)
|
||||
- 🔐 Adds SHA256 verification for direct downloads of Python interpreters, virtualenv, and python-build-standalone assets (#2873)
|
||||
- 🔐 Adds tarfile extraction filter for safe archive extraction (#2856)
|
||||
- 🐛 Fixes `UV_PYTHON` not being set for [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) (#2830)
|
||||
- 🐛 Fixes detection of musl libc when downloading python-build-standalone, which previously always selected the gnu asset on musl hosts like Alpine (#2889)
|
||||
- 🐛 Fixes [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) expansion when `{project}` or `{package}` contains spaces or backslashes (#2886)
|
||||
- 🐛 Prevents deadlock when `linux32` fails and forwards platform args to the sanity check (#2880, #2888)
|
||||
@@ -21,45 +35,30 @@ _5 June 2026_
|
||||
- 🐛 Removes potential partial cache-population in case of error (#2892)
|
||||
- 🐛 Raises a clear error when `ANDROID_API_LEVEL` is not an integer (#2891)
|
||||
- 🐛 Replaces assert with proper exception in python-build-standalone (#2859)
|
||||
- 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884)
|
||||
- 🛠 Minor fixups across error messages, OCI container, and options (#2860)
|
||||
- 📚 Updates documentation for delvewheel as the default Windows [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command), including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)
|
||||
- 📚 Adds intersphinx support for external documentation linking (#2871)
|
||||
- 📚 Removes outdated numpy info (#2855)
|
||||
- 💼 Improves Azure test reliability with retries and caching (#2890)
|
||||
- 💼 Fixes Windows GitLab CI test running (#2870)
|
||||
- 💼 Updates CI action pins (#2867)
|
||||
- 💼 Adds agent and copilot setup files (#2861)
|
||||
- 💼 Uses `if TYPE_CHECKING:` blocks (#2866, #2864)
|
||||
- 🧪 Adds unit tests for `OCIContainer._get_platform_args` (#2878)
|
||||
|
||||
### v4.0.0rc1
|
||||
|
||||
_14 May 2026_
|
||||
|
||||
- 🌟 Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805)
|
||||
- 🌟 Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a1, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848)
|
||||
- 🌟 Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command) for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)
|
||||
- ✨ Adds CPython 3.15 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/stable/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.15.0b1. (#2833, #2850)
|
||||
|
||||
_While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.14 will be available in cibuildwheel without the flag._ (#2390)
|
||||
- ✨ Adds `{project}` and `{package}` placeholders to [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827)
|
||||
- ⚠️ Drops support for Python 3.8 (#2686)
|
||||
- ⚠️ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)
|
||||
- ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)
|
||||
- 🐛 Fixes `UV_PYTHON` not being set for [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) (#2830)
|
||||
- 🐛 Uses ConfigurationError when `package_dir` is outside cwd instead of a generic Exception (#2898)
|
||||
- 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884, #2845, #2837, #2818, #2810, #2838, #2813)
|
||||
- 🛠 Updates Android to Python 3.13.13 and 3.14.4 (#2821)
|
||||
- 🛠 Applies Pyodide-specific patches to the Emscripten toolchain installation (#2800)
|
||||
- 🛠 Updates dependencies and container pins (#2845, #2837, #2821, #2818, #2810, #2838, #2813)
|
||||
- 🛠 Uses `python -V -V` for Windows build diagnostics (#2832)
|
||||
- 🛠 Simplifies pinned container image lookup (#2897)
|
||||
- 🛠 Minor fixups across error messages, OCI container, and options (#2860)
|
||||
- 💼 Adds PEP 723 metadata for `bin/` scripts and drops the `bin` dependency group (#2819)
|
||||
- 💼 Improves Azure test reliability with retries and caching (#2890)
|
||||
- 💼 Fixes Windows GitLab CI test running (#2870)
|
||||
- 💼 Updates CI action pins and dev dependencies (#2902, #2867, #2851, #2843, #2826, #2823, #2820, #2807)
|
||||
- 💼 Adds agent and copilot setup files (#2861)
|
||||
- 💼 Uses `if TYPE_CHECKING:` blocks (#2866, #2864)
|
||||
- 🧪 Fixes Android tests using the `uv` frontend (#2809)
|
||||
- 🧪 Fixes the update-dependencies workflow to use `uv` to run `nox` (#2808)
|
||||
- 🧪 Adds unit tests for `OCIContainer._get_platform_args` (#2878)
|
||||
- 📚 Updates documentation for delvewheel as the default Windows [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command), including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)
|
||||
- 📚 Documents platform-specific [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) configuration (#2834)
|
||||
- 📚 Updates the "How it works" diagram with details of Android, iOS, and Pyodide builds (#2816)
|
||||
- 📚 Adds Pyodide icon and regenerates working examples data for Android, iOS, and Pyodide (#2815, #2811)
|
||||
- 📚 Adds intersphinx support for external documentation linking (#2871)
|
||||
- 📚 Adds instructions for building CUDA wheels and fixes manylinux container references in FAQ (#2896, #2900)
|
||||
- 📚 Links back to source in docs (#2806)
|
||||
- 💼 Adds PEP 723 metadata for `bin/` scripts and drops the `bin` dependency group (#2819)
|
||||
- 💼 Updates CI action pins and dev dependencies (#2851, #2843, #2826, #2823, #2820, #2807)
|
||||
- 🧪 Fixes Android tests using the `uv` frontend (#2809)
|
||||
- 🧪 Fixes the update-dependencies workflow to use `uv` to run `nox` (#2808)
|
||||
- 📚 Removes outdated numpy info (#2855)
|
||||
|
||||
|
||||
### v3.4.1
|
||||
|
||||
+57
-3
@@ -113,7 +113,7 @@ There are two suggested methods for keeping cibuildwheel up to date that instead
|
||||
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
|
||||
|
||||
```yaml
|
||||
uses: pypa/cibuildwheel@v4.0.0rc2
|
||||
uses: pypa/cibuildwheel@v4.0.0
|
||||
```
|
||||
|
||||
This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal.
|
||||
@@ -138,7 +138,7 @@ The second option, and the only one that supports other CI systems, is using a `
|
||||
|
||||
```bash
|
||||
# requirements-cibw.txt
|
||||
cibuildwheel==4.0.0rc2
|
||||
cibuildwheel==4.0.0
|
||||
```
|
||||
|
||||
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this:
|
||||
@@ -221,6 +221,60 @@ Your build might need some compiler flags to be set through environment variable
|
||||
Consider incorporating these into your package, for example, in `setup.py` using [`extra_compile_args` or
|
||||
`extra_link_args`](https://setuptools.pypa.io/en/latest/userguide/ext_modules.html#setuptools.Extension).
|
||||
|
||||
### Building wheels with CUDA on Linux
|
||||
|
||||
On Linux, you can build binary wheels with CUDA to take advantage of NVIDIA GPUs for hardware acceleration.
|
||||
Specify the custom Docker containers with CUDA Toolkit as follows:
|
||||
|
||||
```yaml
|
||||
CIBW_MANYLINUX_X86_64_IMAGE: >-
|
||||
quay.io/manylinux_cuda/manylinux_2_28_x86_64_cuda13_1:latest
|
||||
CIBW_MANYLINUX_AARCH64_IMAGE: >-
|
||||
quay.io/manylinux_cuda/manylinux_2_28_aarch64_cuda13_1:latest
|
||||
```
|
||||
Currently, we support the following CUDA manylinux containers:
|
||||
|
||||
* `quay.io/manylinux_cuda/manylinux_2_28_x86_64_cuda12_9:latest`
|
||||
* `quay.io/manylinux_cuda/manylinux_2_28_aarch64_cuda12_9:latest`
|
||||
* `quay.io/manylinux_cuda/manylinux_2_28_x86_64_cuda13_1:latest`
|
||||
* `quay.io/manylinux_cuda/manylinux_2_28_aarch64_cuda13_1:latest`
|
||||
* `quay.io/manylinux_cuda/manylinux_2_34_x86_64_cuda12_9:latest`
|
||||
* `quay.io/manylinux_cuda/manylinux_2_34_aarch64_cuda12_9:latest`
|
||||
* `quay.io/manylinux_cuda/manylinux_2_34_x86_64_cuda13_1:latest`
|
||||
* `quay.io/manylinux_cuda/manylinux_2_34_aarch64_cuda13_1:latest`
|
||||
|
||||
A typical GitHub Actions workflow will look like this:
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
build-wheels:
|
||||
name: Build wheels
|
||||
runs-on: ${{ matrix.target.runner }}
|
||||
strategy:
|
||||
matrix:
|
||||
manylinux-base: [manylinux_2_28, manylinux_2_34]
|
||||
cuda-version: [12_9, 13_1]
|
||||
target:
|
||||
- arch: x86_64
|
||||
runner: ubuntu-24.04
|
||||
- arch: aarch64
|
||||
runner: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@v3
|
||||
env:
|
||||
CIBW_MANYLINUX_X86_64_IMAGE: >-
|
||||
quay.io/manylinux_cuda/${{ matrix.manylinux-base }}_x86_64_cuda${{ matrix.cuda-version }}:latest
|
||||
CIBW_MANYLINUX_AARCH64_IMAGE: >-
|
||||
quay.io/manylinux_cuda/${{ matrix.manylinux-base }}_aarch64_cuda${{ matrix.cuda-version }}:latest
|
||||
CIBW_BUILD: cp312-manylinux_${{ matrix.target.arch }}
|
||||
```
|
||||
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If your wheel didn't compile, you might have a mistake in your config.
|
||||
@@ -303,7 +357,7 @@ Solutions to this vary, but the simplest is to use pipx:
|
||||
# most runners have pipx preinstalled, but in case you don't
|
||||
python3 -m pip install pipx
|
||||
|
||||
pipx run cibuildwheel==4.0.0rc2 --output-dir wheelhouse
|
||||
pipx run cibuildwheel==4.0.0 --output-dir wheelhouse
|
||||
pipx run twine upload wheelhouse/*.whl
|
||||
```
|
||||
|
||||
|
||||
@@ -69,7 +69,6 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat
|
||||
| PyPy3.9 v7.3 | pp39-macosx_x86_64<br/>pp39-macosx_arm64 | pp39-win_amd64 | pp39-manylinux_x86_64<br/>pp39-manylinux_i686 | pp39-manylinux_aarch64 | | | |
|
||||
| PyPy3.10 v7.3 | pp310-macosx_x86_64<br/>pp310-macosx_arm64 | pp310-win_amd64 | pp310-manylinux_x86_64<br/>pp310-manylinux_i686 | pp310-manylinux_aarch64 | | | |
|
||||
| PyPy3.11 v7.3 | pp311-macosx_x86_64<br/>pp311-macosx_arm64 | pp311-win_amd64 | pp311-manylinux_x86_64<br/>pp311-manylinux_i686 | pp311-manylinux_aarch64 | | | |
|
||||
| GraalPy 3.11 v24.2 | gp311_242-macosx_x86_64<br/>gp311_242-macosx_arm64 | gp311_242-win_amd64 | gp311_242-manylinux_x86_64 | gp311_242-manylinux_aarch64 | | |
|
||||
| GraalPy 3.12 v25.0 | gp312_250-macosx_x86_64<br/>gp312_250-macosx_arm64 | gp312_250-win_amd64 | gp312_250-manylinux_x86_64 | gp312_250-manylinux_aarch64 | | |
|
||||
|
||||
The list of supported and currently selected build identifiers can also be retrieved by passing the `--print-build-identifiers` flag to cibuildwheel.
|
||||
|
||||
@@ -6,7 +6,7 @@ jobs:
|
||||
- bash: |
|
||||
set -o errexit
|
||||
python3 -m pip install --upgrade pip
|
||||
pip3 install cibuildwheel==4.0.0rc2
|
||||
pip3 install cibuildwheel==4.0.0
|
||||
displayName: Install dependencies
|
||||
- bash: cibuildwheel --output-dir wheelhouse .
|
||||
displayName: Build wheels
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
- bash: |
|
||||
set -o errexit
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install cibuildwheel==4.0.0rc2
|
||||
python3 -m pip install cibuildwheel==4.0.0
|
||||
displayName: Install dependencies
|
||||
- bash: cibuildwheel --output-dir wheelhouse .
|
||||
displayName: Build wheels
|
||||
@@ -34,7 +34,7 @@ jobs:
|
||||
- bash: |
|
||||
set -o errexit
|
||||
python -m pip install --upgrade pip
|
||||
pip install cibuildwheel==4.0.0rc2
|
||||
pip install cibuildwheel==4.0.0
|
||||
displayName: Install dependencies
|
||||
- bash: cibuildwheel --output-dir wheelhouse .
|
||||
displayName: Build wheels
|
||||
|
||||
@@ -11,7 +11,7 @@ jobs:
|
||||
- run:
|
||||
name: Build the Linux wheels.
|
||||
command: |
|
||||
python3 -m pip install --user cibuildwheel==4.0.0rc2
|
||||
python3 -m pip install --user cibuildwheel==4.0.0
|
||||
cibuildwheel --output-dir wheelhouse
|
||||
- store_artifacts:
|
||||
path: wheelhouse/
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
- run:
|
||||
name: Build the Linux aarch64 wheels.
|
||||
command: |
|
||||
python3 -m pip install --user cibuildwheel==4.0.0rc2
|
||||
python3 -m pip install --user cibuildwheel==4.0.0
|
||||
python3 -m cibuildwheel --output-dir wheelhouse
|
||||
- store_artifacts:
|
||||
path: wheelhouse/
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
name: Build the OS X wheels.
|
||||
command: |
|
||||
sudo softwareupdate --install-rosetta --agree-to-license # for x86_64/universal2 tests
|
||||
pip3 install cibuildwheel==4.0.0rc2
|
||||
pip3 install cibuildwheel==4.0.0
|
||||
cibuildwheel --output-dir wheelhouse
|
||||
- store_artifacts:
|
||||
path: wheelhouse/
|
||||
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@v4.0.0rc2
|
||||
uses: pypa/cibuildwheel@v4.0.0
|
||||
env:
|
||||
CIBW_PLATFORM: ${{ matrix.platform || 'auto' }}
|
||||
CIBW_ARCHS: ${{ matrix.archs || 'auto' }}
|
||||
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@v4.0.0rc2
|
||||
uses: pypa/cibuildwheel@v4.0.0
|
||||
# env:
|
||||
# CIBW_SOME_OPTION: value
|
||||
# ...
|
||||
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Build wheels
|
||||
run: pipx run cibuildwheel==4.0.0rc2
|
||||
run: pipx run cibuildwheel==4.0.0
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
platforms: all
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@v4.0.0rc2
|
||||
uses: pypa/cibuildwheel@v4.0.0
|
||||
env:
|
||||
# configure cibuildwheel on Linux to build native archs ('auto'),
|
||||
# and to split the remaining architectures between the x86_64 and
|
||||
|
||||
@@ -12,7 +12,7 @@ linux:
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
script:
|
||||
- curl -sSL https://get.docker.com/ | sh
|
||||
- python -m pip install cibuildwheel==4.0.0rc2
|
||||
- python -m pip install cibuildwheel==4.0.0
|
||||
- cibuildwheel --output-dir wheelhouse
|
||||
artifacts:
|
||||
paths:
|
||||
@@ -23,7 +23,7 @@ windows:
|
||||
before_script:
|
||||
- choco install python -y --allow-downgrade --version 3.12.4
|
||||
- choco install git.install -y
|
||||
- py -m pip install cibuildwheel==4.0.0rc2
|
||||
- py -m pip install cibuildwheel==4.0.0
|
||||
script:
|
||||
- py -m cibuildwheel --output-dir wheelhouse --platform windows
|
||||
artifacts:
|
||||
@@ -35,7 +35,7 @@ windows:
|
||||
macos:
|
||||
image: macos-14-xcode-15
|
||||
before_script:
|
||||
- python3 -m pip install cibuildwheel==4.0.0rc2
|
||||
- python3 -m pip install cibuildwheel==4.0.0
|
||||
script:
|
||||
- python3 -m cibuildwheel --output-dir wheelhouse
|
||||
artifacts:
|
||||
|
||||
@@ -14,7 +14,7 @@ linux:
|
||||
- curl -sSL https://get.docker.com/ | sh
|
||||
# Warning: This is extremely slow, be careful with how many wheels you build
|
||||
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||
- python -m pip install cibuildwheel==4.0.0rc2
|
||||
- python -m pip install cibuildwheel==4.0.0
|
||||
# Assuming your CI runner's default architecture is x86_64...
|
||||
- cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64
|
||||
artifacts:
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "cibuildwheel"
|
||||
version = "4.0.0rc2"
|
||||
version = "4.0.0"
|
||||
description = "Build Python wheels on CI with minimal configuration."
|
||||
readme = "README.md"
|
||||
license = "BSD-2-Clause"
|
||||
|
||||
@@ -179,19 +179,6 @@ def test_dependency_constraints(
|
||||
msg = f"Unknown method: {method}"
|
||||
raise ValueError(msg)
|
||||
|
||||
skip = ""
|
||||
|
||||
if (
|
||||
utils.get_platform() == "windows"
|
||||
and method == "file"
|
||||
and build_frontend_env_nouv["CIBW_BUILD_FRONTEND"] == "build"
|
||||
):
|
||||
# GraalPy 24 fails to discover its standard library when a venv is created
|
||||
# from a virtualenv seeded executable. See
|
||||
# https://github.com/oracle/graalpython/issues/491 and remove this once
|
||||
# GraalPy 24 is dropped
|
||||
skip = "gp311*"
|
||||
|
||||
# cross-platform Python script for dependency constraint checks
|
||||
before_build_script = project_dir / "check_versions.py"
|
||||
before_build_script.write_text(CHECK_VERSIONS_SCRIPT)
|
||||
@@ -200,7 +187,6 @@ def test_dependency_constraints(
|
||||
actual_wheels = utils.cibuildwheel_run(
|
||||
project_dir,
|
||||
add_env={
|
||||
"CIBW_SKIP": skip,
|
||||
"CIBW_DEPENDENCY_VERSIONS": dependency_version_option,
|
||||
"CIBW_BEFORE_BUILD": f"python {before_build_script.name}",
|
||||
"EXPECTED_VERSIONS": json.dumps(tool_versions),
|
||||
@@ -212,9 +198,4 @@ def test_dependency_constraints(
|
||||
# also check that we got the right wheels
|
||||
expected_wheels = utils.expected_wheels("spam", "0.1.0", single_python=True)
|
||||
|
||||
if skip == "gp*":
|
||||
# See reference to https://github.com/oracle/graalpython/issues/491
|
||||
# above
|
||||
expected_wheels = [w for w in expected_wheels if "graalpy311" not in w]
|
||||
|
||||
assert set(actual_wheels) == set(expected_wheels)
|
||||
|
||||
@@ -40,26 +40,12 @@ def test_pep518(tmp_path: Path, build_frontend_env: dict[str, str]) -> None:
|
||||
project_dir = tmp_path / "project"
|
||||
basic_project.generate(project_dir)
|
||||
|
||||
# GraalPy fails to discover its standard library when a venv is created
|
||||
# from a virtualenv seeded executable. See
|
||||
# https://github.com/oracle/graalpython/issues/491 and remove this once
|
||||
# fixed upstream.
|
||||
if build_frontend_env["CIBW_BUILD_FRONTEND"] == "build" and utils.get_platform() == "windows":
|
||||
build_frontend_env["CIBW_SKIP"] = "gp*"
|
||||
|
||||
# build the wheels
|
||||
actual_wheels = utils.cibuildwheel_run(project_dir, add_env=build_frontend_env)
|
||||
|
||||
# check that the expected wheels are produced
|
||||
expected_wheels = utils.expected_wheels("spam", "0.1.0")
|
||||
|
||||
# GraalPy fails to discover its standard library when a venv is created
|
||||
# from a virtualenv seeded executable. See
|
||||
# https://github.com/oracle/graalpython/issues/491 and remove this once
|
||||
# fixed upstream.
|
||||
if build_frontend_env["CIBW_BUILD_FRONTEND"] == "build" and utils.get_platform() == "windows":
|
||||
expected_wheels = [w for w in expected_wheels if "graalpy" not in w]
|
||||
|
||||
assert set(actual_wheels) == set(expected_wheels)
|
||||
|
||||
# These checks ensure an extra file is not created when using custom
|
||||
|
||||
+1
-5
@@ -319,7 +319,6 @@ def _expected_wheels(
|
||||
|
||||
if EnableGroup.GraalPy in enable_groups and include_graalpy_in_expected_wheels:
|
||||
python_abi_tags += [
|
||||
"graalpy311-graalpy242_311_native",
|
||||
"graalpy312-graalpy250_312_native",
|
||||
]
|
||||
|
||||
@@ -376,10 +375,7 @@ def _expected_wheels(
|
||||
else:
|
||||
min_macosx = _floor_macosx(macosx_deployment_target, "10.15")
|
||||
elif python_abi_tag.startswith("graalpy"):
|
||||
if python_abi_tag.startswith("graalpy311"):
|
||||
min_macosx = macosx_deployment_target
|
||||
else:
|
||||
min_macosx = _floor_macosx(macosx_deployment_target, "10.13")
|
||||
min_macosx = _floor_macosx(macosx_deployment_target, "10.13")
|
||||
else:
|
||||
min_macosx = macosx_deployment_target
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ def test_build_limited_python() -> None:
|
||||
assert build_selector("cp37-win32")
|
||||
assert build_selector("cp38-win32")
|
||||
assert build_selector("pp37-win_amd64")
|
||||
assert build_selector("gp311_242-win_amd64")
|
||||
assert build_selector("gp312_250-win_amd64")
|
||||
|
||||
|
||||
def test_build_limited_python_partial() -> None:
|
||||
|
||||
@@ -3,7 +3,10 @@ from __future__ import annotations
|
||||
import textwrap
|
||||
from pprint import pprint
|
||||
|
||||
import pytest
|
||||
|
||||
import cibuildwheel.platforms.linux
|
||||
from cibuildwheel.errors import ConfigurationError
|
||||
from cibuildwheel.oci_container import OCIContainerEngineConfig
|
||||
from cibuildwheel.options import CommandLineArguments, Options
|
||||
|
||||
@@ -11,8 +14,6 @@ TYPE_CHECKING = False
|
||||
if TYPE_CHECKING:
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
def test_linux_container_split(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
"""
|
||||
@@ -99,3 +100,24 @@ def test_linux_container_split(tmp_path: Path, monkeypatch: pytest.MonkeyPatch)
|
||||
]
|
||||
assert before_alls(build_steps[3]) == [""] * 4
|
||||
assert container_engines(build_steps[3]) == [default_container_engine] * 4
|
||||
|
||||
|
||||
def test_package_dir_outside_working_directory_raises_configuration_error(
|
||||
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||||
) -> None:
|
||||
work_dir = tmp_path / "work"
|
||||
work_dir.mkdir()
|
||||
package_dir = tmp_path / "package"
|
||||
package_dir.mkdir()
|
||||
package_dir.joinpath("pyproject.toml").touch()
|
||||
|
||||
monkeypatch.chdir(work_dir)
|
||||
|
||||
command_line_arguments = CommandLineArguments.defaults()
|
||||
command_line_arguments.package_dir = package_dir
|
||||
options = Options(platform="linux", command_line_arguments=command_line_arguments, env={})
|
||||
|
||||
with pytest.raises(
|
||||
ConfigurationError, match="package_dir must be inside the working directory"
|
||||
):
|
||||
cibuildwheel.platforms.linux.build(options, tmp_path / "build")
|
||||
|
||||
@@ -14,7 +14,7 @@ from cibuildwheel.oci_container import OCIPlatform
|
||||
from cibuildwheel.util import file
|
||||
|
||||
DEFAULT_IDS = {"cp39", "cp310", "cp311", "cp312", "cp313", "cp314", "cp314t"}
|
||||
ALL_IDS = DEFAULT_IDS | {"pp39", "pp310", "pp311", "gp311_242", "gp312_250"}
|
||||
ALL_IDS = DEFAULT_IDS | {"pp39", "pp310", "pp311", "gp312_250"}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -158,7 +158,6 @@ before-all = "true"
|
||||
"pp39",
|
||||
"pp310",
|
||||
"pp311",
|
||||
"gp311_242",
|
||||
"gp312_250",
|
||||
}
|
||||
}
|
||||
@@ -180,7 +179,6 @@ before-all = "true"
|
||||
"pp39",
|
||||
"pp310",
|
||||
"pp311",
|
||||
"gp311_242",
|
||||
"gp312_250",
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user