From e880ab5d1d5f03ab7d8bb3d24f146fa6e0c7b229 Mon Sep 17 00:00:00 2001 From: Jared Baur Date: Sun, 31 May 2026 09:15:38 -0700 Subject: [PATCH 1/2] requireFile: use stdenvNoCC When not using stdenvNoCC with a package-set setup for cross-compilation, the host platform's target triplet is added as a suffix to the derivation name, invalidating the requireFile FOD. Using stdenvNoCC prevents that due to some logic in `make-derivation.nix`, which more closely matches the behavior before switching to `extendMkDerivation`. (cherry picked from commit d2d149334a9874cb7db679a9ab88f9e206a696a5) --- pkgs/build-support/trivial-builders/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/trivial-builders/default.nix b/pkgs/build-support/trivial-builders/default.nix index 2174846b986c..b7aa72df8ba8 100644 --- a/pkgs/build-support/trivial-builders/default.nix +++ b/pkgs/build-support/trivial-builders/default.nix @@ -887,7 +887,7 @@ rec { # Docs in doc/build-helpers/fetchers.chapter.md # See https://nixos.org/manual/nixpkgs/unstable/#requirefile requireFile = lib.extendMkDerivation { - constructDrv = stdenv.mkDerivation; + constructDrv = stdenvNoCC.mkDerivation; excludeDrvArgNames = [ "hash" From 1c0d1c0323171aca0617aae821a67f47e0dab1cf Mon Sep 17 00:00:00 2001 From: Jared Baur Date: Mon, 1 Jun 2026 19:30:24 -0400 Subject: [PATCH 2/2] tests.trivial-builders: add requireFile test This asserts that the names of derivations created with requireFile are not influenced by differing package sets. (cherry picked from commit cdf24c1fec6c1ec68566b9879a065706d771fd2a) --- .../trivial-builders/test/default.nix | 1 + .../trivial-builders/test/requireFile.nix | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/build-support/trivial-builders/test/requireFile.nix diff --git a/pkgs/build-support/trivial-builders/test/default.nix b/pkgs/build-support/trivial-builders/test/default.nix index 836a29342168..e83a41a1cc7b 100644 --- a/pkgs/build-support/trivial-builders/test/default.nix +++ b/pkgs/build-support/trivial-builders/test/default.nix @@ -25,6 +25,7 @@ recurseIntoAttrs { symlinkJoin = recurseIntoAttrs (callPackage ./symlink-join.nix { }); overriding = callPackage ../test-overriding.nix { }; inherit references; + requireFile = callPackage ./requireFile.nix { }; writeCBin = callPackage ./writeCBin.nix { }; writeClosure-union = callPackage ./writeClosure-union.nix { inherit (references) samples; diff --git a/pkgs/build-support/trivial-builders/test/requireFile.nix b/pkgs/build-support/trivial-builders/test/requireFile.nix new file mode 100644 index 000000000000..da06e73646d1 --- /dev/null +++ b/pkgs/build-support/trivial-builders/test/requireFile.nix @@ -0,0 +1,22 @@ +{ + pkgsStatic, + lib, + requireFile, + emptyFile, +}: +let + name = "this-is-a-test"; + requireFileTest = + requireFile: + requireFile { + inherit name; + url = "this-is-a-test"; + hash = lib.fakeHash; + }; + requireFile-native = requireFileTest requireFile; + requireFile-static = requireFileTest pkgsStatic.requireFile; +in +assert lib.assertMsg ( + requireFile-native.name == name && requireFile-static.name == name +) "requireFile derivation name must be the same across different package sets"; +emptyFile