mirror of
https://github.com/mudler/LocalAI.git
synced 2026-06-23 16:19:07 -04:00
The Makefile llama.cpp target git-applies the paged series at checkout; prepare.sh then re-applied with patch, fuzzily duplicating hunks (redefinition errors -> the grpc-server CUDA build failed under LLAMA_PAGED=on). Guard prepare.sh's apply with a sentinel (skip when llama.cpp/src/paged-kv-manager.cpp already exists) + -N/-r flags, so it only does work against an unpatched checkout. Found by the GPU/full-build verification (PAGED_GPU_VERIFY.md). Assisted-by: Claude:opus-4.8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
50 lines
1.8 KiB
Bash
50 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
## Patches
|
|
|
|
## Apply patches: the base `patches/` series, then the gated `patches/paged/`
|
|
## series (default on; LLAMA_PAGED=off skips it). Only *.patch files are applied
|
|
## (docs/dirs like patches/paged/ and *.md are skipped). The Makefile `llama.cpp`
|
|
## target already `git apply`s these at checkout, so each apply is guarded by a
|
|
## sentinel and skipped when already present - re-applying git-format patches with
|
|
## `patch` fuzzily duplicates hunks (redefinition errors). This block only does
|
|
## real work if prepare.sh is run against an unpatched checkout.
|
|
if [ -d "patches" ]; then
|
|
for patch in patches/*.patch; do
|
|
[ -e "$patch" ] || continue
|
|
echo "Applying patch $patch"
|
|
patch -d llama.cpp/ -p1 -N -r - < "$patch" || true
|
|
done
|
|
if [ "${LLAMA_PAGED:-on}" != "off" ] && [ -d "patches/paged" ]; then
|
|
if [ -f llama.cpp/src/paged-kv-manager.cpp ]; then
|
|
echo "paged-attention patch series already applied (sentinel present) - skipping re-apply"
|
|
else
|
|
for patch in patches/paged/*.patch; do
|
|
[ -e "$patch" ] || continue
|
|
echo "Applying paged patch $patch"
|
|
patch -d llama.cpp/ -p1 -N -r - < "$patch" || true
|
|
done
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
set -e
|
|
|
|
for file in $(ls llama.cpp/tools/server/); do
|
|
cp -rfv llama.cpp/tools/server/$file llama.cpp/tools/grpc-server/
|
|
done
|
|
|
|
cp -r CMakeLists.txt llama.cpp/tools/grpc-server/
|
|
cp -r grpc-server.cpp llama.cpp/tools/grpc-server/
|
|
cp -rfv llama.cpp/vendor/nlohmann/json.hpp llama.cpp/tools/grpc-server/
|
|
cp -rfv llama.cpp/vendor/cpp-httplib/httplib.h llama.cpp/tools/grpc-server/
|
|
|
|
set +e
|
|
if grep -q "grpc-server" llama.cpp/tools/CMakeLists.txt; then
|
|
echo "grpc-server already added"
|
|
else
|
|
echo "add_subdirectory(grpc-server)" >> llama.cpp/tools/CMakeLists.txt
|
|
fi
|
|
set -e
|
|
|