diff --git a/.github/workflows/build-cysignals.yml b/.github/workflows/build-cysignals.yml index 2ff7a5ab47a..b4277d9aede 100644 --- a/.github/workflows/build-cysignals.yml +++ b/.github/workflows/build-cysignals.yml @@ -53,7 +53,11 @@ jobs: fail-fast: false matrix: version: ${{ fromJSON(needs.setup.outputs.versions) }} - python: ["cp312", "cp313", "cp314", "cp314t"] + # 1.13.0 raised requires-python to >=3.13 (was >=3.12 in 1.12.6), so + # cp312 is no longer a valid build target: cibuildwheel selects zero + # build identifiers for it and exits with "No build identifiers + # selected". + python: ["cp313", "cp314", "cp314t"] libc: [manylinux, musllinux] env: @@ -67,6 +71,15 @@ jobs: ref: ${{ env.CYSIGNALS_VERSION }} persist-credentials: false + - name: Checkout python-wheels + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + path: python-wheels + persist-credentials: false + + - name: Patch cysignals source + run: git apply python-wheels/patches/cysignals/${{ env.CYSIGNALS_VERSION }}/00*.patch + - name: Build wheels uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 with: @@ -87,7 +100,10 @@ jobs: for whl in sys.argv[1:]: names = zipfile.ZipFile(whl).namelist() assert any(n.startswith("cysignals/") and n.endswith(".so") for n in names), whl - assert any(n.endswith(".dist-info/LICENSE") for n in names), whl + # meson-python 0.22 implements PEP 639: license files land under + # /licenses/, not directly in / as older + # (setuptools-era) tooling placed them. + assert any(n.endswith(".dist-info/licenses/LICENSE") for n in names), whl print(whl, "ok") EOF diff --git a/docs/packages/cysignals.yaml b/docs/packages/cysignals.yaml index a2a7e4d0667..9a52c3c4d57 100644 --- a/docs/packages/cysignals.yaml +++ b/docs/packages/cysignals.yaml @@ -29,3 +29,4 @@ versions: - filename: cysignals-1.12.6-cp314-cp314t-musllinux_1_2_riscv64.whl sha256: a56bb87556d4d68c742a5fb7cf9ade409267917c39c139807008cf870f37c3b3 requires-python: '>=3.12' +- version: 1.13.0 diff --git a/patches/cysignals/1.13.0/0001-Drop-cpython-freethreading-from-the-cibuildwheel-ena.patch b/patches/cysignals/1.13.0/0001-Drop-cpython-freethreading-from-the-cibuildwheel-ena.patch new file mode 100644 index 00000000000..1725f30ac3b --- /dev/null +++ b/patches/cysignals/1.13.0/0001-Drop-cpython-freethreading-from-the-cibuildwheel-ena.patch @@ -0,0 +1,38 @@ +From: Ludovic Henry +Subject: [PATCH] Drop cpython-freethreading from the cibuildwheel enable + groups + +cibuildwheel 3.0 removed the cpython-freethreading enable group - +free-threaded builds are selected by the build identifier itself now, +not an opt-in group - and its config parser rejects the value outright, +before any container starts and for every interpreter in the matrix: + + Failed to parse enable group. Unknown enable group: + cpython-freethreading. Valid group names are: cpython-prerelease, + graalpy, pypy, pypy-eol, pyodide-eol, pyodide-prerelease + +Upstream's own dev dependency group pins cibuildwheel>=2.23.3, where +the group is still valid and is what enables its cp313t wheels, so +dropping it upstream would lose those wheels there. Setting +CIBW_ENABLE="" in the workflow env does not help: cibuildwheel merges +the env var's groups into pyproject.toml's list rather than replacing +it, so an empty override leaves cpython-freethreading in place. + +Upstream-Status: Inappropriate [needed only for cibuildwheel 3.0+, which python-wheels pins repo-wide; upstream pins cibuildwheel>=2.23.3] +--- + pyproject.toml | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 1111111..2222222 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -52,6 +52,5 @@ dev = [ + ] + + [tool.cibuildwheel] +-enable = ["cpython-freethreading"] + skip = ["*-win32", "cp313t-*"] + test-groups = ["dev"] +-- +2.43.0