mirror of
https://github.com/mudler/LocalAI.git
synced 2026-07-08 23:37:43 -04:00
fix(backends): whisper darwin run.sh loads whichever fallback lib exists
The macOS branch hardcoded WHISPER_LIBRARY=$CURDIR/libgowhisper-fallback.dylib,
but the cmake build emits a Mach-O named libgowhisper-fallback.so on darwin, so
the Go loader panicked at runtime ("dlopen ...dylib: no such file") and the
backend exited ("grpc service not ready") — breaking e.g. the silero-vad-ggml
VAD on darwin. Pick whichever of .dylib/.so is present so it is robust to the
build's naming either way.
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
63 lines
1.6 KiB
Bash
Executable File
63 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -ex
|
|
|
|
# Get the absolute current dir where the script is located
|
|
CURDIR=$(dirname "$(realpath "$0")")
|
|
|
|
cd /
|
|
|
|
echo "CPU info:"
|
|
if [ "$(uname)" != "Darwin" ]; then
|
|
grep -e "model\sname" /proc/cpuinfo | head -1
|
|
grep -e "flags" /proc/cpuinfo | head -1
|
|
fi
|
|
|
|
if [ "$(uname)" = "Darwin" ]; then
|
|
# macOS: single fallback variant (Metal/Accelerate). The cmake build emits a
|
|
# Mach-O named .so, but tolerate .dylib too — pick whichever exists so the Go
|
|
# loader doesn't panic on a hardcoded name that isn't on disk.
|
|
if [ -e "$CURDIR/libgowhisper-fallback.dylib" ]; then
|
|
LIBRARY="$CURDIR/libgowhisper-fallback.dylib"
|
|
else
|
|
LIBRARY="$CURDIR/libgowhisper-fallback.so"
|
|
fi
|
|
export DYLD_LIBRARY_PATH="$CURDIR"/lib:$DYLD_LIBRARY_PATH
|
|
else
|
|
LIBRARY="$CURDIR/libgowhisper-fallback.so"
|
|
|
|
if grep -q -e "\savx\s" /proc/cpuinfo ; then
|
|
echo "CPU: AVX found OK"
|
|
if [ -e "$CURDIR"/libgowhisper-avx.so ]; then
|
|
LIBRARY="$CURDIR/libgowhisper-avx.so"
|
|
fi
|
|
fi
|
|
|
|
if grep -q -e "\savx2\s" /proc/cpuinfo ; then
|
|
echo "CPU: AVX2 found OK"
|
|
if [ -e "$CURDIR"/libgowhisper-avx2.so ]; then
|
|
LIBRARY="$CURDIR/libgowhisper-avx2.so"
|
|
fi
|
|
fi
|
|
|
|
# Check avx 512
|
|
if grep -q -e "\savx512f\s" /proc/cpuinfo ; then
|
|
echo "CPU: AVX512F found OK"
|
|
if [ -e "$CURDIR"/libgowhisper-avx512.so ]; then
|
|
LIBRARY="$CURDIR/libgowhisper-avx512.so"
|
|
fi
|
|
fi
|
|
|
|
export LD_LIBRARY_PATH="$CURDIR"/lib:$LD_LIBRARY_PATH
|
|
fi
|
|
|
|
export WHISPER_LIBRARY=$LIBRARY
|
|
|
|
# If there is a lib/ld.so, use it
|
|
if [ -f "$CURDIR"/lib/ld.so ]; then
|
|
echo "Using lib/ld.so"
|
|
echo "Using library: $LIBRARY"
|
|
exec "$CURDIR"/lib/ld.so "$CURDIR"/whisper "$@"
|
|
fi
|
|
|
|
echo "Using library: $LIBRARY"
|
|
exec "$CURDIR"/whisper "$@" |