From a6f3658ae918614eeb847e42dcd7e0afe0d54ca9 Mon Sep 17 00:00:00 2001 From: Archit Gupta Date: Sun, 21 Jan 2024 22:22:31 -0800 Subject: [PATCH] Make mocked pkgs not depend on overlay prev stdenvs Accessing some of the stdenvs would cause an infinite recursion. We can continue to rely on base stdenv and also bail if any field other than mkDerivation is used. All the stdenvs supported have a subset of the attrs of base stdenv, so this is safe. --- misc/nameMockedPkgs.nix | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/misc/nameMockedPkgs.nix b/misc/nameMockedPkgs.nix index 4d02780..065e7f2 100644 --- a/misc/nameMockedPkgs.nix +++ b/misc/nameMockedPkgs.nix @@ -17,7 +17,7 @@ let assert fargs != { }; f (mock // builtins.intersectAttrs fargs autoArgs // args); - mockStdenv = real: stdenv: real.${stdenv} or (throw "") // { + mockStdenv = builtins.mapAttrs (_: _: throw "") real.stdenv // { mkDerivation = args: if lib.isFunction args then lib.fix args else args; }; @@ -27,18 +27,18 @@ lib.fix (self: { callPackage = callPackageWith self; - stdenv = mockStdenv real "stdenv"; - stdenvNoCC = mockStdenv real "stdenvNoCC"; - stdenv_32bit = mockStdenv real "stdenv_32bit"; - stdenvNoLibs = mockStdenv real "stdenvNoLibs"; - libcxxStdenv = mockStdenv real "libcxxStdenv"; - gccStdenv = mockStdenv real "gccStdenv"; - gccStdenvNoLibs = mockStdenv real "gccStdenvNoLibs"; - gccMultiStdenv = mockStdenv real "gccMultiStdenv"; - clangStdenv = mockStdenv real "clangStdenv"; - clangStdenvNoLibs = mockStdenv real "clangStdenvNoLibs"; - clangMultiStdenv = mockStdenv real "clangMultiStdenv"; - ccacheStdenv = mockStdenv real "ccacheStdenv"; + stdenv = mockStdenv; + stdenvNoCC = mockStdenv; + stdenv_32bit = mockStdenv; + stdenvNoLibs = mockStdenv; + libcxxStdenv = mockStdenv; + gccStdenv = mockStdenv; + gccStdenvNoLibs = mockStdenv; + gccMultiStdenv = mockStdenv; + clangStdenv = mockStdenv; + clangStdenvNoLibs = mockStdenv; + clangMultiStdenv = mockStdenv; + ccacheStdenv = mockStdenv; runCommandWith = args: _: args; runCommand = name: _: _: { inherit name; };