ci: the emulated vector and SME legs bring their own emulator #674

Merged
dcharlot merged 1 commit from ci/quantum-emulator-in-job into main 2026-11-06 13:50:54 -05:00

2026-11-06

Transaction Science
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]>
2026-11-06 08:44:46 -05:00