From b5deb7c72add1cb6f4f4d03bab412567e3a5fbc3 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sun, 10 Aug 2025 16:44:21 +1000 Subject: [PATCH 1/2] Add manylinux_2_28 ppc64le wheels --- .github/workflows/wheels.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 24e78f965c5..28df294e50c 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -93,6 +93,31 @@ jobs: os: ubuntu-24.04-arm cibw_arch: aarch64 build: "*manylinux*" + - name: "manylinux_2_28 3.10 ppc64le" + platform: linux + os: ubuntu-latest + cibw_arch: ppc64le + build: "*cp310-manylinux*" + - name: "manylinux_2_28 3.11 ppc64le" + platform: linux + os: ubuntu-latest + cibw_arch: ppc64le + build: "*cp311-manylinux*" + - name: "manylinux_2_28 3.12 ppc64le" + platform: linux + os: ubuntu-latest + cibw_arch: ppc64le + build: "*cp312-manylinux*" + - name: "manylinux_2_28 3.13 ppc64le" + platform: linux + os: ubuntu-latest + cibw_arch: ppc64le + build: "*cp313*-manylinux*" + - name: "manylinux_2_28 3.14 ppc64le" + platform: linux + os: ubuntu-latest + cibw_arch: ppc64le + build: "*cp314*-manylinux*" - name: "iOS arm64 device" platform: ios os: macos-latest @@ -115,6 +140,10 @@ jobs: with: python-version: "3.x" + - name: Set up QEMU + if: "matrix.cibw_arch == 'ppc64le'" + uses: docker/setup-qemu-action@v3 + - name: Install cibuildwheel run: | python3 -m pip install -r .ci/requirements-cibw.txt From 5a4eb477889cb93ad9397358acd93a246a2a1e33 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sun, 10 Aug 2025 11:03:59 +1000 Subject: [PATCH 2/2] Skip several dependencies for ppc64le --- .github/workflows/wheels-dependencies.sh | 4 ++++ checks/check_wheel.py | 7 +++++++ pyproject.toml | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/.github/workflows/wheels-dependencies.sh b/.github/workflows/wheels-dependencies.sh index c79cd2f17d1..f250cda2022 100755 --- a/.github/workflows/wheels-dependencies.sh +++ b/.github/workflows/wheels-dependencies.sh @@ -276,6 +276,10 @@ function build { build_simple libxcb $LIBXCB_VERSION https://www.x.org/releases/individual/lib build_libjpeg_turbo + if [[ "$AUDITWHEEL_ARCH" == "ppc64le" ]]; then + return + fi + if [[ -n "$IS_MACOS" ]]; then # Custom tiff build to include jpeg; by default, configure won't include # headers/libs in the custom macOS/iOS prefix. Explicitly disable webp, diff --git a/checks/check_wheel.py b/checks/check_wheel.py index 937722c4bab..ba27674df84 100644 --- a/checks/check_wheel.py +++ b/checks/check_wheel.py @@ -27,11 +27,16 @@ def test_wheel_modules() -> None: # tkinter is not available on iOS expected_modules.remove("tkinter") + elif platform.processor() == "ppc64le": + expected_modules -= {"freetype2", "littlecms2", "webp", "avif"} + assert set(features.get_supported_modules()) == expected_modules def test_wheel_codecs() -> None: expected_codecs = {"jpg", "jpg_2000", "zlib", "libtiff"} + if platform.processor() == "ppc64le": + expected_codecs -= {"jpg_2000", "libtiff"} assert set(features.get_supported_codecs()) == expected_codecs @@ -54,5 +59,7 @@ def test_wheel_features() -> None: # Can't distribute raqm due to licensing, and there's no system version; # fribidi and harfbuzz won't be available if raqm isn't available. expected_features -= {"raqm", "fribidi", "harfbuzz"} + elif platform.processor() == "ppc64le": + expected_features -= {"raqm", "fribidi", "harfbuzz"} assert set(features.get_supported_features()) == expected_features diff --git a/pyproject.toml b/pyproject.toml index 137726a1c04..7404718ffe8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -150,6 +150,11 @@ environment.PATH = "$(pwd)/build/deps/iphonesimulator/bin:$PATH" select = "*-win32" test-requires = [ ] +[[tool.cibuildwheel.overrides]] +select = "*_ppc64le" +config-settings = "raqm=disable fribidi=disable imagequant=disable" +test-requires = [ ] + [tool.black] exclude = "wheels/multibuild"