From ff8350da6e6ed864bd4d3d227fcac4644c41aa41 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 01:01:07 +0200 Subject: [PATCH 01/20] add Linux MUSL, XCFramework and Signed and Notarized Apple builds --- .github/workflows/main.yml | 114 +++++++++++++++++++++++++++++-------- Makefile | 92 ++++++++++++++++++++++++------ src/sqlite-ai.h | 2 +- 3 files changed, 165 insertions(+), 43 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4f63f35..8a3ba8e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,13 +9,14 @@ permissions: jobs: build: runs-on: ${{ matrix.os }} - name: ${{ matrix.name }}${{ matrix.arch && format('-{0}', matrix.arch) || '' }} build${{ matrix.arch != 'arm64-v8a' && matrix.name != 'isim' && matrix.name != 'ios' && ' + test' || ''}} + container: ${{ matrix.container && matrix.container || '' }} + name: ${{ matrix.name }}${{ matrix.arch && format('-{0}', matrix.arch) || '' }} build${{ matrix.arch != 'arm64-v8a' && matrix.name != 'ios-sim' && matrix.name != 'ios' && matrix.name != 'apple-xcframework' && ' + test' || ''}} timeout-minutes: 120 strategy: fail-fast: false matrix: include: - - os: macos-latest + - os: macos-15 name: macos make: LLAMA="-DGGML_NATIVE=OFF -DGGML_METAL=ON -DGGML_ACCELERATE=ON -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple" WHISPER="-DWHISPER_COREML=ON -DWHISPER_COREML_ALLOW_FALLBACK=ON" - os: ubuntu-22.04 @@ -26,14 +27,32 @@ jobs: arch: x86_64 name: linux-gpu make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=ON -DGGML_OPENCL=ON" - - os: LinuxARM64 + - os: ubuntu-22.04-arm arch: arm64 name: linux-cpu make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_CPU_ARM_ARCH=armv8.2-a" - - os: LinuxARM64 + - os: ubuntu-22.04-arm arch: arm64 name: linux-gpu make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=ON -DGGML_OPENCL=ON" + - os: ubuntu-22.04 + arch: x86_64 + name: linux-musl-cpu + container: alpine:latest + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_AVX2=ON" + - os: ubuntu-22.04 + arch: x86_64 + name: linux-musl-gpu + container: alpine:latest + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=ON -DGGML_OPENCL=ON" + - os: ubuntu-22.04-arm + arch: arm64 + name: linux-musl-cpu + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_CPU_ARM_ARCH=armv8.2-a" + - os: ubuntu-22.04-arm + arch: arm64 + name: linux-musl-gpu + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=ON -DGGML_OPENCL=ON" - os: windows-2022 arch: x86_64 name: windows-cpu @@ -42,25 +61,28 @@ jobs: arch: x86_64 name: windows-gpu make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=ON -DGGML_OPENCL=ON" - - os: ubuntu-latest + - os: ubuntu-22.04 arch: x86_64 name: android make: PLATFORM=android ARCH=x86_64 sqlite-amalgamation-zip: https://sqlite.org/2025/sqlite-amalgamation-3490100.zip - - os: ubuntu-latest + - os: ubuntu-22.04 arch: arm64-v8a name: android make: PLATFORM=android ARCH=arm64-v8a LLAMA="-DGGML_CPU_ARM_ARCH=armv8.2-a+dotprod" - - os: macos-latest + - os: macos-15 name: ios make: PLATFORM=ios LLAMA="-DGGML_NATIVE=OFF -DGGML_METAL=ON -DGGML_ACCELERATE=ON -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple" WHISPER="-DWHISPER_COREML=ON -DWHISPER_COREML_ALLOW_FALLBACK=ON" - - os: macos-latest - name: isim - make: PLATFORM=isim LLAMA="-DGGML_NATIVE=OFF -DGGML_METAL=ON -DGGML_ACCELERATE=ON -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple" WHISPER="-DWHISPER_COREML=ON -DWHISPER_COREML_ALLOW_FALLBACK=ON" + - os: macos-15 + name: ios-sim + make: PLATFORM=ios-sim LLAMA="-DGGML_NATIVE=OFF -DGGML_METAL=ON -DGGML_ACCELERATE=ON -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple" WHISPER="-DWHISPER_COREML=ON -DWHISPER_COREML_ALLOW_FALLBACK=ON" + - os: macos-15 + name: apple-xcframework + make: xcframework LLAMA="-DGGML_NATIVE=OFF -DGGML_METAL=ON -DGGML_ACCELERATE=ON -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple" WHISPER="-DWHISPER_COREML=ON -DWHISPER_COREML_ALLOW_FALLBACK=ON" defaults: run: - shell: bash + shell: ${{ matrix.container && 'sh' || 'bash' }} steps: @@ -116,6 +138,25 @@ jobs: ${{ matrix.name == 'windows-gpu' && 'mingw-w64-x86_64-opencl-headers' || '' }} ${{ matrix.name == 'windows-gpu' && 'mingw-w64-x86_64-opencl-icd' || '' }} + - name: macos install dependencies + if: matrix.name == 'macos' + run: brew link sqlite --force + + - name: linux-musl x86_64 install dependencies + if: matrix.name == 'linux-musl' && matrix.arch == 'x86_64' + run: apk update && apk add --no-cache gcc make sqlite musl-dev linux-headers + + - name: linux-musl arm64 setup container + if: matrix.name == 'linux-musl' && matrix.arch == 'arm64' + run: | + docker run -d --name alpine \ + --platform linux/arm64 \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace \ + alpine:latest \ + tail -f /dev/null + docker exec alpine sh -c "apk update && apk add --no-cache gcc make sqlite musl-dev linux-headers" + - name: linux install opencl if: matrix.name == 'linux-gpu' run: sudo apt-get install -y opencl-headers ocl-icd-opencl-dev @@ -190,7 +231,7 @@ jobs: - name: unix build llama.cpp if: matrix.os != 'windows-2022' && steps.cache-llama.outputs.cache-hit != 'true' - run: make build/llama.cpp.stamp ${{ matrix.make && matrix.make || ''}} + run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/llama.cpp.stamp ${{ matrix.make && matrix.make || ''}} - name: windows build whisper.cpp if: matrix.os == 'windows-2022' && steps.cache-whisper.outputs.cache-hit != 'true' @@ -201,7 +242,7 @@ jobs: - name: unix build whisper.cpp if: matrix.os != 'windows-2022' && steps.cache-whisper.outputs.cache-hit != 'true' - run: make build/whisper.cpp.stamp ${{ matrix.make && matrix.make || ''}} + run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/whisper.cpp.stamp ${{ matrix.make && matrix.make || ''}} - name: windows build miniaudio if: matrix.os == 'windows-2022' && steps.cache-miniaudio.outputs.cache-hit != 'true' @@ -210,7 +251,7 @@ jobs: - name: unix build miniaudio if: matrix.os != 'windows-2022' && steps.cache-miniaudio.outputs.cache-hit != 'true' - run: make build/miniaudio.stamp ${{ matrix.make && matrix.make || ''}} + run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/miniaudio.stamp ${{ matrix.make && matrix.make || ''}} - name: windows build sqlite-ai if: matrix.os == 'windows-2022' @@ -221,11 +262,36 @@ jobs: - name: unix build sqlite-ai if: matrix.os != 'windows-2022' - run: make extension ${{ matrix.make && matrix.make || ''}} + run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make extension ${{ matrix.make && matrix.make || ''}} - - name: macos install sqlite3 without SQLITE_OMIT_LOAD_EXTENSION - if: matrix.name == 'macos' - run: brew link sqlite --force + - name: create keychain for codesign + if: matrix.os == 'macos-15' + run: | + echo "${{ secrets.APPLE_CERTIFICATE }}" | base64 --decode > certificate.p12 + security create-keychain -p "${{ secrets.KEYCHAIN_PASSWORD }}" build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p "${{ secrets.KEYCHAIN_PASSWORD }}" build.keychain + security import certificate.p12 -k build.keychain -P "${{ secrets.CERTIFICATE_PASSWORD }}" -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "${{ secrets.KEYCHAIN_PASSWORD }}" build.keychain + + - name: codesign dylib + if: matrix.os == 'macos-15' && matrix.name != 'apple-xcframework' + run: codesign --sign "${{ secrets.APPLE_TEAM_ID }}" --timestamp --options runtime dist/ai.dylib + + - name: codesign and notarize xcframework + if: matrix.name == 'apple-xcframework' + run: | + find dist/ai.xcframework -name "*.framework" -exec echo "Signing: {}" \; -exec codesign --sign "${{ secrets.APPLE_TEAM_ID }}" --timestamp --options runtime {} \; # Sign each individual framework FIRST + codesign --sign "${{ secrets.APPLE_TEAM_ID }}" --timestamp --options runtime dist/ai.xcframework # Then sign the xcframework wrapper + ditto -c -k --keepParent dist/ai.xcframework dist/ai.xcframework.zip + xcrun notarytool submit dist/ai.xcframework.zip --apple-id "${{ secrets.APPLE_ID }}" --password "${{ secrets.APPLE_PASSWORD }}" --team-id "${{ secrets.APPLE_TEAM_ID }}" --wait + rm dist/ai.xcframework.zip + + - name: cleanup keychain for codesign + if: matrix.os == 'macos-15' + run: | + rm certificate.p12 + security delete-keychain build.keychain - name: android setup test environment if: matrix.name == 'android' && matrix.arch != 'arm64-v8a' @@ -280,7 +346,7 @@ jobs: - name: unix test sqlite-ai if: contains(matrix.name, 'linux') || matrix.name == 'macos' - run: make test ${{ matrix.make && matrix.make || ''}} + run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make test ${{ matrix.make && matrix.make || ''}} - uses: actions/upload-artifact@v4.6.2 if: always() @@ -290,7 +356,7 @@ jobs: if-no-files-found: error release: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: release needs: build if: github.ref == 'refs/heads/main' @@ -324,9 +390,10 @@ jobs: for folder in "artifacts"/*; do if [ -d "$folder" ]; then name=$(basename "$folder") - zip -jq "${name}-${{ steps.tag.outputs.version }}.zip" "$folder"/* - tar -cJf "${name}-${{ steps.tag.outputs.version }}.tar.xz" -C "$folder" . - tar -czf "${name}-${{ steps.tag.outputs.version }}.tar.gz" -C "$folder" . + if [[ "$name" != "ai-apple-xcframework" ]]; then + tar -czf "${name}-${{ steps.tag.outputs.version }}.tar.gz" -C "$folder" . + fi + (cd "$folder" && zip -rq "../../${name}-${{ steps.tag.outputs.version }}.zip" .) fi done @@ -337,6 +404,5 @@ jobs: tag_name: ${{ steps.tag.outputs.version }} files: | ai-*-${{ steps.tag.outputs.version }}.zip - ai-*-${{ steps.tag.outputs.version }}.tar.xz ai-*-${{ steps.tag.outputs.version }}.tar.gz make_latest: true diff --git a/Makefile b/Makefile index 11e22a6..e9a3495 100644 --- a/Makefile +++ b/Makefile @@ -79,23 +79,17 @@ else ifeq ($(PLATFORM),macos) MINIAUDIO_OPTIONS += -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" STRIP = strip -x -S $@ else ifeq ($(PLATFORM),android) - # Set ARCH to find Android NDK's Clang compiler, the user should set the ARCH - ifeq ($(filter %,$(ARCH)),) + ifndef ARCH # Set ARCH to find Android NDK's Clang compiler, the user should set the ARCH $(error "Android ARCH must be set to ARCH=x86_64 or ARCH=arm64-v8a") endif - # Set ANDROID_NDK path to find android build tools - # e.g. on MacOS: export ANDROID_NDK=/Users/username/Library/Android/sdk/ndk/25.2.9519653 - ifeq ($(filter %,$(ANDROID_NDK)),) + ifndef ANDROID_NDK # Set ANDROID_NDK path to find android build tools; e.g. on MacOS: export ANDROID_NDK=/Users/username/Library/Android/sdk/ndk/25.2.9519653 $(error "Android NDK must be set") endif - BIN = $(ANDROID_NDK)/toolchains/llvm/prebuilt/$(HOST)-x86_64/bin PATH := $(BIN):$(PATH) - ifneq (,$(filter $(ARCH),arm64 arm64-v8a)) override ARCH := aarch64 endif - CC = $(BIN)/$(ARCH)-linux-android26-clang CXX = $(CC)++ TARGET := $(DIST_DIR)/ai.so @@ -116,7 +110,7 @@ else ifeq ($(PLATFORM),ios) WHISPER_OPTIONS += -DGGML_OPENMP=OFF -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DWHISPER_COREML=ON MINIAUDIO_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_C_FLAGS="-x objective-c" STRIP = strip -x -S $@ -else ifeq ($(PLATFORM),isim) +else ifeq ($(PLATFORM),ios-sim) TARGET := $(DIST_DIR)/ai.dylib SDK := -isysroot $(shell xcrun --sdk iphonesimulator --show-sdk-path) -miphonesimulator-version-min=14.0 LLAMA_LIBS += $(BUILD_GGML)/lib/libggml-metal.a @@ -182,7 +176,7 @@ $(DEF_FILE): ifeq ($(PLATFORM),windows) @echo "LIBRARY ai.dll" > $@ @echo "EXPORTS" >> $@ - @echo " sqlite3_ai_init" >> $@ + @echo " sqlite3_ai_init" >> $@ endif # Make sure the build and dist directories exist @@ -211,9 +205,9 @@ test: $(TARGET) # Build submodules ifeq ($(PLATFORM),windows) - ARGS = --parallel $(CPUS) + ARGS = --parallel $(CPUS) else - ARGS = -- -j$(CPUS) + ARGS = -- -j$(CPUS) endif build/llama.cpp.stamp: cmake -B $(BUILD_LLAMA) $(LLAMA_OPTIONS) $(LLAMA_DIR) @@ -243,6 +237,67 @@ version: clean: rm -rf $(BUILD_DIR)/* $(DIST_DIR)/* *.gcda *.gcno *.gcov *.sqlite +.NOTPARALLEL: %.dylib +%.dylib: + rm -rf $(BUILD_DIR) && $(MAKE) PLATFORM=$* + mv $(DIST_DIR)/ai.dylib $(DIST_DIR)/$@ + +define PLIST +\ +\ +\ +\ +CFBundleDevelopmentRegion\ +en\ +CFBundleExecutable\ +ai\ +CFBundleIdentifier\ +ai.sqlite.ai\ +CFBundleInfoDictionaryVersion\ +6.0\ +CFBundlePackageType\ +FMWK\ +CFBundleSignature\ +????\ +CFBundleVersion\ +$(shell make version)\ +CFBundleShortVersionString\ +$(shell make version)\ +MinimumOSVersion\ +11.0\ +\ + +endef + +define MODULEMAP +framework module ai {\ + umbrella header \"sqlite-ai.h\"\ + export *\ +} +endef + +LIB_NAMES = ios.dylib ios-sim.dylib macos.dylib +FMWK_NAMES = ios-arm64 ios-arm64_x86_64-simulator macos-arm64_x86_64 +$(DIST_DIR)/%.xcframework: $(LIB_NAMES) + @$(foreach i,1 2 3,\ + lib=$(word $(i),$(LIB_NAMES)); \ + fmwk=$(word $(i),$(FMWK_NAMES)); \ + mkdir -p $(DIST_DIR)/$$fmwk/ai.framework/Headers; \ + mkdir -p $(DIST_DIR)/$$fmwk/ai.framework/Modules; \ + cp src/sqlite-ai.h $(DIST_DIR)/$$fmwk/ai.framework/Headers; \ + printf "$(PLIST)" > $(DIST_DIR)/$$fmwk/ai.framework/Info.plist; \ + printf "$(MODULEMAP)" > $(DIST_DIR)/$$fmwk/ai.framework/Modules/module.modulemap; \ + mv $(DIST_DIR)/$$lib $(DIST_DIR)/$$fmwk/ai.framework/ai; \ + install_name_tool -id "@rpath/ai.framework/ai" $(DIST_DIR)/$$fmwk/ai.framework/ai; \ + ) + xcodebuild -create-xcframework $(foreach fmwk,$(FMWK_NAMES),-framework $(DIST_DIR)/$(fmwk)/ai.framework) -output $@ + rm -rf $(foreach fmwk,$(FMWK_NAMES),$(DIST_DIR)/$(fmwk)) + +xcframework: $(DIST_DIR)/ai.xcframework + +version: + @echo $(shell sed -n 's/^#define SQLITE_AI_VERSION[[:space:]]*"\([^"]*\)".*/\1/p' src/sqlite-ai.h) + # Help message help: @echo "SQLite AI Extension Makefile" @@ -255,12 +310,13 @@ help: @echo " windows (default on Windows)" @echo " android (needs ARCH to be set to x86_64 or arm64-v8a and ANDROID_NDK to be set)" @echo " ios (only on macOS)" - @echo " isim (only on macOS)" + @echo " ios-sim (only on macOS)" @echo "" @echo "Targets:" - @echo " all - Build the extension (default)" - @echo " clean - Remove built files" - @echo " test - Test the extension" - @echo " help - Display this help message" + @echo " all - Build the extension (default)" + @echo " clean - Remove built files" + @echo " test - Test the extension" + @echo " help - Display this help message" + @echo " xcframework - Build the Apple XCFramework" -.PHONY: all clean test extension help \ No newline at end of file +.PHONY: all clean test extension help version xcframework \ No newline at end of file diff --git a/src/sqlite-ai.h b/src/sqlite-ai.h index 43c5bdb..d88f6ea 100644 --- a/src/sqlite-ai.h +++ b/src/sqlite-ai.h @@ -24,7 +24,7 @@ extern "C" { #endif -#define SQLITE_AI_VERSION "0.6.0" +#define SQLITE_AI_VERSION "0.6.1" SQLITE_AI_API int sqlite3_ai_init (sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi); From c177ba8a5f892c1d79b955e5b1f08e2c67dd1c51 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 01:09:19 +0200 Subject: [PATCH 02/20] fix(makefile): correct indentation for ARGS assignment in build section --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e9a3495..962b835 100644 --- a/Makefile +++ b/Makefile @@ -205,9 +205,9 @@ test: $(TARGET) # Build submodules ifeq ($(PLATFORM),windows) - ARGS = --parallel $(CPUS) + ARGS = --parallel $(CPUS) else - ARGS = -- -j$(CPUS) + ARGS = -- -j$(CPUS) endif build/llama.cpp.stamp: cmake -B $(BUILD_LLAMA) $(LLAMA_OPTIONS) $(LLAMA_DIR) From 7907bd148efb463d49fd103a270f00f6e90db442 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 01:19:37 +0200 Subject: [PATCH 03/20] fix(workflow/linux-musl): install git --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8a3ba8e..ba5fd09 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -86,6 +86,10 @@ jobs: steps: + - name: linux-musl x86_64 install dependencies + if: matrix.name == 'linux-musl' && matrix.arch == 'x86_64' + run: apk update && apk add --no-cache git gcc make sqlite musl-dev linux-headers + - uses: actions/checkout@v4.2.2 with: submodules: true @@ -142,10 +146,6 @@ jobs: if: matrix.name == 'macos' run: brew link sqlite --force - - name: linux-musl x86_64 install dependencies - if: matrix.name == 'linux-musl' && matrix.arch == 'x86_64' - run: apk update && apk add --no-cache gcc make sqlite musl-dev linux-headers - - name: linux-musl arm64 setup container if: matrix.name == 'linux-musl' && matrix.arch == 'arm64' run: | From 5818a26f1dc2d7531bdba60718df33f58d2670f8 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 01:22:29 +0200 Subject: [PATCH 04/20] fix(workflow): update conditional checks for linux-musl --- .github/workflows/main.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ba5fd09..3c88136 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -87,7 +87,7 @@ jobs: steps: - name: linux-musl x86_64 install dependencies - if: matrix.name == 'linux-musl' && matrix.arch == 'x86_64' + if: contains(matrix.name, 'linux-musl') && matrix.arch == 'x86_64' run: apk update && apk add --no-cache git gcc make sqlite musl-dev linux-headers - uses: actions/checkout@v4.2.2 @@ -147,7 +147,7 @@ jobs: run: brew link sqlite --force - name: linux-musl arm64 setup container - if: matrix.name == 'linux-musl' && matrix.arch == 'arm64' + if: contains(matrix.name, 'linux-musl') && matrix.arch == 'arm64' run: | docker run -d --name alpine \ --platform linux/arm64 \ @@ -231,7 +231,7 @@ jobs: - name: unix build llama.cpp if: matrix.os != 'windows-2022' && steps.cache-llama.outputs.cache-hit != 'true' - run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/llama.cpp.stamp ${{ matrix.make && matrix.make || ''}} + run: ${{ contains(matrix.name, 'linux-musl') && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/llama.cpp.stamp ${{ matrix.make && matrix.make || ''}} - name: windows build whisper.cpp if: matrix.os == 'windows-2022' && steps.cache-whisper.outputs.cache-hit != 'true' @@ -242,7 +242,7 @@ jobs: - name: unix build whisper.cpp if: matrix.os != 'windows-2022' && steps.cache-whisper.outputs.cache-hit != 'true' - run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/whisper.cpp.stamp ${{ matrix.make && matrix.make || ''}} + run: ${{ contains(matrix.name, 'linux-musl') && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/whisper.cpp.stamp ${{ matrix.make && matrix.make || ''}} - name: windows build miniaudio if: matrix.os == 'windows-2022' && steps.cache-miniaudio.outputs.cache-hit != 'true' @@ -251,7 +251,7 @@ jobs: - name: unix build miniaudio if: matrix.os != 'windows-2022' && steps.cache-miniaudio.outputs.cache-hit != 'true' - run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/miniaudio.stamp ${{ matrix.make && matrix.make || ''}} + run: ${{ contains(matrix.name, 'linux-musl') && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make build/miniaudio.stamp ${{ matrix.make && matrix.make || ''}} - name: windows build sqlite-ai if: matrix.os == 'windows-2022' @@ -262,7 +262,7 @@ jobs: - name: unix build sqlite-ai if: matrix.os != 'windows-2022' - run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make extension ${{ matrix.make && matrix.make || ''}} + run: ${{ contains(matrix.name, 'linux-musl') && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make extension ${{ matrix.make && matrix.make || ''}} - name: create keychain for codesign if: matrix.os == 'macos-15' @@ -346,7 +346,7 @@ jobs: - name: unix test sqlite-ai if: contains(matrix.name, 'linux') || matrix.name == 'macos' - run: ${{ matrix.name == 'linux-musl' && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make test ${{ matrix.make && matrix.make || ''}} + run: ${{ contains(matrix.name, 'linux-musl') && matrix.arch == 'arm64' && 'docker exec alpine' || '' }} make test ${{ matrix.make && matrix.make || ''}} - uses: actions/upload-artifact@v4.6.2 if: always() From 72b0bc2fca9f8bd6ab0e076a63915be1195cd40a Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 01:27:35 +0200 Subject: [PATCH 05/20] fix(workflow): add g++ to linux-musl x86_64 and arm64 dependency installation --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3c88136..196454a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -88,7 +88,7 @@ jobs: - name: linux-musl x86_64 install dependencies if: contains(matrix.name, 'linux-musl') && matrix.arch == 'x86_64' - run: apk update && apk add --no-cache git gcc make sqlite musl-dev linux-headers + run: apk update && apk add --no-cache git gcc g++ make sqlite musl-dev linux-headers - uses: actions/checkout@v4.2.2 with: @@ -155,7 +155,7 @@ jobs: -w /workspace \ alpine:latest \ tail -f /dev/null - docker exec alpine sh -c "apk update && apk add --no-cache gcc make sqlite musl-dev linux-headers" + docker exec alpine sh -c "apk update && apk add --no-cache gcc g++ make sqlite musl-dev linux-headers" - name: linux install opencl if: matrix.name == 'linux-gpu' From e1964ddeb94f1386100c515c696f1467d38d151b Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 01:33:19 +0200 Subject: [PATCH 06/20] fix(workflow): add cmake to linux-musl x86_64 and arm64 dependency installation --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 196454a..b663de2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -88,7 +88,7 @@ jobs: - name: linux-musl x86_64 install dependencies if: contains(matrix.name, 'linux-musl') && matrix.arch == 'x86_64' - run: apk update && apk add --no-cache git gcc g++ make sqlite musl-dev linux-headers + run: apk update && apk add --no-cache git gcc g++ make cmake sqlite musl-dev linux-headers - uses: actions/checkout@v4.2.2 with: @@ -155,7 +155,7 @@ jobs: -w /workspace \ alpine:latest \ tail -f /dev/null - docker exec alpine sh -c "apk update && apk add --no-cache gcc g++ make sqlite musl-dev linux-headers" + docker exec alpine sh -c "apk update && apk add --no-cache gcc g++ make cmake sqlite musl-dev linux-headers" - name: linux install opencl if: matrix.name == 'linux-gpu' From 5b932ee716fa0287c5f99df3a3ede48a4c267ec2 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 02:43:44 +0200 Subject: [PATCH 07/20] fix(workflow/linux-musl): add OpenCL and Vulkan installation for linux-musl-gpu --- .github/workflows/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b663de2..9236526 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -161,6 +161,10 @@ jobs: if: matrix.name == 'linux-gpu' run: sudo apt-get install -y opencl-headers ocl-icd-opencl-dev + - name: linux-musl install opencl + if: matrix.name == 'linux-musl-gpu' + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache opencl-headers opencl-icd-loader-dev + - name: linux-x86_64 install vulkan if: matrix.name == 'linux-gpu' && matrix.arch == 'x86_64' run: | @@ -194,6 +198,10 @@ jobs: sudo apt-get update || true ;# Prevent failure due to missing URLs. sudo apt-get install -y --no-install-recommends build-essential glslc crossbuild-essential-arm64 libvulkan-dev:arm64 + - name: linux-musl install vulkan + if: matrix.name == 'linux-musl-gpu' + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev glslc + - name: cache llama.cpp build id: cache-llama uses: actions/cache@v4 From 36eb66e8dce6d9042287016fb0b6072cd58fb8a4 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 02:48:14 +0200 Subject: [PATCH 08/20] fix(workflow/linux-musl): add shaderc to vulkan installation for linux-musl-gpu --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9236526..e09a197 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev glslc + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc - name: cache llama.cpp build id: cache-llama From 6e47d480c2aaa990817077e569b91799f598c4b8 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 02:55:02 +0200 Subject: [PATCH 09/20] fix(workflow/linux-musl): add python3 to dependency installation for linux-musl x86_64 and arm64 --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e09a197..7d37dbf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -88,7 +88,7 @@ jobs: - name: linux-musl x86_64 install dependencies if: contains(matrix.name, 'linux-musl') && matrix.arch == 'x86_64' - run: apk update && apk add --no-cache git gcc g++ make cmake sqlite musl-dev linux-headers + run: apk update && apk add --no-cache git gcc g++ make cmake sqlite musl-dev linux-headers python3 - uses: actions/checkout@v4.2.2 with: @@ -155,7 +155,7 @@ jobs: -w /workspace \ alpine:latest \ tail -f /dev/null - docker exec alpine sh -c "apk update && apk add --no-cache gcc g++ make cmake sqlite musl-dev linux-headers" + docker exec alpine sh -c "apk update && apk add --no-cache gcc g++ make cmake sqlite musl-dev linux-headers python3" - name: linux install opencl if: matrix.name == 'linux-gpu' From ddc4aba1319f9a605d7406432da0ee03c57ec91f Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:02:54 +0200 Subject: [PATCH 10/20] fix(workflow/linux-musl): enhance vulkan installation by adding mesa-vulkan-intel, mesa-vulkan-radeon, and vulkan-tools --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7d37dbf..f2d0473 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader mesa-vulkan-intel vulkan-tools mesa-vulkan-radeon - name: cache llama.cpp build id: cache-llama From a901081a78cbd4a914914ff6bb023c03fc69c85b Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:05:14 +0200 Subject: [PATCH 11/20] fix(workflow/linux-musl): add vulkan-icd-loader to linux-musl-gpu vulkan installation --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f2d0473..bbe439a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader mesa-vulkan-intel vulkan-tools mesa-vulkan-radeon + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader mesa-vulkan-intel vulkan-tools mesa-vulkan-radeon vulkan-icd-loader - name: cache llama.cpp build id: cache-llama From 3f23313eedee1598e4048a35e5984db037415cd0 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:09:11 +0200 Subject: [PATCH 12/20] fix(workflow/linux-musl): update vulkan installation to include vulkan-loader and vulkan-tools for linux-musl-gpu --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bbe439a..43618c7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader mesa-vulkan-intel vulkan-tools mesa-vulkan-radeon vulkan-icd-loader + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools vulkan-icd-loader - name: cache llama.cpp build id: cache-llama From f2a905c6d0c2b18b953b38cc02e2c12b85ca1545 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:10:28 +0200 Subject: [PATCH 13/20] fix(workflow/linux-musl): remove duplicate vulkan-loader in linux-musl-gpu installation --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 43618c7..900021e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools vulkan-icd-loader + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools - name: cache llama.cpp build id: cache-llama From 81227cf35004d8a2d5c34ba23893046e4da06897 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:16:18 +0200 Subject: [PATCH 14/20] fix(workflow/linux-musl): enhance linux-musl-gpu vulkan installation --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 900021e..1717960 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools mesa-dri-intel mesa-dri-amdgpu mesa-libgl mesa-demos glslang mesa-vulkan-layers vulkan-utility-libraries vulkan-validation-layers - name: cache llama.cpp build id: cache-llama From 1adbd7c58af1d02bc3921e29d1713e57d697b745 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:18:53 +0200 Subject: [PATCH 15/20] fix(workflow/linux-musl): update linux-musl-gpu vulkan installation to remove mesa-dri-intel and mesa-dri-amdgpu --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1717960..1ea39b4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools mesa-dri-intel mesa-dri-amdgpu mesa-libgl mesa-demos glslang mesa-vulkan-layers vulkan-utility-libraries vulkan-validation-layers + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools mesa-demos glslang mesa-vulkan-layers vulkan-utility-libraries vulkan-validation-layers - name: cache llama.cpp build id: cache-llama From 402416f19e95ce7044d4cc1a92dab7c8e917710e Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:27:29 +0200 Subject: [PATCH 16/20] fix(workflow/linux-musl): update linux-musl-gpu vulkan installation to include build-base and remove unnecessary packages --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1ea39b4..fbe3ea5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache vulkan-headers vulkan-loader-dev shaderc vulkan-loader vulkan-tools mesa-demos glslang mesa-vulkan-layers vulkan-utility-libraries vulkan-validation-layers + run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache build-base vulkan-loader-dev vulkan-headers shaderc - name: cache llama.cpp build id: cache-llama From ae8178c18417bee12782ddc980d80be985a2bfc7 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:31:21 +0200 Subject: [PATCH 17/20] fix(workflow/linux-musl): enhance linux-musl-gpu vulkan installation with additional dependencies and environment setup --- .github/workflows/main.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fbe3ea5..342b531 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -200,7 +200,17 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' - run: ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache build-base vulkan-loader-dev vulkan-headers shaderc + run: | + ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache build-base mesa-vulkan-drivers vulkan-loader-dev vulkan-headers shaderc wget + + wget https://sdk.lunarg.com/sdk/download/latest/linux/vulkan-sdk.tar.xz -O vulkan-sdk.tar.xz + tar -xf vulkan-sdk.tar.xz + cd $(ls -d 1.* | head -n1) + source setup-env.sh + echo "VULKAN_SDK=$VULKAN_SDK" >> $GITHUB_ENV + echo "PATH=$PATH" >> $GITHUB_ENV + echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $GITHUB_ENV + echo "VK_ADD_LAYER_PATH=$VK_ADD_LAYER_PATH" >> $GITHUB_ENV - name: cache llama.cpp build id: cache-llama From 9d76570a98017b3a9865d7d324101428786ec1eb Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 05:33:42 +0200 Subject: [PATCH 18/20] fix(workflow/linux-musl): update linux-musl-gpu vulkan installation to remove mesa-vulkan-drivers --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 342b531..c73b90d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -201,7 +201,7 @@ jobs: - name: linux-musl install vulkan if: matrix.name == 'linux-musl-gpu' run: | - ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache build-base mesa-vulkan-drivers vulkan-loader-dev vulkan-headers shaderc wget + ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache build-base vulkan-loader-dev vulkan-headers shaderc wget wget https://sdk.lunarg.com/sdk/download/latest/linux/vulkan-sdk.tar.xz -O vulkan-sdk.tar.xz tar -xf vulkan-sdk.tar.xz From c649830dc051ab7fb95b094e574c8c781425c242 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 11:20:43 +0200 Subject: [PATCH 19/20] fix(workflow/linux-musl): disable Vulkan support for linux-musl-gpu builds --- .github/workflows/main.yml | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c73b90d..0e7e668 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,7 @@ jobs: arch: x86_64 name: linux-musl-gpu container: alpine:latest - make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=ON -DGGML_OPENCL=ON" + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=OFF -DGGML_OPENCL=ON" - os: ubuntu-22.04-arm arch: arm64 name: linux-musl-cpu @@ -52,7 +52,7 @@ jobs: - os: ubuntu-22.04-arm arch: arm64 name: linux-musl-gpu - make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=ON -DGGML_OPENCL=ON" + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=OFF -DGGML_OPENCL=ON" - os: windows-2022 arch: x86_64 name: windows-cpu @@ -198,20 +198,6 @@ jobs: sudo apt-get update || true ;# Prevent failure due to missing URLs. sudo apt-get install -y --no-install-recommends build-essential glslc crossbuild-essential-arm64 libvulkan-dev:arm64 - - name: linux-musl install vulkan - if: matrix.name == 'linux-musl-gpu' - run: | - ${{ matrix.arch == 'arm64' && 'docker exec alpine' || '' }} apk add --no-cache build-base vulkan-loader-dev vulkan-headers shaderc wget - - wget https://sdk.lunarg.com/sdk/download/latest/linux/vulkan-sdk.tar.xz -O vulkan-sdk.tar.xz - tar -xf vulkan-sdk.tar.xz - cd $(ls -d 1.* | head -n1) - source setup-env.sh - echo "VULKAN_SDK=$VULKAN_SDK" >> $GITHUB_ENV - echo "PATH=$PATH" >> $GITHUB_ENV - echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $GITHUB_ENV - echo "VK_ADD_LAYER_PATH=$VK_ADD_LAYER_PATH" >> $GITHUB_ENV - - name: cache llama.cpp build id: cache-llama uses: actions/cache@v4 From aab46af6afc7d88697a5cf1c97fce04281289445 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Sat, 30 Aug 2025 11:24:08 +0200 Subject: [PATCH 20/20] fix(workflow/linux-musl): remove Vulkan support from linux-musl-gpu builds --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0e7e668..f8f7130 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,7 @@ jobs: arch: x86_64 name: linux-musl-gpu container: alpine:latest - make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=OFF -DGGML_OPENCL=ON" + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_OPENCL=ON" - os: ubuntu-22.04-arm arch: arm64 name: linux-musl-cpu @@ -52,7 +52,7 @@ jobs: - os: ubuntu-22.04-arm arch: arm64 name: linux-musl-gpu - make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_VULKAN=OFF -DGGML_OPENCL=ON" + make: LLAMA="-DGGML_NATIVE=OFF -DGGML_CPU=ON -DGGML_OPENCL=ON" - os: windows-2022 arch: x86_64 name: windows-cpu