Skip to content

ci(darwin): build the ds4 backend for darwin/arm64 (metal)#10303

Merged
mudler merged 1 commit into
masterfrom
fix/darwin-builds-ds4-sherpa-speaker
Jun 13, 2026
Merged

ci(darwin): build the ds4 backend for darwin/arm64 (metal)#10303
mudler merged 1 commit into
masterfrom
fix/darwin-builds-ds4-sherpa-speaker

Conversation

@localai-bot

@localai-bot localai-bot commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

From the registry sweep: the gallery has metal-ds4 / metal-ds4-development entries, but no metal-darwin-arm64-ds4 image is ever published, so those entries dangle and ds4 is un-installable on Apple Silicon.

Root cause: ds4 was never listed in the darwin matrix (includeDarwin in .github/backend-matrix.yml), even though the build recipe exists - make backends/ds4-darwin, special-cased in backend_build_darwin.yml.

Changes

  1. Add ds4 to the darwin matrix, mirroring the llama-cpp form (also special-cased, so just lang: go):
      - backend: "ds4"
        tag-suffix: "-metal-darwin-arm64-ds4"
        lang: "go"
  2. Fix inferBackendPathDarwin in scripts/changed-backends.js to map ds4 → backend/cpp/ds4/ (like llama-cpp). ds4 is C++ but its matrix entry carries lang: go, so the generic inference would return backend/go/ds4/ (nonexistent) and ds4s darwin build would only ever run on a release (FORCE_ALL), never incrementally when backend/cpp/ds4/ changes.

How darwin builds trigger (important)

changed-backends.js only selects a backends darwin build when a changed file is under its source prefix, or on a tag/release push (FORCE_ALL=true rebuilds everything). So after this merges, the metal-darwin-arm64-ds4 image publishes at the next release (or when backend/cpp/ds4/ changes). The gallery metal-ds4 entries then resolve.

Related finding (separate, not fixed here)

sherpa-onnx is already in the darwin matrix (added by #10275) but its metal image was never published - because #10275 only added the matrix entry + touched backend/python/speaker-recognition/requirements-mps.txt, so the path filter triggered speaker-recognitions darwin build (its master- image published) but not sherpa-onnx (no backend/go/sherpa-onnx/ change). sherpa-onnx is correctly configured and will build at the next release; no fix needed.

Notes

  • Validated: backend-matrix.yml parses, includeDarwin now lists ds4; changed-backends.js passes a module syntax check.
  • Actual metal compilation only runs on the macOS CI runner.

Assisted-by: claude:claude-opus-4-8 [Claude Code]

The gallery has metal-ds4 / metal-ds4-development entries, and the build
recipe exists (make backends/ds4-darwin, special-cased in
backend_build_darwin.yml), but ds4 was never listed in the darwin matrix,
so no metal-darwin-arm64-ds4 image was ever published and the entries
dangled.

- Add ds4 to the darwin matrix (includeDarwin), mirroring the llama-cpp
  form (the reusable workflow builds it via 'make backends/ds4-darwin').
- Fix inferBackendPathDarwin in scripts/changed-backends.js to map ds4 to
  backend/cpp/ds4/ (like llama-cpp): ds4 is C++ but the matrix entry carries
  lang=go, so without this its darwin build would only ever run on a release
  (FORCE_ALL), never incrementally when backend/cpp/ds4 changes.

sherpa-onnx and speaker-recognition are already in the darwin matrix on
master and are not changed here.

Assisted-by: claude:claude-opus-4-8 [Claude Code]
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
@mudler
mudler force-pushed the fix/darwin-builds-ds4-sherpa-speaker branch from c2bf5d7 to a661e8b Compare June 13, 2026 08:49
@mudler
mudler merged commit d7162b9 into master Jun 13, 2026
59 checks passed
@mudler
mudler deleted the fix/darwin-builds-ds4-sherpa-speaker branch June 13, 2026 09:02
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.

2 participants