Skip to content

praat-parselmouth: add build-praat-parselmouth.yml for riscv64 wheels - #1746

Merged
luhenry merged 4 commits into
mainfrom
praat-parselmouth
Sep 12, 2026
Merged

luhenry merged 4 commits into
mainfrom
praat-parselmouth

Conversation

@luhenry

@luhenry luhenry commented Sep 11, 2026

Copy link
Copy Markdown
Member

Compiles Praat's vendored C/C++ phonetics core (clapack, gsl, glpk, flac, portaudio, espeak, vorbis, opusfile, all built from bundled source) and its pybind11 bindings. Upstream publishes no riscv64 wheel.

Mirrors the wheels job of upstream's wheels.yml.

Differs from upstream

  • Single glibc job, no musllinux - no musllinux riscv64 numpy wheel on the registry yet.
  • cmake<4 pinned in pyproject.toml at build time - same fix upstream applies in its own CI, needed because the vendored pybind11/fmt CMakeLists.txt predate cmake 4's dropped compatibility floor.

Matrix: cp312/cp313/cp314 - cp314t dropped, matching upstream's own unconditional CIBW_SKIP: cp314t-* (the vendored pybind11 2.6.2 predates free-threading support).

Testing

  • Runs upstream's tests/ suite (from ci.yml, not wheels.yml, which only checks wheels with twine) against the built wheel.

License: OK

Built on cp312/cp313/cp314.

luhenry added a commit that referenced this pull request Sep 11, 2026
…BINARY

PyPI ships no riscv64 wheel for any cmake release below 4.0 (only our
registry does, up to 3.31.6); with the cmake<4 pin and only
PIP_EXTRA_INDEX_URL set, pip resolved the numerically highest match
(PyPI's 3.31.10, wheel-less) and fell back to a source build that
needs OpenSSL dev headers the manylinux_riscv64 image doesn't carry.
Scoping PIP_ONLY_BINARY to numpy,cmake makes pip prefer the highest
version that actually has a wheel instead (gotcha 84).
test_xs recomputes each Sampled's x grid in Python and compares it to
the C++-computed values with strict == equality; on riscv64 the two
independently-computed float64 expressions differ in their last bit
or two, failing the assert even though the values agree to machine
precision. Wire up patch application (git apply, matching mmcif's
pattern) and add patches/praat-parselmouth/** to the pull_request
trigger.
…ombined-job upload name

The build_wheels job uploads one artifact per whole job (cp312/cp313/
cp314 combined into a single cibuildwheel invocation), not one per
interpreter, so its name has no per-interpreter segment. The publish
job's artifact-pattern still had a -*- wildcard expecting one, which
matched nothing and failed with "No wheels found in dist" even
though build_wheels had already succeeded.
@luhenry
luhenry merged commit d4dd25e into main Sep 12, 2026
6 checks passed
@luhenry
luhenry deleted the praat-parselmouth branch September 12, 2026 19:24
@luhenry luhenry linked an issue Sep 13, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

praat-parselmouth riscv64 support

1 participant