Skip to content

ci(gfx11): bundle liborigami + add ldd-closure backstop and packaging gate#68

Merged
jimw567 merged 1 commit into
gfx11from
jimwu.gfx11-bundle-liborigami
Jul 24, 2026
Merged

ci(gfx11): bundle liborigami + add ldd-closure backstop and packaging gate#68
jimw567 merged 1 commit into
gfx11from
jimwu.gfx11-bundle-liborigami

Conversation

@jimw567

@jimw567 jimw567 commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Release b20260724 shipped broken: llama-server exits 127 and llama-bench emits no JSON, both with error while loading shared libraries: liborigami.so.1: cannot open shared object file.

Root cause: the "Copy ROCm core libs" step is a hand-maintained cp -v allowlist (its own comment warns "If artifacts from ROCm or Llama.cpp change, you may need to update this list."). The b20260724 build bumped ROCm 7.14 -> 7.15, and 7.15's libhipblaslt.so.1 gained a new DT_NEEDED on liborigami.so.1 (a new hipBLASLt kernel-selection lib). Nobody added a cp line for it, so it was omitted from the tarball. Every binary has RUNPATH=$ORIGIN, so libhipblaslt.so.1 loads from the release dir but then fails to resolve its own liborigami.so.1 dep.

Why CI didn't catch it: the only post-build smoke test runs llama-cli, which links hipBLASLt lazily and loads fine. llama-bench/llama-server load hipBLASLt eagerly and break. (Confirmed via ldd on the actual b20260724 binaries.)

Changes

  1. Explicit fix - add cp -v /opt/rocm/lib/liborigami.so* to the allowlist next to libhipblaslt.
  2. Transitive-closure backstop - after the manual copies, ldd every bundled binary, and for any => not found dep that exists under /opt/rocm/lib{,/rocm_sysdeps/lib,/llvm/lib}, copy it in; repeat until closed. The next ROCm bump that adds a new NEEDED lib is auto-bundled instead of silently shipping broken.
  3. GPU-free packaging gate - new "Verify bundled binaries have no unresolved deps" step after RPATH-setting: ldds every binary and fails the build if anything is unresolved. Runs unconditionally and gates create-release. (Note: the GPU test-gfx job is currently if: false while the runner is offline, so this build-job gate is the real protection.)
  4. Widened HW smoke test - add an llama-bench load check to test-gfx so the eager-hipBLASLt path is exercised once the GPU runner returns.

Test plan

  • Build job's new verify gate passes on a healthy build and fails if a bundled binary has an unresolved dep (verified locally against the real b20260724 tree: the gate flags liborigami.so.1 and exits 1).
  • Backstop copies liborigami.so.1 from /opt/rocm/lib into build/bin on the 7.15 toolchain.
  • Resulting tarball: ldd llama-bench and ldd llama-server show no not found deps.
  • test-gfx (when runner online) passes both the llama-cli and new llama-bench checks.

@jimw567
jimw567 requested a review from Annieren July 24, 2026 19:22

@Annieren Annieren left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

lgtm

@jimw567
jimw567 merged commit e2c1ce7 into gfx11 Jul 24, 2026
5 checks passed
@jimw567
jimw567 deleted the jimwu.gfx11-bundle-liborigami branch July 24, 2026 21:19
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