ci(release): switch matrix to x86_64-unknown-linux-gnu #20

Merged
mik-tf merged 1 commit from development_mik_home212_lib_rhai_gnu into development 2026-05-06 18:34:53 +00:00
Owner

Refs lhumina_code/home#212

Final pivot after 3 rcN attempts on musl. The persistent failure is libusb1-sys failing to find linux/magic.h under musl-gcc:

rusb v0.9.4 → libusb1-sys v0.7.0
  cargo:warning=fatal error: linux/magic.h: No such file or directory

Why musl can't work for this workspace

herolib_mos (one of the 14 herolib_* deps from hero_lib that hero_do and hero_runner_rhai expose via Rhai bindings) carries an unconditional rusb dep for USB device introspection, plus pci-info for PCI introspection. These pull a C build that needs linux kernel uapi headers — provided by linux-libc-dev/libc6-dev under glibc, but musl-gcc's bundled sysroot doesn't include them.

Why gnu is the right answer

Same architectural shape as D-05 (sessions 60-63) where ONNX-using services swapped musl→gnu because their native deps needed glibc dynamic linkage. hero_lib_rhai falls in the same bucket — different driver (USB/PCI introspection rather than ONNX runtime), same outcome.

Under gnu:

  • Compiler is plain gcc, which picks up linux-libc-dev headers shipped via build-essential on the runner image.
  • Runtime requires glibc on the target host, which every Linux box provides.
  • heroci already runs the D-05 ONNX services on this model — deploy story is identical.

Cost

One-line matrix change (musl → gnu) + sibling consumer suffix flip in lhumina_code/hero_skills#221 (which is still open and unmerged).

After merge

Update PR #221's suffix from x86_64-unknown-linux-musl to x86_64-unknown-linux-gnu before merging. Tag v0.1.0-rc5. Expected: 4 release assets <bin>-x86_64-unknown-linux-gnu.

Signed-off-by: mik-tf

Refs https://forge.ourworld.tf/lhumina_code/home/issues/212 Final pivot after 3 rcN attempts on musl. The persistent failure is `libusb1-sys` failing to find `linux/magic.h` under `musl-gcc`: ``` rusb v0.9.4 → libusb1-sys v0.7.0 cargo:warning=fatal error: linux/magic.h: No such file or directory ``` ## Why musl can't work for this workspace `herolib_mos` (one of the 14 `herolib_*` deps from hero_lib that `hero_do` and `hero_runner_rhai` expose via Rhai bindings) carries an unconditional `rusb` dep for USB device introspection, plus `pci-info` for PCI introspection. These pull a C build that needs linux kernel uapi headers — provided by `linux-libc-dev`/`libc6-dev` under glibc, but `musl-gcc`'s bundled sysroot doesn't include them. ## Why gnu is the right answer Same architectural shape as **D-05** (sessions 60-63) where ONNX-using services swapped `musl→gnu` because their native deps needed glibc dynamic linkage. `hero_lib_rhai` falls in the same bucket — different driver (USB/PCI introspection rather than ONNX runtime), same outcome. Under gnu: - Compiler is plain `gcc`, which picks up `linux-libc-dev` headers shipped via `build-essential` on the runner image. - Runtime requires glibc on the target host, which every Linux box provides. - heroci already runs the D-05 ONNX services on this model — deploy story is identical. ## Cost One-line matrix change (musl → gnu) + sibling consumer suffix flip in https://forge.ourworld.tf/lhumina_code/hero_skills/pulls/221 (which is still open and unmerged). ## After merge Update PR #221's suffix from `x86_64-unknown-linux-musl` to `x86_64-unknown-linux-gnu` before merging. Tag `v0.1.0-rc5`. Expected: 4 release assets `<bin>-x86_64-unknown-linux-gnu`. Signed-off-by: mik-tf
ci(release): switch matrix to x86_64-unknown-linux-gnu
Some checks failed
Tests / test-linux (pull_request) Failing after 26s
Lint / lint-linux (pull_request) Successful in 1m28s
027b617d5e
After 3 rcN attempts on musl, the persistent failure is libusb1-sys
unable to find linux/magic.h under musl-gcc:

  rusb v0.9.4 → libusb1-sys v0.7.0
    cargo:warning=fatal error: linux/magic.h: No such file or directory

`herolib_mos` (one of the 14 herolib_* deps from hero_lib that
hero_do/hero_runner_rhai expose via Rhai bindings) carries an
unconditional `rusb` dep for USB device introspection, plus
`pci-info` for PCI introspection. These pull a C build that needs
linux kernel uapi headers — provided by `linux-libc-dev`/`libc6-dev`
under glibc, but musl-gcc's bundled sysroot doesn't include them.

This is the same architectural shape as D-05 (sessions 60-63) where
ONNX-using services swapped musl→gnu because their native deps
needed glibc dynamic linkage. hero_lib_rhai is in the same bucket
just for a different reason: USB/PCI introspection vs ONNX runtime.

Glibc dynamic linkage is the right answer:

- Compiler is plain `gcc`, picks up linux-libc-dev headers shipped
  via build-essential on the runner image.
- Runtime requires glibc on the target host, which every Linux box
  provides.
- Heroci already runs the D-05 ONNX services on this same model, so
  the deploy story is identical.

Sibling consumer PR lhumina_code/hero_skills#221
needs the matching suffix flip from musl to gnu before it merges.

Refs lhumina_code/home#212

Signed-off-by: mik-tf
mik-tf merged commit 2f788c5b24 into development 2026-05-06 18:34:53 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_lib_rhai!20
No description provided.