diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0472101..f4f9d4c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,6 +64,8 @@ jobs: - uses: actions/checkout@v4 # System packages — same as check.yml but locked to release-build needs. + # See check.yml for the per-package rationale (bindgen → libclang, + # llama-cpp-sys-2 vulkan feature → libvulkan / VULKAN_SDK). - name: Install Linux deps if: matrix.os == 'ubuntu-22.04' run: | @@ -76,12 +78,17 @@ jobs: libudev-dev \ patchelf \ cmake \ - build-essential + build-essential \ + libclang-dev \ + clang \ + libvulkan-dev - name: Install macOS deps if: matrix.os == 'macos-latest' run: | brew list cmake >/dev/null 2>&1 || brew install cmake + brew list llvm >/dev/null 2>&1 || brew install llvm + echo "LIBCLANG_PATH=$(brew --prefix llvm)/lib" >> "$GITHUB_ENV" - name: Install Windows deps if: matrix.os == 'windows-latest' @@ -89,6 +96,14 @@ jobs: run: | cmake --version choco install -y llvm --no-progress + choco install -y vulkan-sdk --no-progress + $sdkRoot = Get-ChildItem -Directory "C:\VulkanSDK" | Sort-Object Name -Descending | Select-Object -First 1 + if (-not $sdkRoot) { + Write-Error "VulkanSDK directory not found under C:\VulkanSDK after choco install" + exit 1 + } + echo "VULKAN_SDK=$($sdkRoot.FullName)" >> $env:GITHUB_ENV + echo "LIBCLANG_PATH=C:\Program Files\LLVM\bin" >> $env:GITHUB_ENV - name: Install Node uses: actions/setup-node@v4 diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 834464f..56997aa 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -32,9 +32,14 @@ jobs: steps: - uses: actions/checkout@v4 - # System packages whisper-rs-sys + Tauri need on each OS. - # Linux is the heaviest because we depend on GTK/WebKit, audio, - # evdev, plus cmake for whisper.cpp. + # System packages whisper-rs-sys + llama-cpp-sys-2 + Tauri need on each OS. + # - libclang-dev: bindgen (pulled by whisper-rs-sys + llama-cpp-sys-2) + # needs a libclang shared library at build time. + # - libvulkan-dev: llama-cpp-sys-2's `vulkan` feature links against + # libvulkan.so at build time, even when VULKAN_SDK is unset + # (falls back to the system-provided lib on Linux). + # - Linux is the heaviest because we depend on GTK/WebKit, audio, + # evdev, plus cmake for whisper.cpp. - name: Install Linux deps if: matrix.os == 'ubuntu-22.04' run: | @@ -47,25 +52,45 @@ jobs: libudev-dev \ patchelf \ cmake \ - build-essential + build-essential \ + libclang-dev \ + clang \ + libvulkan-dev # macOS: cmake is preinstalled in macos-latest but pin via brew to - # be explicit and future-proof. + # be explicit and future-proof. Xcode CLT provides libclang but the + # runner's default clang install does not ship libclang.dylib — use + # Homebrew's LLVM, which does, and point LIBCLANG_PATH at it. - name: Install macOS deps if: matrix.os == 'macos-latest' run: | brew list cmake >/dev/null 2>&1 || brew install cmake + brew list llvm >/dev/null 2>&1 || brew install llvm + # Expose libclang.dylib to bindgen for subsequent steps. + echo "LIBCLANG_PATH=$(brew --prefix llvm)/lib" >> "$GITHUB_ENV" - # Windows: cmake + clang are needed by whisper-rs-sys. cmake is on - # windows-latest by default; ensure it. + # Windows: cmake + clang (for whisper-rs-sys/llama-cpp-sys bindgen) + # + Vulkan SDK (required by llama-cpp-sys-2 when the `vulkan` + # feature is on — it hard-panics on a missing VULKAN_SDK env var). + # + # choco's `vulkan-sdk` package installs into + # C:\VulkanSDK\\; the canonical VULKAN_SDK path is that + # directory. We resolve it dynamically so a minor-version bump in + # the SDK doesn't hardcode-break this step. - name: Install Windows deps if: matrix.os == 'windows-latest' shell: pwsh run: | - # cmake is on the runner image; verify it. cmake --version - # LLVM/clang for whisper.cpp's sources. choco install -y llvm --no-progress + choco install -y vulkan-sdk --no-progress + $sdkRoot = Get-ChildItem -Directory "C:\VulkanSDK" | Sort-Object Name -Descending | Select-Object -First 1 + if (-not $sdkRoot) { + Write-Error "VulkanSDK directory not found under C:\VulkanSDK after choco install" + exit 1 + } + echo "VULKAN_SDK=$($sdkRoot.FullName)" >> $env:GITHUB_ENV + echo "LIBCLANG_PATH=C:\Program Files\LLVM\bin" >> $env:GITHUB_ENV - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable