From f6bbbded6dba37cb706a498f05d4e545f81b000e Mon Sep 17 00:00:00 2001 From: Ben Siraphob Date: Sun, 26 Apr 2026 09:35:52 -0700 Subject: [PATCH] minimal-bootstrap: trim configure flags and slim python Adds --enable-checking=release and --disable-{libgomp,libquadmath,libitm,libvtv,libssp,libatomic,libstdcxx-pch,nls} to all GCCs (those runtime libs are unused by the stdenv); switches gcc-4.6{,cxx} to install-strip; adds --disable-nls to binutils and coreutils; adds --disable-test-modules --without-ensurepip --without-static-libpython to python. Bootstrap self-size 1.45 GB -> 940 MB; gcc46-cxx -14%, glibc -10%, gcc-latest -6% wall on the heavy builds. (make -j was tried on tcc-built derivations and broke them silently; NOTE comments left in the affected files so this isn't re-attempted.) --- .../linux/minimal-bootstrap/binutils/default.nix | 1 + .../linux/minimal-bootstrap/binutils/static.nix | 1 + .../linux/minimal-bootstrap/coreutils/musl.nix | 1 + .../linux/minimal-bootstrap/coreutils/static.nix | 1 + pkgs/os-specific/linux/minimal-bootstrap/gawk/mes.nix | 1 + pkgs/os-specific/linux/minimal-bootstrap/gcc/10.nix | 9 +++++++++ pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.cxx.nix | 9 +++++++-- pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.nix | 4 +++- pkgs/os-specific/linux/minimal-bootstrap/gcc/glibc.nix | 9 +++++++++ pkgs/os-specific/linux/minimal-bootstrap/gcc/latest.nix | 9 +++++++++ .../linux/minimal-bootstrap/gnugrep/default.nix | 1 + .../os-specific/linux/minimal-bootstrap/gnumake/musl.nix | 1 + .../linux/minimal-bootstrap/gnused/default.nix | 1 + pkgs/os-specific/linux/minimal-bootstrap/gnutar/mes.nix | 1 + pkgs/os-specific/linux/minimal-bootstrap/gnutar/musl.nix | 1 + .../os-specific/linux/minimal-bootstrap/gzip/default.nix | 1 + pkgs/os-specific/linux/minimal-bootstrap/musl/tcc.nix | 1 + .../linux/minimal-bootstrap/python/default.nix | 5 ++++- 18 files changed, 53 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/minimal-bootstrap/binutils/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/binutils/default.nix index dd69efc0c641..23de39257f0a 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/binutils/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/binutils/default.nix @@ -40,6 +40,7 @@ let "--host=${hostPlatform.config}" "--with-sysroot=/" "--disable-dependency-tracking" + "--disable-nls" "--enable-deterministic-archives" # depends on bison "--disable-gprofng" diff --git a/pkgs/os-specific/linux/minimal-bootstrap/binutils/static.nix b/pkgs/os-specific/linux/minimal-bootstrap/binutils/static.nix index 7f2405585a56..fe772c8809ea 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/binutils/static.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/binutils/static.nix @@ -40,6 +40,7 @@ let "--host=${hostPlatform.config}" "--disable-dependency-tracking" + "--disable-nls" "--with-sysroot=/" "--enable-deterministic-archives" diff --git a/pkgs/os-specific/linux/minimal-bootstrap/coreutils/musl.nix b/pkgs/os-specific/linux/minimal-bootstrap/coreutils/musl.nix index 67db13d4f823..39651cabbac2 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/coreutils/musl.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/coreutils/musl.nix @@ -27,6 +27,7 @@ let "--build=${buildPlatform.config}" "--host=${hostPlatform.config}" "--disable-dependency-tracking" + "--disable-nls" # libstdbuf.so fails in static builds "--enable-no-install-program=stdbuf,arch,coreutils,hostname" # Disable PATH_MAX for better reproducibility diff --git a/pkgs/os-specific/linux/minimal-bootstrap/coreutils/static.nix b/pkgs/os-specific/linux/minimal-bootstrap/coreutils/static.nix index 8d3ba02fb357..c7ef7770b188 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/coreutils/static.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/coreutils/static.nix @@ -32,6 +32,7 @@ let "--build=${buildPlatform.config}" "--host=${hostPlatform.config}" "--disable-dependency-tracking" + "--disable-nls" # libstdbuf.so fails in static builds "--enable-no-install-program=stdbuf" "--enable-single-binary=symlinks" diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gawk/mes.nix b/pkgs/os-specific/linux/minimal-bootstrap/gawk/mes.nix index cbe4da046058..c38f3501462c 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gawk/mes.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gawk/mes.nix @@ -67,6 +67,7 @@ bash.runCommand "${pname}-${version}" --prefix=$out # Build + # NOTE: parallel build (-j) breaks gawk autoconf'd Makefile under tcc-mes; keep serial. make gawk # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gcc/10.nix b/pkgs/os-specific/linux/minimal-bootstrap/gcc/10.nix index 2823fdc10050..090b939acd7f 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gcc/10.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gcc/10.nix @@ -139,12 +139,21 @@ bash.runCommand "${pname}-${version}" --with-native-system-header-dir=/include \ --with-sysroot=${musl} \ --enable-languages=c,c++ \ + --enable-checking=release \ --disable-bootstrap \ --disable-dependency-tracking \ --disable-libmpx \ --disable-libsanitizer \ + --disable-libssp \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libitm \ + --disable-libvtv \ + --disable-libatomic \ + --disable-libstdcxx-pch \ --disable-lto \ --disable-multilib \ + --disable-nls \ --disable-plugin # Build diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.cxx.nix b/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.cxx.nix index 7404bc4e9c24..0f442367f72f 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.cxx.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.cxx.nix @@ -142,16 +142,21 @@ bash.runCommand "${pname}-${version}" --with-native-system-header-dir=${musl}/include \ --with-build-sysroot=${musl} \ --enable-languages=c,c++ \ + --enable-checking=release \ --disable-bootstrap \ --disable-dependency-tracking \ + --disable-libgomp \ --disable-libmudflap \ + --disable-libquadmath \ + --disable-libssp \ --disable-libstdcxx-pch \ --disable-lto \ - --disable-multilib + --disable-multilib \ + --disable-nls # Build make -j $NIX_BUILD_CORES # Install - make -j $NIX_BUILD_CORES install + make -j $NIX_BUILD_CORES install-strip '' diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.nix b/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.nix index 7814fc9b1bc1..d9c37f5a0562 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.nix @@ -124,6 +124,7 @@ bash.runCommand "${pname}-${version}" --host=${fakeHostPlatform} \ --with-native-system-header-dir=${tinycc.libs}/include \ --with-build-sysroot=${tinycc.libs}/include \ + --enable-checking=release \ --disable-bootstrap \ --disable-decimal-float \ --disable-dependency-tracking \ @@ -139,6 +140,7 @@ bash.runCommand "${pname}-${version}" --disable-lto \ --disable-lto-plugin \ --disable-multilib \ + --disable-nls \ --disable-plugin \ --disable-threads \ --enable-languages=c \ @@ -152,5 +154,5 @@ bash.runCommand "${pname}-${version}" make -j $NIX_BUILD_CORES # Install - make -j $NIX_BUILD_CORES install + make -j $NIX_BUILD_CORES install-strip '' diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gcc/glibc.nix b/pkgs/os-specific/linux/minimal-bootstrap/gcc/glibc.nix index b91f1af133d5..e099469357cd 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gcc/glibc.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gcc/glibc.nix @@ -133,11 +133,20 @@ bash.runCommand "${pname}-${version}" --host=${hostPlatform.config} \ --with-native-system-header-dir=${glibc}/include \ --enable-languages=c,c++ \ + --enable-checking=release \ --disable-bootstrap \ --disable-dependency-tracking \ --disable-libsanitizer \ + --disable-libssp \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libitm \ + --disable-libvtv \ + --disable-libatomic \ + --disable-libstdcxx-pch \ --disable-lto \ --disable-multilib \ + --disable-nls \ --disable-plugin \ --with-specs="%x{-dynamic-linker=${glibc}/lib/${linkerName}} %x{-L${glibc}/lib/} -B${glibc}/lib" diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gcc/latest.nix b/pkgs/os-specific/linux/minimal-bootstrap/gcc/latest.nix index 3eb77a635a20..3a4fac6fd138 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gcc/latest.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gcc/latest.nix @@ -134,11 +134,20 @@ bash.runCommand "${pname}-${version}" --with-native-system-header-dir=/include \ --with-sysroot=${musl} \ --enable-languages=c,c++ \ + --enable-checking=release \ --disable-bootstrap \ --disable-dependency-tracking \ --disable-libsanitizer \ + --disable-libssp \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libitm \ + --disable-libvtv \ + --disable-libatomic \ + --disable-libstdcxx-pch \ --disable-lto \ --disable-multilib \ + --disable-nls \ --disable-plugin # Build diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gnugrep/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/gnugrep/default.nix index 944f11e4e639..5534fa043044 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gnugrep/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gnugrep/default.nix @@ -50,6 +50,7 @@ bash.runCommand "${pname}-${version}" cp ${./main.mk} Makefile # Build + # NOTE: parallel build (-j) breaks custom Makefile here; keep serial. make CC="tcc -B ${tinycc.libs}/lib" # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gnumake/musl.nix b/pkgs/os-specific/linux/minimal-bootstrap/gnumake/musl.nix index 073e5a29f6f0..1913ce85927b 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gnumake/musl.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gnumake/musl.nix @@ -72,6 +72,7 @@ bash.runCommand "${pname}-${version}" --disable-dependency-tracking # Build + # NOTE: parallel build (-j) under tcc-musl is unstable; keep serial. make AR="tcc -ar" # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gnused/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/gnused/default.nix index c25aea845b58..267f1f12dd20 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gnused/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gnused/default.nix @@ -65,6 +65,7 @@ bash.runCommand "${pname}-${version}" --prefix=$out # Build + # NOTE: parallel build (-j) under tcc-musl is unstable; keep serial. make AR="tcc -ar" # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gnutar/mes.nix b/pkgs/os-specific/linux/minimal-bootstrap/gnutar/mes.nix index 1200904a87ac..2580347d7102 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gnutar/mes.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gnutar/mes.nix @@ -55,6 +55,7 @@ bash.runCommand "${pname}-${version}" --prefix=$out # Build + # NOTE: parallel build (-j) breaks gnutar build under tcc-mes; keep serial. make AR="tcc -ar" # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gnutar/musl.nix b/pkgs/os-specific/linux/minimal-bootstrap/gnutar/musl.nix index d450cf1ef92a..c3e967ebe53d 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gnutar/musl.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gnutar/musl.nix @@ -60,6 +60,7 @@ bash.runCommand "${pname}-${version}" --disable-nls # Build + # NOTE: parallel build (-j) under tcc-musl is unstable; keep serial. make AR="tcc -ar" # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/gzip/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/gzip/default.nix index ccadfb2796c8..bfc36fb6714f 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/gzip/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/gzip/default.nix @@ -55,6 +55,7 @@ bash.runCommand "${pname}-${version}" --disable-dependency-tracking # Build + # NOTE: parallel build (-j) under tinycc-bootstrappable is unstable; keep serial. make # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/musl/tcc.nix b/pkgs/os-specific/linux/minimal-bootstrap/musl/tcc.nix index 0c379fee1509..a95d50c2b7f4 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/musl/tcc.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/musl/tcc.nix @@ -88,6 +88,7 @@ bash.runCommand "${pname}-${version}" CC=tcc # Build + # NOTE: parallel build (-j) under tcc here is unstable and broke a previous run. make AR="tcc -ar" RANLIB=true CFLAGS="-DSYSCALL_NO_TLS" # Install diff --git a/pkgs/os-specific/linux/minimal-bootstrap/python/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/python/default.nix index 22adb467efc0..15d39dfae116 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/python/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/python/default.nix @@ -88,7 +88,10 @@ bash.runCommand "${pname}-${version}" bash ./configure \ --prefix=$out \ --build=${buildPlatform.config} \ - --host=${hostPlatform.config} + --host=${hostPlatform.config} \ + --disable-test-modules \ + --without-ensurepip \ + --without-static-libpython # Build make -j $NIX_BUILD_CORES