Skip to content

Commit 52d944b

Browse files
selectolax: Add version 1.0.0 (#2704)
* selectolax: Add version 1.0.0 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> * selectolax: carry forward riscv64 patches to 1.0.0 Nightly version bump omitted the patches/selectolax/<version> directory for 1.0.0, so the build's unconditional `git apply .../*.patch` step failed with "No such file or directory" before any build/test ran. Copied forward the same patch set from 0.4.13 (unchanged since then). * selectolax: Drop musllinux for 1.0.0 All 4 musllinux legs (cp312/313/314/314t) segfault (SIGSEGV, exit 139) in tests/test_encoding.py::test_http_equiv_content_type_is_honored, a plain charset-detection test with no recursion; the identical manylinux legs all pass. The crash site varies between a direct hit inside the test call (cp314t) and a delayed hit in unrelated pytest teardown on the other three interpreters, which points to heap corruption in the native extension rather than a stack-size/recursion problem. 0.4.11, 0.4.12 and 0.4.13 all published musllinux riscv64 wheels for this package successfully, so this is a 1.0.0-specific regression, not a musl/riscv64 incompatibility in general. 1.0.0 is a large jump from 0.4.13 and most likely carries a lexbor bump; selectolax's own release workflow (make_release.yml) builds musllinux wheels but runs no test suite against them at all, so a musl-only memory bug introduced by such a bump would ship to every musllinux user unnoticed. Upstream carries a long history of fresh memory-corruption bugs introduced by lexbor version bumps (e.g. #211, #217), which is consistent with this. Drop musllinux from the matrix for now, matching the manylinux-only pattern used elsewhere in this repo when a libc is a genuine blocker rather than a missing dependency. Revisit once a newer selectolax release is available. --------- Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> Co-authored-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> Co-authored-by: Ludovic Henry <git@ludovic.dev>
1 parent a43f66a commit 52d944b

3 files changed

Lines changed: 761 additions & 7 deletions

File tree

‎.github/workflows/build-selectolax.yml‎

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ permissions:
3434

3535
env:
3636
MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64
37-
MUSLLINUX_RISCV64_IMAGE: quay.io/pypa/musllinux_1_2_riscv64
3837

3938
jobs:
4039
setup:
@@ -46,15 +45,14 @@ jobs:
4645
build_wheels:
4746
needs: [setup]
4847
if: needs.setup.outputs.versions != '[]'
49-
name: Build selectolax ${{ matrix.version }} ${{ matrix.python }}-${{ matrix.libc }}_riscv64
48+
name: Build selectolax ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64
5049
runs-on: ubuntu-24.04-riscv
5150
timeout-minutes: 90
5251
strategy:
5352
fail-fast: false
5453
matrix:
5554
version: ${{ fromJSON(needs.setup.outputs.versions) }}
5655
python: ["cp312", "cp313", "cp314", "cp314t"]
57-
libc: [manylinux, musllinux]
5856

5957
env:
6058
SELECTOLAX_VERSION: ${{ matrix.version }}
@@ -79,20 +77,26 @@ jobs:
7977
- name: Patch selectolax source
8078
run: git apply python-wheels/patches/selectolax/${{ env.SELECTOLAX_VERSION }}/*.patch
8179

80+
# musllinux is dropped: all 4 interpreters segfault (SIGSEGV, exit 139) in
81+
# tests/test_encoding.py::test_http_equiv_content_type_is_honored, a plain charset-
82+
# detection test with no recursion, while the identical manylinux legs pass. 0.4.11-
83+
# 0.4.13 published musllinux wheels fine, so this is a 1.0.0 regression, most likely
84+
# in the lexbor bump this release carries; upstream's own release workflow never runs
85+
# the test suite against its musllinux wheels, so a musl-only memory bug like this
86+
# would ship there unnoticed. Revisit on a future selectolax release.
8287
- name: Build wheels
8388
uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0
8489
env:
8590
CIBW_ARCHS: riscv64
86-
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.libc }}_riscv64
91+
CIBW_BUILD: ${{ matrix.python }}-manylinux_riscv64
8792
CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }}
88-
CIBW_MUSLLINUX_RISCV64_IMAGE: ${{ env.MUSLLINUX_RISCV64_IMAGE }}
8993
CIBW_TEST_REQUIRES: pytest
9094
CIBW_TEST_SOURCES: tests
9195
CIBW_TEST_COMMAND: python -m pytest tests -v
9296

9397
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
9498
with:
95-
name: selectolax-${{ env.SELECTOLAX_VERSION }}-${{ matrix.python }}-${{ matrix.libc }}_riscv64
99+
name: selectolax-${{ env.SELECTOLAX_VERSION }}-${{ matrix.python }}-manylinux_riscv64
96100
path: wheelhouse/*.whl
97101
if-no-files-found: error
98102

@@ -111,4 +115,4 @@ jobs:
111115
secrets:
112116
app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }}
113117
with:
114-
artifact-pattern: selectolax-${{ matrix.version }}-*riscv64
118+
artifact-pattern: selectolax-${{ matrix.version }}-*-manylinux_riscv64

‎docs/packages/selectolax.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,4 @@ versions:
8686
- filename: selectolax-0.4.13-cp314-cp314t-musllinux_1_2_riscv64.whl
8787
sha256: cc7c46003cb3d0ee02aa750f56436622f6c77f997f7c9dde672af22fb3892ea5
8888
requires-python: <3.15,>=3.9
89+
- version: 1.0.0

0 commit comments

Comments
 (0)