mirror of
https://github.com/mudler/LocalAI.git
synced 2026-07-08 15:28:23 -04:00
fix(backends): quote $CURDIR in run.sh so backends work in paths with spaces The backend launcher scripts derive their own directory with CURDIR=$(dirname "$(realpath $0)") and then referenced it unquoted as $CURDIR (e.g. [ -f $CURDIR/lib/ld.so ], export LD_LIBRARY_PATH=$CURDIR/lib:..., exec $CURDIR/<binary> "$@"). When a backend is installed under a path that contains a space - notably macOS's ~/Library/Application Support/... - bash word-splits the unquoted $CURDIR, so the test builtin fails with "binary operator expected" and exec tries to run ".../Library/Application", yielding "No such file or directory". The backend never starts, surfacing as a gRPC "service not ready" error and an HTTP 500. Quote $CURDIR (and the realpath "$0") in every affected run.sh; no logic changes. Co-authored-by: Ettore Di Giacinto <mudler@localai.io> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
35 lines
1.1 KiB
Bash
Executable File
35 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -ex
|
|
|
|
CURDIR=$(dirname "$(realpath "$0")")
|
|
|
|
# LocalVQE's runtime CPU-variant loader (ggml_backend_load_all) searches
|
|
# get_executable_path() and current_path() — the second one is what saves us
|
|
# when /proc/self/exe resolves to lib/ld.so under the bundled-loader path.
|
|
# So we cd into "$CURDIR" (where all the libggml-cpu-*.so files live) before
|
|
# exec'ing the binary.
|
|
cd "$CURDIR"
|
|
|
|
if [ "$(uname)" = "Darwin" ]; then
|
|
# macOS: LocalVQE is built as a SHARED library, so dyld needs the .dylib +
|
|
# DYLD_LIBRARY_PATH. Prefer .dylib and fall back to .so just in case.
|
|
export DYLD_LIBRARY_PATH="$CURDIR":"$CURDIR"/lib:$DYLD_LIBRARY_PATH
|
|
LOCALVQE_LIBRARY="$CURDIR"/liblocalvqe.dylib
|
|
if [ ! -e "$LOCALVQE_LIBRARY" ]; then
|
|
LOCALVQE_LIBRARY="$CURDIR"/liblocalvqe.so
|
|
fi
|
|
export LOCALVQE_LIBRARY
|
|
else
|
|
export LD_LIBRARY_PATH="$CURDIR":"$CURDIR"/lib:$LD_LIBRARY_PATH
|
|
export LOCALVQE_LIBRARY="$CURDIR"/liblocalvqe.so
|
|
fi
|
|
|
|
if [ -f "$CURDIR"/lib/ld.so ]; then
|
|
echo "Using lib/ld.so"
|
|
echo "Using library: $LOCALVQE_LIBRARY"
|
|
exec "$CURDIR"/lib/ld.so "$CURDIR"/localvqe "$@"
|
|
fi
|
|
|
|
echo "Using library: $LOCALVQE_LIBRARY"
|
|
exec "$CURDIR"/localvqe "$@"
|