Skip to content

Release built artifacts on partial failure + fix CUDA/SYCL bridge compile - #44

Merged
SnowCheetos merged 3 commits into
mainfrom
fix/release-resilience-and-params-fit
Jul 8, 2026
Merged

Release built artifacts on partial failure + fix CUDA/SYCL bridge compile#44
SnowCheetos merged 3 commits into
mainfrom
fix/release-resilience-and-params-fit

Conversation

@SnowCheetos

Copy link
Copy Markdown
Contributor

Overview

Two independent changes, both aimed at the CUDA/SYCL source builds that keep breaking full releases. The v0.17.4 release (run 28914476140) built CPU/Vulkan/macOS in ~2.5 min each, then CUDA/SYCL ran the full ~15-min build and failed at the very end — and because the release job required all legs, the three good binaries were discarded.

1. ci(release) — publish what built, even if some targets fail

The release job used needs: build with no if:, so one failed matrix leg skipped the whole release. Now it runs with if: ${{ !cancelled() }}:

  • Publishes whatever artifacts were uploaded (failed legs upload nothing → simply absent from the release).
  • Errors out only if zero targets built, so we never cut an empty release.
  • The overall run still goes red when a target fails — failures stay visible, they just no longer block the working binaries.

This is the direct fix for "the long build always gets ruined by the 2 failed backends."

2. fix(build) — the actual CUDA/SYCL failure (not OOM/timeout)

The failure looked like it might be a resource issue, but it was another API mismatch surfacing only after the full build:

autocommit_common_bridge.cpp:662: error: 'llama_params_fit' was not declared in this scope

The bridge guarded llama_params_fit behind #ifdef LLAMA_CPP_PREBUILT — no-oping it for the binary release but still calling it in the #else from-source branch. Since #42 pinned the submodule to b9837, the source build is also b9837, which doesn't expose that public symbol in either mode (the fitting logic moved into libcommon's internal common/fit.cpp). Fix: no-op unconditionally, matching the prebuilt backends that already ship (they've never run the fit either).

Verification

  • release.yml parses as valid YAML.
  • The bridge now compiles against a real b9837 checkout in source mode (no -DLLAMA_CPP_PREBUILT — exactly what CUDA/SYCL do), and still compiles in prebuilt mode. This was the precise step that failed at line 662.

Caveat: I can't run the CUDA/SYCL toolchains locally, so this fixes the confirmed compile error but I can't rule out a further issue at their link stage. That's exactly what change #1 now protects against — worst case, CPU/Vulkan/macOS still release.

After merge

Cut a v0.17.5 tag to exercise the full matrix. Expected: all five publish; if CUDA/SYCL still trip on something downstream, the other three release anyway.

SnowCheetos and others added 2 commits July 7, 2026 22:31
The `release` job used `needs: build` with no `if:`, so a single failed
matrix leg (currently the slow CUDA/SYCL source builds) skipped the whole
release — discarding the CPU, Vulkan, and macOS binaries that built fine
minutes earlier.

Add `if: ${{ !cancelled() }}` so the release job runs after the build
matrix regardless of individual failures, publishing whatever artifacts
were uploaded. Failed legs upload nothing and are simply absent from the
release. If every target failed (zero artifacts) the job errors instead
of cutting an empty release. The overall run still goes red when a target
fails, keeping the failure visible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
After pinning the submodule to b9837 (#42), the CUDA and SYCL source
builds compiled the full tree (~15 min) and then failed:

    autocommit_common_bridge.cpp:662: error: 'llama_params_fit' was not
    declared in this scope

The bridge guarded llama_params_fit behind `#ifdef LLAMA_CPP_PREBUILT`,
no-oping it for the binary release but still calling it from source. b9837
does not expose that public symbol in either mode — the fitting logic
moved into libcommon's internal common/fit.cpp. Drop the source branch and
no-op unconditionally, matching the prebuilt backends that already ship.

Verified: the bridge compiles against b9837 in both modes (with and
without -DLLAMA_CPP_PREBUILT).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 8, 2026 03:32

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 aims to make releases more resilient to partial build failures in the CI matrix and to fix a CUDA/SYCL source-build compilation break in the llama.cpp bridge code.

Changes:

  • Update the Release workflow so the release job runs even when some build matrix legs fail, publishing whatever artifacts are available and failing only when none exist.
  • Remove/disable usage of llama_params_fit in the CUDA/SYCL bridge to match the pinned llama.cpp release API surface and avoid compile errors.

Reviewed changes

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

File Description
crates/llama-sys/src/autocommit_common_bridge.cpp No-op autocommit_llama_params_fit unconditionally to avoid calling a missing symbol in source builds.
.github/workflows/release.yml Make the release job tolerant of partial build failures and gate publishing on whether artifacts exist.

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

Comment thread .github/workflows/release.yml
…ys()

Addresses review feedback. !cancelled() does run when a needs leg fails (including a status function overrides Actions' implicit success() gate) and, unlike always(), still skips a manually cancelled run. No behavior change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@SnowCheetos
SnowCheetos merged commit 027391d into main Jul 8, 2026
8 checks passed
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