mirror of
https://github.com/mudler/LocalAI.git
synced 2026-06-19 06:09:07 -04:00
* ⬆️ Update antirez/ds4 Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(ds4): add Homebrew include/lib prefix for Darwin grpc-proto build The darwin/metal ds4 backend job runs for the first time on this bump (it was skipped on prior ds4 PRs) and fails compiling backend.pb.cc with 'google/protobuf/runtime_version.h' file not found. hw_grpc_proto links neither protobuf::libprotobuf nor gRPC::grpc++, so the generated proto sources rely on default system include paths. That works on Linux (/usr/include) but not on macOS, where Homebrew installs under /opt/homebrew. Add the Homebrew prefix to include/link dirs on Darwin, mirroring the llama-cpp backend that already builds on Darwin CI. Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Assisted-by: Claude:claude-opus-4-8 [Claude Code] * fix(ds4): install nlohmann-json on Darwin CI for ds4 backend After the protobuf include-path fix the ds4 darwin build advances to compiling dsml_renderer.cpp, which includes <nlohmann/json.hpp> and #errors when absent. On Linux the header comes from apt nlohmann-json3-dev in the build image; the macOS runner had no equivalent. Add the header-only nlohmann-json formula to the shared Darwin backend brew install/link list and Homebrew cache, alongside the existing deps. Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Assisted-by: Claude:claude-opus-4-8 [Claude Code] * fix(ds4): build proper OCI image tar for Darwin backend The darwin packaging referenced scripts/build/oci-pack.sh, which was never added to the tree, so it fell back to a plain 'tar' that omits manifest.json. 'local-ai backends install' then rejects the tarball with 'file manifest.json not found in tar'. Use './local-ai util create-oci-image' (already built by the 'build' prerequisite of the backends/ds4-darwin target), mirroring llama-cpp-darwin.sh, to emit a real OCI image the installer accepts. Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Assisted-by: Claude:claude-opus-4-8 [Claude Code] --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Co-authored-by: mudler <2420543+mudler@users.noreply.github.com> Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
58 lines
1.9 KiB
Bash
Executable File
58 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Darwin/Metal build for the ds4 backend. Mirrors llama-cpp-darwin.sh:
|
|
# native make, otool -L for dylib bundling, then assemble an OCI tar that
|
|
# `local-ai backends install` can consume.
|
|
set -ex
|
|
|
|
IMAGE_NAME="${IMAGE_NAME:-localai/ds4-darwin}"
|
|
|
|
pushd backend/cpp/ds4
|
|
make NATIVE=false grpc-server package
|
|
popd
|
|
|
|
mkdir -p build/darwin
|
|
mkdir -p build/darwin/lib
|
|
mkdir -p backend-images
|
|
|
|
cp -rf backend/cpp/ds4/grpc-server build/darwin/
|
|
cp -rf backend/cpp/ds4/ds4-worker build/darwin/
|
|
cp -rf backend/cpp/ds4/run.sh build/darwin/
|
|
|
|
# Apple Silicon: pick up Homebrew-installed protobuf utf8_validity if present.
|
|
if [[ "$(uname -s)" == "Darwin" && "$(uname -m)" == "arm64" ]]; then
|
|
ADDITIONAL_LIBS=${ADDITIONAL_LIBS:-$(ls /opt/homebrew/Cellar/protobuf/**/lib/libutf8_validity*.dylib 2>/dev/null)}
|
|
else
|
|
ADDITIONAL_LIBS=${ADDITIONAL_LIBS:-""}
|
|
fi
|
|
for file in $ADDITIONAL_LIBS; do
|
|
cp -rfv "$file" build/darwin/lib
|
|
done
|
|
|
|
# Walk dylibs via otool -L and bundle anything that isn't a system framework.
|
|
for file in build/darwin/grpc-server build/darwin/ds4-worker; do
|
|
LIBS="$(otool -L "$file" | awk 'NR > 1 { system("echo " $1) } ' | xargs echo)"
|
|
for lib in $LIBS; do
|
|
if [[ "$lib" == *.dylib ]] && [[ -e "$lib" ]]; then
|
|
cp -rvf "$lib" build/darwin/lib
|
|
fi
|
|
done
|
|
done
|
|
|
|
echo "Bundled libraries:"
|
|
ls -la build/darwin/lib
|
|
|
|
# Build an OCI image tar (with manifest.json) that `local-ai backends install`
|
|
# can consume - mirrors llama-cpp-darwin.sh. The previously referenced
|
|
# scripts/build/oci-pack.sh helper was never added to the tree, so the
|
|
# plain-tar fallback produced a manifest-less tarball the installer rejects
|
|
# with "file manifest.json not found in tar".
|
|
PLATFORMARCH="${PLATFORMARCH:-darwin/arm64}"
|
|
|
|
./local-ai util create-oci-image \
|
|
build/darwin/. \
|
|
--output ./backend-images/ds4.tar \
|
|
--image-name "$IMAGE_NAME" \
|
|
--platform "$PLATFORMARCH"
|
|
|
|
rm -rf build/darwin
|