Skip to content

ci: drop musl (Alpine) support, the build-piper-musl job and both musl assets (#26) - #27

Merged
s2x merged 5 commits into
masterfrom
chore/issue-26-drop-musl-alpine-support-there-is-no-ups
Oct 3, 2026
Merged

s2x merged 5 commits into
masterfrom
chore/issue-26-drop-musl-alpine-support-there-is-no-ups

Conversation

@s2x

@s2x s2x commented Oct 3, 2026

Copy link
Copy Markdown
Member

What changed

Removes musl (Alpine) support entirely: the build-piper-musl job in ci.yml and
release.yml (with its entries in the ci-ok and publish needs: lists), the two musl
release assets, the alpine container prose in docs/release-workflow.md, the README
instructions to install ONNX Runtime from the Alpine package, and the musl job in AGENTS.md.
The README now states the supported platform (Linux x86_64 with glibc) and CHANGELOG.md gets
a Removed entry with the reasons and what an Alpine user should do instead.

Why: libpiper links ONNX Runtime and Microsoft publishes no musl build of it, so there is
nothing on Alpine to link libpiper against except a package from Alpine's own repository. The
musl archives we shipped never worked anyway: libonnxruntime-linux-musl-x86_64.tar.gz up to
v0.2.0 holds a glibc library (GLIBC_2.2.5 to GLIBC_2.27), which the musl loader cannot
resolve.

Carried over from #22, which solved most of #21 with the rejected keep-musl approach: the
piper1-gpl submodule bump v1.4.1 -> v1.8.0 and the espeak-ng-data -> share/espeak-ng-data
install path fix (the test-integration failure on Dependabot PR #3). The Alpine-package part
of #22 is not carried over.

Licensing is untouched: MIT for the PHP code, GPL-3.0 for libpiper and the espeak-ng data.

Closes #26

How it was tested

  • bin/lint.sh (composer validate/audit, php-cs-fixer, PHPStan, Rector, shellcheck) and
    vendor/bin/phpunit --testsuite unit (14 tests) in the worktree.
  • The FFI cdef in src/PiperTTS.php was checked against the new
    piper1-gpl/libpiper/include/piper.h: piper_audio_chunk and piper_synthesize_options
    keep their field order and types, piper_create is unchanged, and the new functions
    (piper_create_with_options, piper_version) are additive, so the public PHP API does not
    change.
  • End to end on glibc on a Linux x86_64 host (Ubuntu, cmake 4.2.3, PHP 8.5.4): make build-libs
    (libpiper v1.8.0 + ONNX Runtime 1.22.0, libs/espeak-ng-data from the new share/ path),
    make test-model, unit suite 14/14 and vendor/bin/phpunit --group integration 10/10.
  • Both workflow files parse as YAML and every name in every needs: exists as a job;
    ci-ok lists every other job in ci.yml. No test reads .github/workflows/, so no test
    asserted the old job list.

Checklist

  • Tests added or updated, and all checks pass
  • CHANGELOG.md updated under [Unreleased]
  • Documentation updated
  • Everything is written in English
  • The PR title is a Conventional Commit (feat: ..., fix: ...)

s2x added 5 commits October 3, 2026 21:23
Microsoft publishes no musl build of ONNX Runtime, which libpiper links, so
there is nothing on Alpine to link libpiper against except a package from
Alpine's own repository. The musl archives we did ship never worked: the
libonnxruntime-linux-musl-x86_64.tar.gz published up to v0.2.0 holds a glibc
library (libonnxruntime.so.1.22.0, versioned references to GLIBC_2.2 up to
GLIBC_2.27), which the musl loader cannot resolve.

Removed: the build-piper-musl job in ci.yml and release.yml with its needs
entries, both musl release assets, the alpine container prose in
docs/release-workflow.md, and the README instructions to install ONNX Runtime
from the Alpine package. The README states the supported platform (Linux x86_64
with glibc) and the CHANGELOG gets a Removed entry with the reasons and what an
Alpine user should do instead.

Carried over from #22 (not the approach): the piper1-gpl bump v1.4.1 -> v1.8.0
and the espeak-ng data path change to share/espeak-ng-data.
@s2x
s2x merged commit a67c0a0 into master Oct 3, 2026
10 checks passed
@s2x
s2x deleted the chore/issue-26-drop-musl-alpine-support-there-is-no-ups branch October 3, 2026 19:44
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.

Drop musl (Alpine) support: there is no upstream musl ONNX Runtime to link against

1 participant