ci: the emulated vector and SME legs bring their own emulator #674
Merged
dcharlot
merged 1 commit from 2026-11-06 13:50:54 -05:00
ci/quantum-emulator-in-job into main 2026-11-06
ci: the emulated vector and SME legs bring their own emulator
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 8s
standards workspaces build + test / macOS energy backends (pull_request) Has been skipped
wai-quantum matrix-extension member / does this change touch it (pull_request) Successful in 7s
wai-quantum CPU vector units / does this change touch it (pull_request) Successful in 7s
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Successful in 18s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m9s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 20s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 31s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 7s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 25s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 40s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 1m28s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 1m29s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 29s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 13s
The vector unit's sve and rvv legs and the matrix extension's emulated leg ran their aarch64 and riscv64 test binaries directly (cargo's runner set to env), so the host's binfmt handler ran them. Whether that worked depended on which `linux` runner claimed the leg: one without a handler ran the binary as a shell script and failed (a new x86_64 runner failed 4 of 4 such legs on 6 Nov, main's own SME run among them), and the hosts that have one run different versions (8.2.2 on some, 10.2.1 on another) while every certificate said 8.2.2. - Each emulated leg fetches Debian's static QEMU 10.0.13 (qemu-user, SHA-256 pinned; snapshot.debian.org by SHA-1 if the pool has moved on), once per host into the workflow's cache under the lock it already holds, and names it as cargo's runner with -L to the image's sysroot. QEMU_CPU, the vector length and RVV settings, is passed as before. - A preflight builds a trivial program for the target and runs it the way cargo will; an emulator that cannot run it, or a program that does not report the target's machine, fails the leg there with a message saying so. - The certificates name the emulator that ran: qemu-user 10.0.13 (Debian's static build, run by the job). The image's own emulators (5.1, 6.1) are not used, as before. Co-Authored-By: Claude Opus 5.5 <[email protected]>