From 44b893a9f02dc5b609701b202bda3042cadca679 Mon Sep 17 00:00:00 2001 From: Colin Date: Sun, 25 Jan 2026 06:25:12 +0000 Subject: [PATCH] gnu-config: enable strictDeps it would be as simple as setting `strictDeps = true` and `buildInputs = [ bashNonInteractive ]` except this package is used during the bootstrap of `stdenv`: this method of manually patching seems to be the least complex way to get correct behavior while avoiding cyclic when deriving `stdenv` itself. successfully built the following, from x86_64-linux: - `gnu-config` - `pkgsCross.aarch64-multiplatform.buildPackages.gnu-config` (equivalent) - `pkgsCross.aarch64-multiplatform.gnu-config` - `pkgsCross.musl32.gnu-config` - `pkgsMusl.gnu-config` - `pkgsStatic.gnu-config` - `pkgsi686Linux.gnu-config` successfully eval'd `gnu-config` for the following systems: - `aarch64-darwin` - `aarch64-freebsd` - `aarch64-linux-musl` - `aarch64-linux` - `x86_64-cygwin` - `x86_64-darwin` - `x86_64-freebsd` - `x86_64-linux-musl` - `x86_64-linux` --- pkgs/by-name/gn/gnu-config/package.nix | 14 ++++++++++++++ pkgs/stdenv/darwin/default.nix | 2 +- pkgs/stdenv/linux/default.nix | 2 +- pkgs/top-level/all-packages.nix | 4 +++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/gn/gnu-config/package.nix b/pkgs/by-name/gn/gnu-config/package.nix index cbabe904f349..bb0a3d799e04 100644 --- a/pkgs/by-name/gn/gnu-config/package.nix +++ b/pkgs/by-name/gn/gnu-config/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchurl, + runtimeShell, }: # Note: this package is used for bootstrapping fetchurl, and thus @@ -53,6 +54,19 @@ stdenv.mkDerivation { runHook postInstall ''; + fixupPhase = '' + runHook preFixup + if [[ -z "''${dontPatchShebangs-}" ]]; then + substituteInPlace $out/config.guess \ + --replace-fail '#! /bin/sh' '#!${runtimeShell}' + substituteInPlace $out/config.sub \ + --replace-fail '#! /bin/sh' '#!${runtimeShell}' + fi + runHook postFixup + ''; + + strictDeps = true; + meta = { description = "Attempt to guess a canonical system name"; homepage = "https://savannah.gnu.org/projects/config"; diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index 1953e582369d..385a315f9c87 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -1069,7 +1069,7 @@ assert bootstrapTools.passthru.isFromBootstrapFiles or false; # sanity check ) ++ lib.optionals localSystem.isAarch64 [ prevStage.updateAutotoolsGnuConfigScriptsHook - prevStage.gnu-config + prevStage.updateAutotoolsGnuConfigScriptsHook.gnu_config ] ++ lib.optionals localSystem.isx86_64 [ prevStage.darwin.Csu ] ++ (with prevStage.darwin; [ diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 6881718eb362..3775814c9ece 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -875,7 +875,7 @@ assert bootstrapTools.passthru.isFromBootstrapFiles or false; # sanity check ++ lib.optionals (localSystem.libc == "musl") [ fortify-headers ] ++ [ prevStage.updateAutotoolsGnuConfigScriptsHook - prevStage.gnu-config + prevStage.updateAutotoolsGnuConfigScriptsHook.gnu_config ] ++ [ gcc-unwrapped.gmp diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1e0f6e2e0c6a..96fe004f6d55 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -287,7 +287,9 @@ with pkgs; updateAutotoolsGnuConfigScriptsHook = makeSetupHook { name = "update-autotools-gnu-config-scripts-hook"; substitutions = { - gnu_config = gnu-config; + gnu_config = gnu-config.override { + runtimeShell = targetPackages.stdenv.shell; + }; }; } ../build-support/setup-hooks/update-autotools-gnu-config-scripts.sh;