feat: add manylinux_2_35 (#2656)
pypa/manylinux now has a manylinux_2_35_armv7l image allowing for better C++20 support. piwheels is still building for Debian Bullseye so keeping manylinux_2_31 as the default image.
This commit is contained in:
@@ -71,6 +71,8 @@ images = [
|
||||
"pypy_aarch64",
|
||||
],
|
||||
),
|
||||
# manylinux_2_35 images
|
||||
PyPAImage("manylinux_2_35", ["armv7l"]),
|
||||
# manylinux_2_39 images
|
||||
PyPAImage("manylinux_2_39", ["riscv64"]),
|
||||
# musllinux_1_2 images
|
||||
|
||||
@@ -1,53 +1,54 @@
|
||||
[x86_64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.11.02-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.11.09-2
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.11.09-2
|
||||
|
||||
[i686]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.11.02-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.11.09-2
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.11.09-2
|
||||
|
||||
[aarch64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.11.02-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.11.09-2
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.11.09-2
|
||||
|
||||
[ppc64le]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.11.02-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.11.09-2
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.11.09-2
|
||||
|
||||
[s390x]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.11.02-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.11.09-2
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.11.09-2
|
||||
|
||||
[pypy_x86_64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.11.09-2
|
||||
|
||||
[pypy_i686]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.11.09-2
|
||||
|
||||
[pypy_aarch64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.11.02-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.11.02-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.11.02-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.11.09-2
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.11.09-2
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.11.09-2
|
||||
|
||||
[armv7l]
|
||||
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.11.02-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.11.02-1
|
||||
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.11.09-2
|
||||
manylinux_2_35 = quay.io/pypa/manylinux_2_35_armv7l:2025.11.09-2
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.11.09-2
|
||||
|
||||
[riscv64]
|
||||
manylinux_2_39 = quay.io/pypa/manylinux_2_39_riscv64:2025.11.02-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_riscv64:2025.11.02-1
|
||||
manylinux_2_39 = quay.io/pypa/manylinux_2_39_riscv64:2025.11.09-2
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_riscv64:2025.11.09-2
|
||||
|
||||
|
||||
+3
-3
@@ -760,9 +760,9 @@ Platform-specific environment variables also available:<br/>
|
||||
here.](https://yaml-multiline.info).
|
||||
|
||||
|
||||
Note that `manylinux_2_31` builds occur inside a Debian derivative docker
|
||||
Note that `manylinux_2_31`/`manylinux_2_35` builds occur inside a Debian derivative docker
|
||||
container, where `manylinux2014` builds occur inside a CentOS one. So for
|
||||
`manylinux_2_31` the `before-all` command must use `apt-get -y`
|
||||
`manylinux_2_31`/`manylinux_2_35` the `before-all` command must use `apt-get -y`
|
||||
instead.
|
||||
|
||||
### `before-build` {: #before-build env-var toml}
|
||||
@@ -1037,7 +1037,7 @@ Set the Docker image to be used for building [manylinux / musllinux](https://git
|
||||
|
||||
For `manylinux-*-image`, except `manylinux-armv7l-image` and `manylinux-riscv64-image`, the value of this option can either be set to `manylinux2014`, `manylinux_2_28` or `manylinux_2_34` to use a pinned version of the [official manylinux images](https://github.com/pypa/manylinux). Alternatively, set these options to any other valid Docker image name.
|
||||
|
||||
For `manylinux-armv7l-image`, the value of this option can either be set to `manylinux_2_31` or a custom image. Support is experimental for now. The `manylinux_2_31` value is only available for `armv7`.
|
||||
For `manylinux-armv7l-image`, the value of this option can either be set to `manylinux_2_31`, `manylinux_2_35` or a custom image. Support is experimental for now. The `manylinux_2_31` and `manylinux_2_35` values are only available for `armv7`.
|
||||
|
||||
For `manylinux-riscv64-image`, the value of this option can either be set to `manylinux_2_39` or a custom image. Support is experimental for now. The `manylinux_2_39` value is only available for `riscv64`.
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ The only side effect to your system will be docker images being pulled.
|
||||
|
||||
Linux wheels are built in [`manylinux`/`musllinux` containers](https://github.com/pypa/manylinux) to provide binary compatible wheels on Linux, according to [PEP 600](https://www.python.org/dev/peps/pep-0600/) / [PEP 656](https://www.python.org/dev/peps/pep-0656/). Because of this, when building with `cibuildwheel` on Linux, a few things should be taken into account:
|
||||
|
||||
- Programs and libraries are not installed on the CI runner host, but rather should be installed inside the container - using `yum` for `manylinux2014`, `apt-get` for `manylinux_2_31`, `dnf` for `manylinux_2_28` and `apk` for `musllinux_1_1` or `musllinux_1_2`, or manually. The same goes for environment variables that are potentially needed to customize the wheel building.
|
||||
- Programs and libraries are not installed on the CI runner host, but rather should be installed inside the container - using `yum` for `manylinux2014`, `apt-get` for `manylinux_2_31` or `manylinux_2_35`, `dnf` for `manylinux_2_28` and `apk` for `musllinux_1_1` or `musllinux_1_2`, or manually. The same goes for environment variables that are potentially needed to customize the wheel building.
|
||||
|
||||
`cibuildwheel` supports this by providing the [`environment`](options.md#environment) and [`before-all`](options.md#before-all) options to setup the build environment inside the running container.
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ def test(manylinux_image, tmp_path):
|
||||
"CIBW_MANYLINUX_PYPY_I686_IMAGE": manylinux_image,
|
||||
}
|
||||
if platform.machine() == "aarch64":
|
||||
# We just have a manylinux_2_31 image for armv7l
|
||||
# We just have a manylinux_2_31/manylinux_2_35 image for armv7l
|
||||
add_env["CIBW_ARCHS"] = "aarch64"
|
||||
|
||||
actual_wheels = utils.cibuildwheel_run(project_dir, add_env=add_env)
|
||||
@@ -100,7 +100,7 @@ def test(manylinux_image, tmp_path):
|
||||
)
|
||||
|
||||
if platform.machine() == "aarch64":
|
||||
# We just have a manylinux_2_31 image for armv7l
|
||||
# We just have a manylinux_2_31/manylinux_2_35 image for armv7l
|
||||
expected_wheels = [w for w in expected_wheels if "armv7l" not in w]
|
||||
|
||||
assert set(actual_wheels) == set(expected_wheels)
|
||||
|
||||
Reference in New Issue
Block a user