From 7a25690d59104099255b4d512a0290686da26036 Mon Sep 17 00:00:00 2001 From: tamnd <1218621+tamnd@users.noreply.github.com> Date: Fri, 2 Oct 2026 18:50:27 +0700 Subject: [PATCH] Record the cost of allmodconfig and format the OOM check --- crates/gk/src/cell.rs | 6 +++++- docs/spec/13-open-questions.md | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/gk/src/cell.rs b/crates/gk/src/cell.rs index 6a158a5..c0266b7 100644 --- a/crates/gk/src/cell.rs +++ b/crates/gk/src/cell.rs @@ -1185,7 +1185,11 @@ mod tests { let log = dir.join("make.log"); std::fs::write(&log, " LD vmlinux.o\nmake[3]: *** [/src/scripts/Makefile.vmlinux_o:79: vmlinux.o] Error 137\nmake[2]: *** [/src/Makefile:1362: vmlinux_o] Error 2\n").unwrap(); assert!(killed(&log)); - std::fs::write(&log, "make[4]: *** [/src/scripts/Makefile.build:229: fs/x.o] Error 1\n").unwrap(); + std::fs::write( + &log, + "make[4]: *** [/src/scripts/Makefile.build:229: fs/x.o] Error 1\n", + ) + .unwrap(); assert!(!killed(&log)); assert!(!killed(&dir.join("missing.log"))); let _ = std::fs::remove_dir_all(&dir); diff --git a/docs/spec/13-open-questions.md b/docs/spec/13-open-questions.md index 1ae9a10..75ae87a 100644 --- a/docs/spec/13-open-questions.md +++ b/docs/spec/13-open-questions.md @@ -24,7 +24,7 @@ At G1 none of the three machines this repository runs on has `/dev/kvm`, so the **9. `CONFIG_WERROR` and arch `-Werror`.** The matrix builds with `CONFIG_WERROR=n`, but several architectures and directories have their own `-Werror` (sparc, powerpc's `PPC_WERROR`, alpha, mips, some drivers, objtool). A new warning therefore fails some platforms and not others with the same GCC. That is a real finding, and the L3w twin shows it, but it could also make tier 3 look worse than it is. Proposed: report it as is, with the class `new-warning-werror`, and never turn off an architecture's own `-Werror` (that would change the kernel, which 02.5 forbids). Settled by G4. -**10. `allmodconfig` on the Current set.** It exercises far more code than `defconfig`, and it is where most new-GCC breakages first show. It is also about ten times as expensive. Proposed: `allmodconfig` build-only on the Current set, the GCC 16 column and the newest two last points, x86_64 and arm64 only. Settled at G1, from its measured cost. +**10. `allmodconfig` on the Current set.** It exercises far more code than `defconfig`, and it is where most new-GCC breakages first show. It is also about ten times as expensive. Proposed: `allmodconfig` build-only on the Current set, the GCC 16 column and the newest two last points, x86_64 and arm64 only. Measured at G1 with 7.2.8 on x86_64 and gcc-16.2.0, on a shared 6 core machine with 11.7 GB: 26,633 compile units in 3 h 38 min, where `defconfig+gk` takes 12 to 43 min on the same machine depending on its load, so close to the ten times guessed. The build then did not finish. objtool on `vmlinux.o` grew past 3.5 GB while the machine was full, and the OOM killer stopped it. A killed build is now no verdict at all, instead of a failure charged to the GCC. Settled: `allmodconfig` stays build-only and out of the stripe. It runs on demand, on x86_64 and arm64, for the newest Current kernel and the GCC 16 column, and only on a host that has several GB free when the link starts. **11. Clang.** The question the user asked is about GCC, and rucc aims at GCC compatibility. A clang axis would reuse everything here: host environments, the ladder, the boot rig and the catalog. Proposed: out of scope. The design keeps `flavor` open, so a `clang` flavor column could be added later without changing the model. Not scheduled.