mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-30 23:05:17 +00:00
2a4551f05c
xcat-dep-ubuntu-cd build 83 failed in its riscv64 branch. The goconserver build for jammy, noble and resolute each ran the full 9000s budget and produced no deb. The stall report found the Go processes parked in futex_wait, two of the three cells with no CPU ticks at all during the sample. riscv64 has no build host, so its chroot runs on the amd64 agent under qemu-user. goconserver/sbuild.pl installed the Go toolchain for the chroot architecture, so the compiler itself ran emulated, and `go build` did not return. The EL builder already avoids this: goconserver/mockbuild.pl cross-compiles for a forcearch target rather than running the toolchain in the emulated chroot. sbuild.pl now stamps the build host architecture into the build script and fetches the toolchain for that architecture, then sets GOARCH to the chroot architecture. A Go toolchain is statically linked, so the host one runs inside the foreign chroot, and goconserver is CGO-free, so it cross-compiles. The toolchain also unpacks into the build tree instead of overwriting /usr/local/go. A native cell is unchanged: host and target agree, and GOARCH names the architecture it already used. t/goconserver_cross_build.t covers this and fails without the change: the toolchain was fetched for riscv64 and `go build` ran with GOARCH unset. Measured on xcat-master-ub, jammy riscv64: 380s, against a 9000s budget the emulated build exhausted. The deb carries statically linked RISC-V binaries that run under binfmt. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>