f8b0c548

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

build: force gnu ABI for vendored zig build under Nix sandbox

`nix flake check` failed compiling the vendored Zig `simdutf` library with
`'bits/alltypes.h' file not found`, preceded by Zig's
`Encountered error: FileNotFound, falling back to default ABI and dynamic
linker.`

`build.rs` only passes `-Dtarget` to `zig build` when cross-compiling; for
native builds it relies on Zig's host detection. That detection probes the
host dynamic linker, which the Nix sandbox hides, so Zig falls back to a
libc whose headers are not on the include path and the C++ compile fails.
The build works on a developer machine (no sandbox) but never inside a
sandboxed Nix builder, which is what NixCI runs.

Add an optional `LIBGHOSTTY_VT_SYS_ZIG_TARGET` override that, when set, is
passed straight through as `-Dtarget`, bypassing native detection. Outside
Nix the variable is unset and native auto-detection is unchanged. The flake
sets it to `native-native-gnu` for Linux builds (keeping native arch/os/cpu
while forcing the gnu ABI).

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 15s 1s 1s 16s 15s
Eval 16s 31s 31s 48s 0s
Build 2h47m58s 8s 8s 2h48m07s 2h47m10s
Suite 15s 41s 2h47m52s 2h48m07s 2h47m25s

Timeline

0s20s30s40s2h48m