Skip to content

Release pipeline: drop CUDA/SYCL targets + make prebuilt binaries self-contained - #46

Merged
SnowCheetos merged 1 commit into
mainfrom
ci/drop-cuda-sycl-release-targets
Jul 8, 2026
Merged

Release pipeline: drop CUDA/SYCL targets + make prebuilt binaries self-contained#46
SnowCheetos merged 1 commit into
mainfrom
ci/drop-cuda-sycl-release-targets

Conversation

@SnowCheetos

@SnowCheetos SnowCheetos commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Overview

Two related release-pipeline fixes.

1. Drop CUDA/SYCL from the release matrix

After the b9837 bump these from-source builds broke four times in a row (bridge API drift → LLAMA_BUILD_APPllama_params_fit → build-info link), each costing a ~15-min CI cycle. Vulkan already covers NVIDIA, AMD, and Intel GPUs via a prebuilt archive and passes CI, so the dedicated source builds aren't worth the maintenance cost for autocommit's small models.

  • release.yml: matrix is now the three prebuilt targets — macOS-arm64, Linux-x86_64 (CPU), Linux-x86_64-vulkan. Removed the two source-build legs and every step that only served them (CUDA toolkit, Intel oneAPI repo/install, non-prebuilt Linux deps, the SYCL setvars source, and the GGML_CUDA/GGML_SYCL build env).
  • README.md: dropped the pre-built -cuda/-sycl download links (they'll no longer be published) and noted CUDA/SYCL are build-from-source only. Source support (GGML_CUDA=ON / GGML_SYCL=ON) is unchanged — see also fix(build): link llama-common-base so CUDA/SYCL source builds link #45, which keeps the from-source path linking.

2. Make prebuilt binaries relocatable ($ORIGIN rpath)

The prebuilt binaries link llama.cpp's shared libs dynamically but carried no rpath, so they died at runtime with libllama.so.0: cannot open shared object file unless the libs were already on the loader path. build.rs emits -Wl,-rpath, but through a dependency crate's cargo:rustc-link-arg, which — unlike link-lib/link-searchdoes not propagate to the final binary. So autocommit never got an rpath (local or released).

  • release.yml: set the rpath via RUSTFLAGS in the build step ($ORIGIN on Linux, @loader_path on macOS), which does reach the binary. The Package step already bundles the libs next to it, so the tarball is now self-contained.
  • README.md: install by extracting into a directory and symlinking the binary onto PATH (keeping the libs beside it), instead of moving the binary alone.

Verified locally

readelf -d shows RUNPATH=$ORIGIN; the binary runs with no LD_LIBRARY_PATH both directly and through a PATH symlink.

Note

This fixes the released tarballs. A local cargo install of a prebuilt backend still can't be self-contained (cargo copies only the binary, not the sidecar .sos) — those users need the libs on their loader path, or a from-source (static) build.

The from-source CUDA and SYCL builds broke repeatedly after the b9837 bump
and take ~15 min each. Vulkan already covers NVIDIA, AMD, and Intel GPUs via
a prebuilt archive and passes CI, so the dedicated source-build targets are
not worth the maintenance cost for autocommit's small models.

- release.yml: remove the cuda and sycl matrix legs and every step that only
  served them (CUDA toolkit, Intel oneAPI repo/install, the non-prebuilt Linux
  deps step, the SYCL setvars source, and the GGML_CUDA/GGML_SYCL build env).
  All three remaining targets are prebuilt.
- README: drop the pre-built -cuda/-sycl download links (they will no longer
  be published) and note that CUDA/SYCL are build-from-source only.

CUDA/SYCL remain available via `GGML_CUDA=ON` / `GGML_SYCL=ON` source builds;
this only removes them from the release matrix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 8, 2026 04:31
@SnowCheetos
SnowCheetos merged commit 302ec95 into main Jul 8, 2026
9 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR streamlines the release pipeline by removing CUDA and SYCL from the GitHub Actions release matrix, focusing releases on CPU (Linux), Vulkan (Linux), and Metal (macOS) via prebuilt llama.cpp archives, and updating the README to avoid publishing links that would 404.

Changes:

  • Removed CUDA and SYCL legs (and their dedicated install/build steps) from .github/workflows/release.yml.
  • Updated README.md to remove CUDA/SYCL prebuilt download links and clarify that CUDA/SYCL are source-build-only.
  • Clarified GPU backend selection guidance in the README.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
.github/workflows/release.yml Drops CUDA/SYCL from the release matrix and removes CUDA/oneAPI/source-build-only setup steps to speed up and stabilize releases.
README.md Removes CUDA/SYCL prebuilt download commands and updates backend-selection messaging to match the new release artifacts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md
Comment on lines +63 to 67
The default build (and every pre-built binary) uses CPU on Linux, Metal on macOS, and Vulkan when requested. CUDA and SYCL have no pre-built binaries — selecting them requires the matching toolkit and compiles llama.cpp from source:

```sh
# Vulkan (requires Vulkan SDK + glslc)
GGML_VULKAN=ON cargo install --path crates/cli --locked --features llama-native
@SnowCheetos SnowCheetos changed the title ci(release): drop CUDA/SYCL targets; ship CPU/Vulkan/macOS only Release pipeline: drop CUDA/SYCL targets + make prebuilt binaries self-contained Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants