From 0c291fa1e47a171ed56d4d0b6cf9989612f5be96 Mon Sep 17 00:00:00 2001 From: Matthieu Darbois Date: Wed, 12 Feb 2025 16:52:48 +0100 Subject: [PATCH 1/8] chore: use pypa/manylinux for manylinux_2_31_armv7l (#2269) --- bin/update_docker.py | 2 +- .../resources/pinned_docker_images.cfg | 2 +- docs/options.md | 34 +++++++++---------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/bin/update_docker.py b/bin/update_docker.py index e090f3f0f..f70b98934 100755 --- a/bin/update_docker.py +++ b/bin/update_docker.py @@ -55,7 +55,7 @@ class Image: Image("manylinux_2_28", "pypy_x86_64", "quay.io/pypa/manylinux_2_28_x86_64", None), Image("manylinux_2_28", "pypy_aarch64", "quay.io/pypa/manylinux_2_28_aarch64", None), # manylinux_2_31 images - Image("manylinux_2_31", "armv7l", "ghcr.io/mayeut/manylinux_2_31", None), + Image("manylinux_2_31", "armv7l", "quay.io/pypa/manylinux_2_31_armv7l", None), # musllinux_1_1 images Image("musllinux_1_1", "x86_64", "quay.io/pypa/musllinux_1_1_x86_64", None), Image("musllinux_1_1", "i686", "quay.io/pypa/musllinux_1_1_i686", None), diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 75b031913..e1bcbaca4 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -53,6 +53,6 @@ manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2024.11.16-1 [armv7l] -manylinux_2_31 = ghcr.io/mayeut/manylinux_2_31:2024.11.16-1 +manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.02.08-2 musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2024.11.16-1 diff --git a/docs/options.md b/docs/options.md index 327bfe1f8..b09153573 100644 --- a/docs/options.md +++ b/docs/options.md @@ -1188,23 +1188,23 @@ Platform-specific environment variables are also available:
The available options are: -| Option | Default | Future default* | -|-----------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------------| -| CIBW_MANYLINUX_X86_64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_x86_64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_x86_64) | -| CIBW_MANYLINUX_I686_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_i686) | | -| CIBW_MANYLINUX_PYPY_X86_64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_x86_64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_x86_64) | -| CIBW_MANYLINUX_AARCH64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_aarch64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_aarch64) | -| CIBW_MANYLINUX_PPC64LE_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_ppc64le) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_ppc64le) | -| CIBW_MANYLINUX_S390X_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_s390x) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_s390x) | -| CIBW_MANYLINUX_ARMV7L_IMAGE | [`manylinux_2_31`](https://github.com/mayeut/manylinux-ubuntu/pkgs/container/manylinux_2_31) | | -| CIBW_MANYLINUX_PYPY_AARCH64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_aarch64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_aarch64) | -| CIBW_MANYLINUX_PYPY_I686_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_i686) | | -| CIBW_MUSLLINUX_X86_64_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_x86_64) | | -| CIBW_MUSLLINUX_I686_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_i686) | | -| CIBW_MUSLLINUX_AARCH64_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_aarch64) | | -| CIBW_MUSLLINUX_PPC64LE_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_ppc64le) | | -| CIBW_MUSLLINUX_S390X_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_s390x) | | -| CIBW_MUSLLINUX_ARMV7L_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_armv7l) | | +| Option | Default | Future default* | +|-----------------------------------|----------------------------------------------------------------|-----------------------------------------------------------------| +| CIBW_MANYLINUX_X86_64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_x86_64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_x86_64) | +| CIBW_MANYLINUX_I686_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_i686) | | +| CIBW_MANYLINUX_PYPY_X86_64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_x86_64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_x86_64) | +| CIBW_MANYLINUX_AARCH64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_aarch64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_aarch64) | +| CIBW_MANYLINUX_PPC64LE_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_ppc64le) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_ppc64le) | +| CIBW_MANYLINUX_S390X_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_s390x) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_s390x) | +| CIBW_MANYLINUX_ARMV7L_IMAGE | [`manylinux_2_31`](https://quay.io/pypa/manylinux_2_31_armv7l) | | +| CIBW_MANYLINUX_PYPY_AARCH64_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_aarch64) | [`manylinux_2_28`](https://quay.io/pypa/manylinux_2_28_aarch64) | +| CIBW_MANYLINUX_PYPY_I686_IMAGE | [`manylinux2014`](https://quay.io/pypa/manylinux2014_i686) | | +| CIBW_MUSLLINUX_X86_64_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_x86_64) | | +| CIBW_MUSLLINUX_I686_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_i686) | | +| CIBW_MUSLLINUX_AARCH64_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_aarch64) | | +| CIBW_MUSLLINUX_PPC64LE_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_ppc64le) | | +| CIBW_MUSLLINUX_S390X_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_s390x) | | +| CIBW_MUSLLINUX_ARMV7L_IMAGE | [`musllinux_1_2`](https://quay.io/pypa/musllinux_1_2_armv7l) | | * The default is scheduled to change in a cibuildwheel release on or after 6th May 2025 - if you don't want the new default, you should set the value to `manylinux2014`. From 1c8019390a76ceaba9ecf8a33abc4e3c2a89bced Mon Sep 17 00:00:00 2001 From: Matthieu Darbois Date: Tue, 21 Jan 2025 20:49:59 +0100 Subject: [PATCH 2/8] feat: Add support for ubuntu-24.04-arm GHA runner (#2135) * ci(gha): add tests on ubuntu-24.04-arm * address review comments --- .github/workflows/test.yml | 6 +++--- README.md | 4 ++-- examples/github-deploy.yml | 2 +- examples/github-minimal.yml | 2 +- examples/github-with-qemu.yml | 14 +++++++++----- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f3ae2f604..5e3829760 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,7 +37,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-13, macos-14] + os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-14] python_version: ['3.13'] include: - os: ubuntu-latest @@ -89,7 +89,7 @@ jobs: with: package-dir: sample_proj output-dir: wheelhouse_only - only: cp312-${{ runner.os == 'Linux' && 'manylinux_x86_64' || (runner.os == 'Windows' && 'win_amd64' || 'macosx_x86_64') }} + only: cp312-${{ runner.os == 'Linux' && (runner.arch == 'ARM64' && 'manylinux_aarch64' || 'manylinux_x86_64') || (runner.os == 'Windows' && 'win_amd64' || 'macosx_x86_64') }} - name: Create custom configuration file shell: bash @@ -124,7 +124,7 @@ jobs: - name: Test cibuildwheel run: | - uv run bin/run_tests.py --run-podman + uv run bin/run_tests.py ${{ (runner.os == 'Linux' && runner.arch == 'X64') && '--run-podman' || '' }} emulated-archs: name: Get qemu emulated architectures diff --git a/README.md b/README.md index 986ef5537..d103efd89 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Usage | | Linux | macOS | Windows | Linux ARM | macOS ARM | Windows ARM | |-----------------|-------|-------|---------|-----------|-----------|-------------| -| GitHub Actions | ✅ | ✅ | ✅ | ✅¹ | ✅ | ✅² | +| GitHub Actions | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | | Azure Pipelines | ✅ | ✅ | ✅ | | ✅ | ✅² | | Travis CI | ✅ | | ✅ | ✅ | | | | AppVeyor | ✅ | ✅ | ✅ | | ✅ | ✅² | @@ -88,7 +88,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-13, macos-latest] + os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-latest] steps: - uses: actions/checkout@v4 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 23cf6cea2..433adf5b3 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: # macos-13 is an intel runner, macos-14 is apple silicon - os: [ubuntu-latest, windows-latest, macos-13, macos-14] + os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-14] steps: - uses: actions/checkout@v4 diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index b83d8210c..d857b6448 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: # macos-13 is an intel runner, macos-14 is apple silicon - os: [ubuntu-latest, windows-latest, macos-13, macos-14] + os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-14] steps: - uses: actions/checkout@v4 diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index 390b872ee..ed4836a9c 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -9,13 +9,13 @@ jobs: strategy: matrix: # macos-13 is an intel runner, macos-14 is apple silicon - os: [ubuntu-latest, windows-latest, macos-13, macos-14] + os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-14] steps: - uses: actions/checkout@v4 - name: Set up QEMU - if: runner.os == 'Linux' + if: runner.os == 'Linux' && runner.arch == 'X64' uses: docker/setup-qemu-action@v3 with: platforms: all @@ -23,9 +23,13 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.22.0 env: - # configure cibuildwheel to build native archs ('auto'), and some - # emulated ones - CIBW_ARCHS_LINUX: auto aarch64 ppc64le s390x + # configure cibuildwheel on Linux to build native archs ('auto'), + # and to split the remaining architectures between the x86_64 and + # ARM runners + # armv7l can be built without QEMU on GitHub Actions ARM runners but that's + # not the case on all ARM64 hardware hence 'auto armv7l' for native archs + # on the GHA ARM64 runner + CIBW_ARCHS_LINUX: ${{ runner.arch == 'X64' && 'auto ppc64le s390x' || 'auto armv7l' }} - uses: actions/upload-artifact@v4 with: From 197fec4cbaba9fcf00ea4b00726a0c8092136f09 Mon Sep 17 00:00:00 2001 From: Matthieu Darbois Date: Wed, 12 Feb 2025 16:51:33 +0100 Subject: [PATCH 3/8] feature: add PyPy 3.11 (#2268) --- README.md | 1 + cibuildwheel/resources/build-platforms.toml | 12 +++++++++--- docs/options.md | 1 + test/utils.py | 2 ++ unit_test/option_prepare_test.py | 5 +++-- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d103efd89..705089d80 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ While cibuildwheel itself requires a recent Python version to run (we support th | PyPy 3.8 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A | | PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A | | PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A | +| PyPy 3.11 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A | ¹ PyPy is only supported for manylinux wheels.
² Windows arm64 support is experimental.
diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 2c2fbede9..0c80ad6bb 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -22,6 +22,7 @@ python_configurations = [ { identifier = "pp38-manylinux_x86_64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" }, { 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 = "cp36-manylinux_aarch64", version = "3.6", path_str = "/opt/python/cp36-cp36m" }, { identifier = "cp37-manylinux_aarch64", version = "3.7", path_str = "/opt/python/cp37-cp37m" }, { identifier = "cp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" }, @@ -62,10 +63,12 @@ python_configurations = [ { identifier = "pp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" }, { 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 = "pp37-manylinux_i686", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" }, { identifier = "pp38-manylinux_i686", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" }, { 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" }, + { identifier = "pp311-manylinux_i686", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" }, { identifier = "cp36-musllinux_x86_64", version = "3.6", path_str = "/opt/python/cp36-cp36m" }, { identifier = "cp37-musllinux_x86_64", version = "3.7", path_str = "/opt/python/cp37-cp37m" }, { identifier = "cp38-musllinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" }, @@ -152,8 +155,10 @@ python_configurations = [ { identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" }, { identifier = "pp39-macosx_x86_64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_x86_64.tar.bz2" }, { identifier = "pp39-macosx_arm64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_arm64.tar.bz2" }, - { identifier = "pp310-macosx_x86_64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.17-macos_x86_64.tar.bz2" }, - { identifier = "pp310-macosx_arm64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.17-macos_arm64.tar.bz2" }, + { identifier = "pp310-macosx_x86_64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.18-macos_x86_64.tar.bz2" }, + { identifier = "pp310-macosx_arm64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.18-macos_arm64.tar.bz2" }, + { identifier = "pp311-macosx_x86_64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.18-macos_x86_64.tar.bz2" }, + { identifier = "pp311-macosx_arm64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.18-macos_arm64.tar.bz2" }, ] [windows] @@ -185,7 +190,8 @@ python_configurations = [ { identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip" }, { identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" }, { identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip" }, - { identifier = "pp310-win_amd64", version = "3.10", arch = "64", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.17-win64.zip" }, + { identifier = "pp310-win_amd64", version = "3.10", arch = "64", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.18-win64.zip" }, + { identifier = "pp311-win_amd64", version = "3.11", arch = "64", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.18-win64.zip" }, ] [pyodide] diff --git a/docs/options.md b/docs/options.md index b09153573..2856d62b9 100644 --- a/docs/options.md +++ b/docs/options.md @@ -302,6 +302,7 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat | PyPy3.8 v7.3 | pp38-macosx_x86_64
pp38-macosx_arm64 | pp38-win_amd64 | pp38-manylinux_x86_64
pp38-manylinux_i686 | pp38-manylinux_aarch64 | | PyPy3.9 v7.3 | pp39-macosx_x86_64
pp39-macosx_arm64 | pp39-win_amd64 | pp39-manylinux_x86_64
pp39-manylinux_i686 | pp39-manylinux_aarch64 | | PyPy3.10 v7.3 | pp310-macosx_x86_64
pp310-macosx_arm64 | pp310-win_amd64 | pp310-manylinux_x86_64
pp310-manylinux_i686 | pp310-manylinux_aarch64 | +| PyPy3.11 v7.3 | pp311-macosx_x86_64
pp311-macosx_arm64 | pp311-win_amd64 | pp311-manylinux_x86_64
pp311-manylinux_i686 | pp311-manylinux_aarch64 | The list of supported and currently selected build identifiers can also be retrieved by passing the `--print-build-identifiers` flag to cibuildwheel. The format is `python_tag-platform_tag`, with tags similar to those in [PEP 425](https://www.python.org/dev/peps/pep-0425/#details). diff --git a/test/utils.py b/test/utils.py index aa23638d6..51fb8ce88 100644 --- a/test/utils.py +++ b/test/utils.py @@ -210,6 +210,7 @@ def expected_wheels( "pp38-pypy38_pp73", "pp39-pypy39_pp73", "pp310-pypy310_pp73", + "pp311-pypy311_pp73", ] if platform == "macos" and machine_arch == "arm64": @@ -225,6 +226,7 @@ def expected_wheels( "pp38-pypy38_pp73", "pp39-pypy39_pp73", "pp310-pypy310_pp73", + "pp311-pypy311_pp73", ] if single_python: diff --git a/unit_test/option_prepare_test.py b/unit_test/option_prepare_test.py index 9d6e2c430..d80f69616 100644 --- a/unit_test/option_prepare_test.py +++ b/unit_test/option_prepare_test.py @@ -27,6 +27,7 @@ "pp38", "pp39", "pp310", + "pp311", } @@ -158,7 +159,7 @@ def test_build_with_override_launches(monkeypatch, tmp_path): assert identifiers == { f"{x}-manylinux_x86_64" for x in ALL_IDS - - {"cp36", "cp310", "cp311", "cp312", "cp313", "pp37", "pp38", "pp39", "pp310"} + - {"cp36", "cp310", "cp311", "cp312", "cp313", "pp37", "pp38", "pp39", "pp310", "pp311"} } assert kwargs["options"].build_options("cp37-manylinux_x86_64").before_all == "" @@ -169,7 +170,7 @@ def test_build_with_override_launches(monkeypatch, tmp_path): identifiers = {x.identifier for x in kwargs["platform_configs"]} assert identifiers == { f"{x}-manylinux_x86_64" - for x in ["cp310", "cp311", "cp312", "cp313", "pp37", "pp38", "pp39", "pp310"] + for x in ["cp310", "cp311", "cp312", "cp313", "pp37", "pp38", "pp39", "pp310", "pp311"] } kwargs = build_in_container.call_args_list[3][1] From c82ed15166c40c35652b2b459de1b864c48bb13f Mon Sep 17 00:00:00 2001 From: Agriya Khetarpal <74401230+agriyakhetarpal@users.noreply.github.com> Date: Fri, 10 Jan 2025 20:58:09 +0530 Subject: [PATCH 4/8] Bump to Pyodide 0.27 (#2117) * Bump to Pyodide 0.27 * Update the Pyodide target's constraints --- cibuildwheel/resources/build-platforms.toml | 2 +- cibuildwheel/resources/constraints-pyodide312.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 0c80ad6bb..67f8e2f00 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -196,5 +196,5 @@ python_configurations = [ [pyodide] python_configurations = [ - { identifier = "cp312-pyodide_wasm32", version = "3.12", pyodide_version = "0.26.4", pyodide_build_version = "0.29.0", emscripten_version = "3.1.58", node_version = "v20" }, + { identifier = "cp312-pyodide_wasm32", version = "3.12", pyodide_version = "0.27.0", pyodide_build_version = "0.29.2", emscripten_version = "3.1.58", node_version = "v20" }, ] diff --git a/cibuildwheel/resources/constraints-pyodide312.txt b/cibuildwheel/resources/constraints-pyodide312.txt index a0fcc3bee..6eec2992a 100644 --- a/cibuildwheel/resources/constraints-pyodide312.txt +++ b/cibuildwheel/resources/constraints-pyodide312.txt @@ -60,7 +60,7 @@ pydantic-core==2.27.0 # via pydantic pygments==2.18.0 # via rich -pyodide-build==0.29.0 +pyodide-build==0.29.2 # via -r .nox/update_constraints/tmp/constraints-pyodide.in pyodide-cli==0.2.4 # via @@ -79,7 +79,7 @@ rich==13.9.4 # pyodide-build # pyodide-cli # typer -ruamel-yaml==0.18.6 +ruamel-yaml==0.18.7 # via pyodide-build ruamel-yaml-clib==0.2.12 # via ruamel-yaml From 9622918b9afb3248de994affb8c9a90c48273a3c Mon Sep 17 00:00:00 2001 From: mayeut Date: Sun, 23 Feb 2025 19:00:07 +0100 Subject: [PATCH 5/8] chore: bump dependencies --- cibuildwheel/resources/build-platforms.toml | 36 ++++++++-------- .../resources/constraints-pyodide312.txt | 37 ++++++++-------- .../resources/constraints-python310.txt | 12 +++--- .../resources/constraints-python311.txt | 8 ++-- .../resources/constraints-python312.txt | 8 ++-- .../resources/constraints-python313.txt | 8 ++-- .../resources/constraints-python38.txt | 6 +-- .../resources/constraints-python39.txt | 12 +++--- cibuildwheel/resources/constraints.txt | 8 ++-- cibuildwheel/resources/nodejs.toml | 4 +- .../resources/pinned_docker_images.cfg | 42 +++++++++---------- cibuildwheel/resources/virtualenv.toml | 2 +- 12 files changed, 91 insertions(+), 92 deletions(-) diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 67f8e2f00..b2a83445c 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -141,15 +141,15 @@ python_configurations = [ { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.9/python-3.11.9-macos11.pkg" }, { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.9/python-3.11.9-macos11.pkg" }, { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.9/python-3.11.9-macos11.pkg" }, - { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.7/python-3.12.7-macos11.pkg" }, - { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.7/python-3.12.7-macos11.pkg" }, - { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.7/python-3.12.7-macos11.pkg" }, - { identifier = "cp313-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.0/python-3.13.0-macos11.pkg" }, - { identifier = "cp313-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.0/python-3.13.0-macos11.pkg" }, - { identifier = "cp313-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.0/python-3.13.0-macos11.pkg" }, - { identifier = "cp313t-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.0/python-3.13.0-macos11.pkg" }, - { identifier = "cp313t-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.0/python-3.13.0-macos11.pkg" }, - { identifier = "cp313t-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.0/python-3.13.0-macos11.pkg" }, + { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.9/python-3.12.9-macos11.pkg" }, + { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.9/python-3.12.9-macos11.pkg" }, + { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.9/python-3.12.9-macos11.pkg" }, + { identifier = "cp313-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" }, + { identifier = "cp313-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" }, + { identifier = "cp313-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" }, + { identifier = "cp313t-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" }, + { identifier = "cp313t-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" }, + { identifier = "cp313t-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" }, { identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-osx64.tar.bz2" }, { identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2" }, { identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" }, @@ -175,18 +175,18 @@ python_configurations = [ { identifier = "cp310-win_amd64", version = "3.10.11", arch = "64" }, { identifier = "cp311-win32", version = "3.11.9", arch = "32" }, { identifier = "cp311-win_amd64", version = "3.11.9", arch = "64" }, - { identifier = "cp312-win32", version = "3.12.7", arch = "32" }, - { identifier = "cp312-win_amd64", version = "3.12.7", arch = "64" }, - { identifier = "cp313-win32", version = "3.13.0", arch = "32" }, - { identifier = "cp313t-win32", version = "3.13.0", arch = "32" }, - { identifier = "cp313-win_amd64", version = "3.13.0", arch = "64" }, - { identifier = "cp313t-win_amd64", version = "3.13.0", arch = "64" }, + { identifier = "cp312-win32", version = "3.12.9", arch = "32" }, + { identifier = "cp312-win_amd64", version = "3.12.9", arch = "64" }, + { identifier = "cp313-win32", version = "3.13.2", arch = "32" }, + { identifier = "cp313t-win32", version = "3.13.2", arch = "32" }, + { identifier = "cp313-win_amd64", version = "3.13.2", arch = "64" }, + { identifier = "cp313t-win_amd64", version = "3.13.2", arch = "64" }, { identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" }, { identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" }, { identifier = "cp311-win_arm64", version = "3.11.9", arch = "ARM64" }, - { identifier = "cp312-win_arm64", version = "3.12.7", arch = "ARM64" }, - { identifier = "cp313-win_arm64", version = "3.13.0", arch = "ARM64" }, - { identifier = "cp313t-win_arm64", version = "3.13.0", arch = "ARM64" }, + { identifier = "cp312-win_arm64", version = "3.12.9", arch = "ARM64" }, + { identifier = "cp313-win_arm64", version = "3.13.2", arch = "ARM64" }, + { identifier = "cp313t-win_arm64", version = "3.13.2", arch = "ARM64" }, { identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip" }, { identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" }, { identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip" }, diff --git a/cibuildwheel/resources/constraints-pyodide312.txt b/cibuildwheel/resources/constraints-pyodide312.txt index 6eec2992a..fec783780 100644 --- a/cibuildwheel/resources/constraints-pyodide312.txt +++ b/cibuildwheel/resources/constraints-pyodide312.txt @@ -2,7 +2,7 @@ # nox -s update_constraints annotated-types==0.7.0 # via pydantic -anyio==4.6.2.post1 +anyio==4.8.0 # via httpx auditwheel-emscripten==0.0.16 # via pyodide-build @@ -10,26 +10,26 @@ build==1.2.2.post1 # via # -r .nox/update_constraints/tmp/constraints-pyodide.in # pyodide-build -certifi==2024.8.30 +certifi==2025.1.31 # via # httpcore # httpx # requests -charset-normalizer==3.4.0 +charset-normalizer==3.4.1 # via requests -click==8.1.7 +click==8.1.8 # via typer -cmake==3.31.0.1 +cmake==3.31.4 # via pyodide-build distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv h11==0.14.0 # via httpcore httpcore==1.0.7 # via httpx -httpx==0.27.2 +httpx==0.28.1 # via unearth idna==3.10 # via @@ -48,17 +48,17 @@ packaging==24.2 # build # pyodide-build # unearth -pip==24.3.1 +pip==25.0.1 # via -r .nox/update_constraints/tmp/constraints-pyodide.in platformdirs==4.3.6 # via virtualenv -pydantic==2.10.0 +pydantic==2.10.6 # via # pyodide-build # pyodide-lock -pydantic-core==2.27.0 +pydantic-core==2.27.2 # via pydantic -pygments==2.18.0 +pygments==2.19.1 # via rich pyodide-build==0.29.2 # via -r .nox/update_constraints/tmp/constraints-pyodide.in @@ -79,35 +79,34 @@ rich==13.9.4 # pyodide-build # pyodide-cli # typer -ruamel-yaml==0.18.7 +ruamel-yaml==0.18.10 # via pyodide-build ruamel-yaml-clib==0.2.12 # via ruamel-yaml shellingham==1.5.4 # via typer sniffio==1.3.1 - # via - # anyio - # httpx -typer==0.13.1 + # via anyio +typer==0.15.1 # via # auditwheel-emscripten # pyodide-build # pyodide-cli typing-extensions==4.12.2 # via + # anyio # pydantic # pydantic-core # typer unearth==0.17.2 # via pyodide-build -urllib3==2.2.3 +urllib3==2.3.0 # via requests -virtualenv==20.27.1 +virtualenv==20.29.2 # via # build # pyodide-build -wheel==0.45.0 +wheel==0.45.1 # via # auditwheel-emscripten # pyodide-build diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 04f6ef2dc..a65ea62b1 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -4,13 +4,13 @@ altgraph==0.17.4 # via macholib build==1.2.2.post1 # via -r cibuildwheel/resources/constraints.in -delocate==0.12.0 +delocate==0.13.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via build macholib==1.16.3 # via delocate @@ -18,17 +18,17 @@ packaging==24.2 # via # build # delocate -pip==24.3.1 +pip==25.0.1 # via -r cibuildwheel/resources/constraints.in platformdirs==4.3.6 # via virtualenv pyproject-hooks==1.2.0 # via build -tomli==2.1.0 +tomli==2.2.1 # via build typing-extensions==4.12.2 # via delocate -virtualenv==20.27.1 +virtualenv==20.29.2 # via -r cibuildwheel/resources/constraints.in zipp==3.21.0 # via importlib-metadata diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 6b9c935ec..ff8b1b1f7 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -4,11 +4,11 @@ altgraph==0.17.4 # via macholib build==1.2.2.post1 # via -r cibuildwheel/resources/constraints.in -delocate==0.12.0 +delocate==0.13.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv macholib==1.16.3 # via delocate @@ -16,7 +16,7 @@ packaging==24.2 # via # build # delocate -pip==24.3.1 +pip==25.0.1 # via -r cibuildwheel/resources/constraints.in platformdirs==4.3.6 # via virtualenv @@ -24,5 +24,5 @@ pyproject-hooks==1.2.0 # via build typing-extensions==4.12.2 # via delocate -virtualenv==20.27.1 +virtualenv==20.29.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index 6b9c935ec..ff8b1b1f7 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -4,11 +4,11 @@ altgraph==0.17.4 # via macholib build==1.2.2.post1 # via -r cibuildwheel/resources/constraints.in -delocate==0.12.0 +delocate==0.13.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv macholib==1.16.3 # via delocate @@ -16,7 +16,7 @@ packaging==24.2 # via # build # delocate -pip==24.3.1 +pip==25.0.1 # via -r cibuildwheel/resources/constraints.in platformdirs==4.3.6 # via virtualenv @@ -24,5 +24,5 @@ pyproject-hooks==1.2.0 # via build typing-extensions==4.12.2 # via delocate -virtualenv==20.27.1 +virtualenv==20.29.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python313.txt b/cibuildwheel/resources/constraints-python313.txt index 6b9c935ec..ff8b1b1f7 100644 --- a/cibuildwheel/resources/constraints-python313.txt +++ b/cibuildwheel/resources/constraints-python313.txt @@ -4,11 +4,11 @@ altgraph==0.17.4 # via macholib build==1.2.2.post1 # via -r cibuildwheel/resources/constraints.in -delocate==0.12.0 +delocate==0.13.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv macholib==1.16.3 # via delocate @@ -16,7 +16,7 @@ packaging==24.2 # via # build # delocate -pip==24.3.1 +pip==25.0.1 # via -r cibuildwheel/resources/constraints.in platformdirs==4.3.6 # via virtualenv @@ -24,5 +24,5 @@ pyproject-hooks==1.2.0 # via build typing-extensions==4.12.2 # via delocate -virtualenv==20.27.1 +virtualenv==20.29.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 95b03162c..c5892095e 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -18,17 +18,17 @@ packaging==24.2 # via # build # delocate -pip==24.3.1 +pip==25.0.1 # via -r cibuildwheel/resources/constraints.in platformdirs==4.3.6 # via virtualenv pyproject-hooks==1.2.0 # via build -tomli==2.1.0 +tomli==2.2.1 # via build typing-extensions==4.12.2 # via delocate -virtualenv==20.27.1 +virtualenv==20.29.2 # via -r cibuildwheel/resources/constraints.in zipp==3.20.2 # via importlib-metadata diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 04f6ef2dc..a65ea62b1 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -4,13 +4,13 @@ altgraph==0.17.4 # via macholib build==1.2.2.post1 # via -r cibuildwheel/resources/constraints.in -delocate==0.12.0 +delocate==0.13.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via build macholib==1.16.3 # via delocate @@ -18,17 +18,17 @@ packaging==24.2 # via # build # delocate -pip==24.3.1 +pip==25.0.1 # via -r cibuildwheel/resources/constraints.in platformdirs==4.3.6 # via virtualenv pyproject-hooks==1.2.0 # via build -tomli==2.1.0 +tomli==2.2.1 # via build typing-extensions==4.12.2 # via delocate -virtualenv==20.27.1 +virtualenv==20.29.2 # via -r cibuildwheel/resources/constraints.in zipp==3.21.0 # via importlib-metadata diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 6b9c935ec..ff8b1b1f7 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -4,11 +4,11 @@ altgraph==0.17.4 # via macholib build==1.2.2.post1 # via -r cibuildwheel/resources/constraints.in -delocate==0.12.0 +delocate==0.13.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv macholib==1.16.3 # via delocate @@ -16,7 +16,7 @@ packaging==24.2 # via # build # delocate -pip==24.3.1 +pip==25.0.1 # via -r cibuildwheel/resources/constraints.in platformdirs==4.3.6 # via virtualenv @@ -24,5 +24,5 @@ pyproject-hooks==1.2.0 # via build typing-extensions==4.12.2 # via delocate -virtualenv==20.27.1 +virtualenv==20.29.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/nodejs.toml b/cibuildwheel/resources/nodejs.toml index 6d3f3f8c2..91a71f773 100644 --- a/cibuildwheel/resources/nodejs.toml +++ b/cibuildwheel/resources/nodejs.toml @@ -1,3 +1,3 @@ url = "https://nodejs.org/dist/" -v22 = "v22.11.0" -v20 = "v20.18.0" +v22 = "v22.14.0" +v20 = "v20.18.3" diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index e1bcbaca4..e02006975 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,58 +1,58 @@ [x86_64] manylinux1 = quay.io/pypa/manylinux1_x86_64:2024-04-29-76807b8 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2024.11.16-1 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.02.23-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2024.10.26-1 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2024.11.16-1 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.02.23-1 [i686] manylinux1 = quay.io/pypa/manylinux1_i686:2024-04-29-76807b8 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2024.10.26-1 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2024.11.16-1 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.02.23-1 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2024.11.16-1 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.02.23-1 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2024.11.16-1 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.02.23-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2024.10.26-1 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2024.11.16-1 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.02.23-1 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2024.11.16-1 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.02.23-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2024.10.26-1 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2024.11.16-1 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.02.23-1 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2024.11.16-1 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.02.23-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2024.10.26-1 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2024.11.16-1 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.02.23-1 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2024.11.16-1 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.02.23-1 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2024.11.16-1 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.02.23-1 [armv7l] -manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.02.08-2 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2024.11.16-1 +manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.02.23-1 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.02.23-1 diff --git a/cibuildwheel/resources/virtualenv.toml b/cibuildwheel/resources/virtualenv.toml index 2a5981d3a..cb13b37a9 100644 --- a/cibuildwheel/resources/virtualenv.toml +++ b/cibuildwheel/resources/virtualenv.toml @@ -1,2 +1,2 @@ py36 = { version = "20.21.1", url = "https://github.com/pypa/get-virtualenv/blob/20.21.1/public/virtualenv.pyz?raw=true" } -default = { version = "20.27.1", url = "https://github.com/pypa/get-virtualenv/blob/20.27.1/public/virtualenv.pyz?raw=true" } +default = { version = "20.29.1", url = "https://github.com/pypa/get-virtualenv/blob/20.29.1/public/virtualenv.pyz?raw=true" } From 7d3ad48c05cb7fdc48afdad89e5ec939c97d200a Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Fri, 10 Jan 2025 15:35:05 +0000 Subject: [PATCH 6/8] Remove specific Python versions from the update-dependencies job The requirements pinning is done by uv now, so we don't need to run the versions of Python to do the pinning anymore. Cherry-picked from 37f7f611b208f48d4bb80a35eb31e39e47102930 --- .github/workflows/update-dependencies.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 8b4a09998..465056c5d 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -33,8 +33,6 @@ jobs: - uses: actions/checkout@v4 - uses: wntrblm/nox@2024.10.09 - with: - python-versions: "3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13" - name: "Run update: dependencies" run: nox --force-color -s update_constraints From 6c091d35ddfb3b95265941bb70dc546e7cabcc6d Mon Sep 17 00:00:00 2001 From: Matthieu Darbois Date: Thu, 28 Nov 2024 07:52:14 +0100 Subject: [PATCH 7/8] ci/doc: move azure macOS build to `macOS-13` (#2101) The macOS-12 environment is deprecated. --- azure-pipelines.yml | 2 +- examples/azure-pipelines-minimal.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index fa720d84a..6541244ca 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -19,7 +19,7 @@ jobs: python ./bin/run_tests.py - job: macos_38 - pool: {vmImage: 'macOS-12'} + pool: {vmImage: 'macOS-13'} steps: - task: UsePythonVersion@0 inputs: diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index dfe3ec1ef..11476c562 100644 --- a/examples/azure-pipelines-minimal.yml +++ b/examples/azure-pipelines-minimal.yml @@ -14,7 +14,7 @@ jobs: inputs: {pathtoPublish: 'wheelhouse'} - job: macos - pool: {vmImage: 'macOS-12'} + pool: {vmImage: 'macOS-13'} steps: - task: UsePythonVersion@0 - bash: | From 59d575f7304c8e2f2e44c8577e71b8eeec8d99e7 Mon Sep 17 00:00:00 2001 From: mayeut Date: Mon, 27 Jan 2025 08:53:08 +0100 Subject: [PATCH 8/8] fix(test): implement retry for test_container_removed The test is flaky on some platforms. Implement retry rather than just skip. --- unit_test/oci_container_test.py | 39 +++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/unit_test/oci_container_test.py b/unit_test/oci_container_test.py index 11d991d11..7c8e8456e 100644 --- a/unit_test/oci_container_test.py +++ b/unit_test/oci_container_test.py @@ -8,6 +8,7 @@ import subprocess import sys import textwrap +import time from contextlib import nullcontext from pathlib import Path, PurePath, PurePosixPath @@ -138,14 +139,28 @@ def test_cwd(container_engine): assert container.call(["pwd"], capture_output=True, cwd="/opt") == "/opt\n" -@pytest.mark.skipif( - pm == "s390x" and detect_ci_provider() == CIProvider.travis_ci, - reason="test is flaky on this platform, see https://github.com/pypa/cibuildwheel/pull/1961#issuecomment-2334678966", -) def test_container_removed(container_engine): + # test is flaky on some platforms, implement retry for 5 second + timeout = 50 # * 100 ms = 5s with OCIContainer( engine=container_engine, image=DEFAULT_IMAGE, oci_platform=DEFAULT_OCI_PLATFORM ) as container: + assert container.name is not None + container_name = container.name + for _ in range(timeout): + docker_containers_listing = subprocess.run( + f"{container.engine.name} container ls", + shell=True, + check=True, + stdout=subprocess.PIPE, + text=True, + ).stdout + if container_name in docker_containers_listing: + break + time.sleep(0.1) + assert container_name in docker_containers_listing + + for _ in range(timeout): docker_containers_listing = subprocess.run( f"{container.engine.name} container ls", shell=True, @@ -153,18 +168,10 @@ def test_container_removed(container_engine): stdout=subprocess.PIPE, text=True, ).stdout - assert container.name is not None - assert container.name in docker_containers_listing - old_container_name = container.name - - docker_containers_listing = subprocess.run( - f"{container.engine.name} container ls", - shell=True, - check=True, - stdout=subprocess.PIPE, - text=True, - ).stdout - assert old_container_name not in docker_containers_listing + if container_name not in docker_containers_listing: + break + time.sleep(0.1) + assert container_name not in docker_containers_listing def test_large_environment(container_engine):