mirror of
https://github.com/mudler/LocalAI.git
synced 2026-06-26 09:26:55 -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>
58 lines
1.5 KiB
Bash
Executable File
58 lines
1.5 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 dylib variant (Metal or Accelerate)
|
|
LIBRARY="$CURDIR/liblocateanythingcpp-fallback.dylib"
|
|
export DYLD_LIBRARY_PATH="$CURDIR"/lib:$DYLD_LIBRARY_PATH
|
|
else
|
|
LIBRARY="$CURDIR/liblocateanythingcpp-fallback.so"
|
|
|
|
if grep -q -e "\savx\s" /proc/cpuinfo ; then
|
|
echo "CPU: AVX found OK"
|
|
if [ -e "$CURDIR"/liblocateanythingcpp-avx.so ]; then
|
|
LIBRARY="$CURDIR/liblocateanythingcpp-avx.so"
|
|
fi
|
|
fi
|
|
|
|
if grep -q -e "\savx2\s" /proc/cpuinfo ; then
|
|
echo "CPU: AVX2 found OK"
|
|
if [ -e "$CURDIR"/liblocateanythingcpp-avx2.so ]; then
|
|
LIBRARY="$CURDIR/liblocateanythingcpp-avx2.so"
|
|
fi
|
|
fi
|
|
|
|
# Check avx 512
|
|
if grep -q -e "\savx512f\s" /proc/cpuinfo ; then
|
|
echo "CPU: AVX512F found OK"
|
|
if [ -e "$CURDIR"/liblocateanythingcpp-avx512.so ]; then
|
|
LIBRARY="$CURDIR/liblocateanythingcpp-avx512.so"
|
|
fi
|
|
fi
|
|
|
|
export LD_LIBRARY_PATH="$CURDIR"/lib:$LD_LIBRARY_PATH
|
|
fi
|
|
|
|
export LOCATEANYTHING_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"/locate-anything-cpp "$@"
|
|
fi
|
|
|
|
echo "Using library: $LIBRARY"
|
|
exec "$CURDIR"/locate-anything-cpp "$@"
|