From 19244e6ad6791c164eca2ada90cb2d1d8f278a85 Mon Sep 17 00:00:00 2001 From: mayeut Date: Mon, 10 Feb 2025 07:46:52 +0100 Subject: [PATCH 1/3] feature: add CPython 3.14 --- docker/Dockerfile | 7 +++++++ docker/build_scripts/requirements3.14.txt | 20 ++++++++++++++++++++ noxfile.py | 2 +- tests/run_tests.sh | 16 ++++++++-------- 4 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 docker/build_scripts/requirements3.14.txt diff --git a/docker/Dockerfile b/docker/Dockerfile index bcc08e20..f22cdc7c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -143,6 +143,11 @@ RUN manylinux-entrypoint /build_scripts/build-cpython.sh thomas@python.org https FROM build_cpython AS build_cpython313_nogil RUN manylinux-entrypoint /build_scripts/build-cpython.sh thomas@python.org https://accounts.google.com 3.13.3 nogil +FROM build_cpython AS build_cpython314 +RUN manylinux-entrypoint /build_scripts/build-cpython.sh hugo@python.org https://github.com/login/oauth 3.14.0b1 + +FROM build_cpython AS build_cpython314_nogil +RUN manylinux-entrypoint /build_scripts/build-cpython.sh hugo@python.org https://github.com/login/oauth 3.14.0b1 nogil FROM runtime_base COPY --from=build_tcl_tk /manylinux-rootfs / @@ -157,6 +162,8 @@ RUN --mount=type=bind,target=/build_cpython38,from=build_cpython38 \ --mount=type=bind,target=/build_cpython312,from=build_cpython312 \ --mount=type=bind,target=/build_cpython313,from=build_cpython313 \ --mount=type=bind,target=/build_cpython313_nogil,from=build_cpython313_nogil \ + --mount=type=bind,target=/build_cpython314,from=build_cpython314 \ + --mount=type=bind,target=/build_cpython314_nogil,from=build_cpython314_nogil \ mkdir -p /opt/_internal && \ cp -rf /build_cpython*/opt/_internal/* /opt/_internal/ && \ manylinux-entrypoint /opt/_internal/build_scripts/finalize.sh \ diff --git a/docker/build_scripts/requirements3.14.txt b/docker/build_scripts/requirements3.14.txt new file mode 100644 index 00000000..91d5a869 --- /dev/null +++ b/docker/build_scripts/requirements3.14.txt @@ -0,0 +1,20 @@ +# This file was autogenerated by uv via the following command: +# nox -s update_python_dependencies +build==1.2.2.post1 \ + --hash=sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5 \ + --hash=sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7 + # via -r requirements.in +packaging==25.0 \ + --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \ + --hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f + # via + # -r requirements.in + # build +pip==25.1.1 ; implementation_name != 'graalpy' \ + --hash=sha256:2913a38a2abf4ea6b64ab507bd9e967f3b53dc1ede74b01b0931e1ce548751af \ + --hash=sha256:3de45d411d308d5054c2168185d8da7f9a2cd753dbac8acbfa88a8909ecd9077 + # via -r requirements.in +pyproject-hooks==1.2.0 \ + --hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \ + --hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 + # via build diff --git a/noxfile.py b/noxfile.py index 8885c731..df9b3922 100644 --- a/noxfile.py +++ b/noxfile.py @@ -19,7 +19,7 @@ def update_python_dependencies(session): # regenerate the constraints files env["UV_CUSTOM_COMPILE_COMMAND"] = f"nox -s {session.name}" - for python_minor in range(8, 14): + for python_minor in range(8, 15): python_version = f"3.{python_minor}" session.run( "uv", diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 2708d890..0a6c003f 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -7,18 +7,18 @@ set -exuo pipefail MY_DIR=$(dirname "${BASH_SOURCE[0]}") if [ "${AUDITWHEEL_POLICY:0:10}" == "musllinux_" ]; then - EXPECTED_PYTHON_COUNT=7 - EXPECTED_PYTHON_COUNT_ALL=7 + EXPECTED_PYTHON_COUNT=9 + EXPECTED_PYTHON_COUNT_ALL=9 else if [ "${AUDITWHEEL_ARCH}" == "x86_64" ] || [ "${AUDITWHEEL_ARCH}" == "aarch64" ]; then - EXPECTED_PYTHON_COUNT=9 - EXPECTED_PYTHON_COUNT_ALL=12 + EXPECTED_PYTHON_COUNT=11 + EXPECTED_PYTHON_COUNT_ALL=14 elif [ "${AUDITWHEEL_ARCH}" == "i686" ]; then - EXPECTED_PYTHON_COUNT=9 - EXPECTED_PYTHON_COUNT_ALL=11 + EXPECTED_PYTHON_COUNT=11 + EXPECTED_PYTHON_COUNT_ALL=13 else - EXPECTED_PYTHON_COUNT=7 - EXPECTED_PYTHON_COUNT_ALL=7 + EXPECTED_PYTHON_COUNT=9 + EXPECTED_PYTHON_COUNT_ALL=9 fi fi From fbe42a2efdfc66e39093692fdd17841dba64f9e0 Mon Sep 17 00:00:00 2001 From: mayeut Date: Fri, 9 May 2025 11:24:18 +0200 Subject: [PATCH 2/3] chore: more logs on travis-ci This will help to debug the s390x issue --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index af86005c..752b3e0b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,10 +53,11 @@ install: - docker buildx inspect --bootstrap --builder builder-manylinux 2>&1 | tee /dev/null script: | - BUILD_STATUS=success (while true; do echo "travis_wait"; docker stats --no-stream; free; df -h; sleep 30; done) & WAIT_PID=$! - COMMIT_SHA=${TRAVIS_COMMIT} ./build.sh || BUILD_STATUS=failed + disown + BUILD_STATUS=success + COMMIT_SHA=${TRAVIS_COMMIT} ./build.sh 2>&1 || BUILD_STATUS=failed kill -9 ${WAIT_PID} if [ "${BUILD_STATUS}" != "success" ]; then exit 1 From d963c5c4881419bb0f8539b5f90977b84e53a0d5 Mon Sep 17 00:00:00 2001 From: mayeut Date: Sat, 10 May 2025 08:14:56 +0200 Subject: [PATCH 3/3] fix: build musllinux_1_2_s390x with QEMU --- .github/workflows/build.yml | 5 +++++ .travis.yml | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0218d937..8d394373 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,6 +55,7 @@ jobs: ("aarch64", "ubuntu-24.04-arm", ("manylinux2014", "manylinux_2_28", "manylinux_2_34", "musllinux_1_2")), ("i686", "ubuntu-24.04", ("manylinux2014", "musllinux_1_2")), ("armv7l", "ubuntu-24.04-arm", ("manylinux_2_31", "musllinux_1_2")), + ("s390x", "ubuntu-24.04", ("musllinux_1_2",)), ] expanded = [{"policy": policy, "platform": platform, "runner": runner} for platform, runner, policies in reduced for policy in policies] print(json.dumps(expanded, indent=2)) @@ -82,6 +83,10 @@ jobs: with: fetch-depth: 50 + - name: Set up QEMU + if: matrix.platform == 's390x' + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.travis.yml b/.travis.yml index 752b3e0b..93133e86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,8 +38,6 @@ jobs: env: POLICY="manylinux_2_34" PLATFORM="s390x" - arch: ppc64le env: POLICY="manylinux_2_34" PLATFORM="ppc64le" - - arch: s390x - env: POLICY="musllinux_1_2" PLATFORM="s390x" - arch: ppc64le env: POLICY="musllinux_1_2" PLATFORM="ppc64le"