From aaa749d86ff48ccbe8dc41fbd93acf112534a326 Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 1 Aug 2026 12:57:36 +0300 Subject: [PATCH] build: build linux wheels on manylinux_2_28 to match numpy The 3.2.0 release pipeline failed building linux wheels. The wheel itself built fine; cibuildwheel's test step then installed it inside the build container and could not resolve numpy. cibuildwheel defaults to manylinux2014 (glibc 2.17), and numpy has stopped shipping manylinux2014 wheels: from 2.5 it publishes manylinux_2_28 and musllinux_1_2 only. pip therefore fell back to the numpy sdist and tried to compile it, which cannot work in that image, since it ships GCC 10.2.1 and numpy requires 10.3 or newer. Pins the linux images to numpy's own floor. Being more permissive than numpy gained nothing: LZGraphs does not run without numpy, so a glibc 2.17 wheel is one whose dependency will not resolve on the machine that can install it. --- pyproject.toml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 8517756..6881a58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -198,6 +198,19 @@ test-command = "python -c \"from LZGraphs import LZGraph; print('LZGraphs C back [tool.cibuildwheel.linux] archs = ["x86_64", "aarch64"] +# cibuildwheel's default build image is manylinux2014 (glibc 2.17), and numpy +# stopped shipping manylinux2014 wheels: from 2.5 it publishes +# manylinux_2_28 and musllinux_1_2 only. Inside a 2014 container pip +# therefore falls back to the numpy sdist and tries to compile it, which +# fails outright because that image ships GCC 10.2.1 and numpy requires +# >= 10.3. Pinning the images to numpy's own floor is what makes the wheel +# installable: LZGraphs cannot run without numpy, so being more permissive +# than numpy buys nothing and only produces a wheel whose dependency will +# not resolve on the same machine. +manylinux-x86_64-image = "manylinux_2_28" +manylinux-aarch64-image = "manylinux_2_28" +musllinux-x86_64-image = "musllinux_1_2" +musllinux-aarch64-image = "musllinux_1_2" [tool.cibuildwheel.macos] archs = ["arm64"]