From c65682b54e253f46a70f5363ad71bc6304cd195b Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 28 Aug 2026 14:48:04 -0700 Subject: [PATCH] =?UTF-8?q?ci:=20install=20nasm=20in=20release-plz=20?= =?UTF-8?q?=E2=80=94=20the=20one=20workflow=20that=20links=20a=20binary=20?= =?UTF-8?q?was=20the=20one=20without=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nine crates published and the release still exited non-zero. `cargo package` reached `ffai-cli` and the link failed: rust-lld: error: undefined symbol: McHorVer22Width8VerLastAlign_sse2 referenced by rusty_h264-accel-0.8.0/src/lib.rs:376 rust-lld: error: undefined symbol: PixelAvgWidthEq4_mmx `rusty_h264-accel`'s build.rs skips assembling OpenH264's x86 kernels when `nasm` is absent, warns, and lets the crate compile as a LIBRARY anyway — so every library in the release packaged and published cleanly (ffai-media, the four engines, ffai-argus-wasm). ffai-cli is the only BINARY, a binary is the only thing that links, and that is where the missing symbols surfaced. ffai-mercury-wasm and ffai-wasm sort after it and never got their turn. `harden.yml` and `release.yml` both install nasm. `release-plz.yml` did not, and it is the workflow that publishes. harden.yml's copy of this step has carried a comment predicting this exact failure — "a missing BUILD TOOL, not broken code" — since before it happened here. Same step, same time-box and retries as the other two. Dependabot's open bump of rusty_h264 0.8.0 -> 0.10.0 does NOT fix this and should not be merged expecting it to: the symbols are absent because nothing assembled them, not because of anything that changed between those versions. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/release-plz.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/.github/workflows/release-plz.yml b/.github/workflows/release-plz.yml index a99f986..0701813 100644 --- a/.github/workflows/release-plz.yml +++ b/.github/workflows/release-plz.yml @@ -42,6 +42,29 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable + # nasm assembles OpenH264's SIMD kernels, reached through rusty_h264 in + # ffai-media. `harden.yml` and `release.yml` both install it; THIS workflow + # did not, and it is the only one that links a BINARY. + # + # That asymmetry is exactly how it failed. `rusty_h264-accel`'s build.rs + # skips the asm when nasm is absent and says so in a warning, so every + # LIBRARY still packages and publishes cleanly — ffai-media, the engines + # and ffai-argus-wasm all went out. Then `cargo package` reached ffai-cli, + # the one binary in the release, and the link failed on a wall of + # "undefined symbol: McHorVer22Width8VerLastAlign_sse2". Nine crates + # published and the release still exited non-zero, leaving + # ffai-mercury-wasm and ffai-wasm unpublished behind it. + # + # A missing BUILD TOOL, not broken code — which is what harden.yml's copy + # of this step has said in a comment since before this happened. + - name: Install nasm (OpenH264 SIMD) + timeout-minutes: 6 + env: + DEBIAN_FRONTEND: noninteractive + run: | + sudo apt-get update -qq -o Acquire::Retries=3 + sudo apt-get install -y -qq --no-install-recommends -o Acquire::Retries=3 nasm + nasm -v # Pinned to an exact release. `@v0` does not exist -- there is no moving # major tag on this action -- and referencing it fails to resolve, which is # why the copy this replaced never ran successfully once.