From 14b29ebf4e9d6359e1709c0ba0d6d9c12690ede9 Mon Sep 17 00:00:00 2001 From: "LocalAI [bot]" <139863280+localai-bot@users.noreply.github.com> Date: Sat, 27 Jun 2026 02:05:40 +0200 Subject: [PATCH] fix(backends): derive darwin RUN_BINARY from the exec line only (#10541) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit golang-darwin.sh's packaging check derived the launch binary by grepping every $CURDIR/... reference in run.sh and taking the last one. Backends that pick a runtime CPU variant assign it via unquoted `LIBRARY=$CURDIR/libgo-avx512.so` lines, so the heuristic returned `libgo-avx512.so` — a variant Darwin never builds (arm64 builds only fallback) — and the check then failed with "package/libgo-avx512.so not found ... refusing to package (#10267)", breaking the darwin builds for whisper, sam3-cpp, vibevoice-cpp and friends. Scan only the `exec` line(s) (the actual launch contract) and tolerate a quoted `exec "$CURDIR"/`. parakeet-cpp's parakeet-cpp-grpc and the quoted-only backends (sherpa/piper/opus) resolve correctly; no Linux change. Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Ettore Di Giacinto Co-authored-by: Ettore Di Giacinto --- scripts/build/golang-darwin.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/build/golang-darwin.sh b/scripts/build/golang-darwin.sh index fddd4bc4f..d2e72eac9 100644 --- a/scripts/build/golang-darwin.sh +++ b/scripts/build/golang-darwin.sh @@ -17,9 +17,15 @@ rm -rf "${BACKEND_DIR}"/build-* # run.sh's final `exec $CURDIR/` is the contract for what gets launched; # the binary is not always named after the backend (e.g. parakeet-cpp launches # parakeet-cpp-grpc), so derive it from run.sh and fall back to ${BACKEND}. +# +# Only scan the `exec` line(s): many run.sh select a runtime CPU variant via +# unquoted `LIBRARY=$CURDIR/libgo-avx512.so` lines, and a whole-file grep +# would pick the last of those (avx512, which Darwin never builds) instead of +# the binary — failing the check below for whisper/sam3-cpp/vibevoice-cpp/... +# Also tolerate the exec being quoted (`exec "$CURDIR"/`). RUN_BINARY="" if [ -f "${BACKEND_DIR}/run.sh" ]; then - RUN_BINARY=$(grep -oE '\$CURDIR/[A-Za-z0-9._-]+' "${BACKEND_DIR}/run.sh" | grep -v 'ld\.so' | tail -1 | sed 's|\$CURDIR/||') + RUN_BINARY=$(grep -E '^[[:space:]]*exec[[:space:]]' "${BACKEND_DIR}/run.sh" | grep -oE '"?\$CURDIR"?/[A-Za-z0-9._-]+' | grep -v 'ld\.so' | tail -1 | sed -E 's|"?\$CURDIR"?/||') fi RUN_BINARY="${RUN_BINARY:-${BACKEND}}"