From a6cdefc9c738c8a99c916612e3ce0e44b5f107f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Wed, 26 Mar 2025 18:38:28 +0000 Subject: [PATCH] stdenv: fix withCFlags --- pkgs/stdenv/adapters.nix | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 54527f8412423..4535eae6165a5 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -412,11 +412,25 @@ rec { withCFlags = compilerFlags: stdenv: stdenv.override (old: { - mkDerivationFromStdenv = extendMkDerivationArgs old (args: { - env = (args.env or { }) // { - NIX_CFLAGS_COMPILE = toString (args.env.NIX_CFLAGS_COMPILE or "") + " ${toString compilerFlags}"; - }; - }); + mkDerivationFromStdenv = extendMkDerivationArgs old ( + args: + let + diff = + if (args ? env && args.env ? NIX_CFLAGS_COMPILE && builtins.isList args.env.NIX_CFLAGS_COMPILE) then + { env.NIX_CFLAGS_COMPILE = args.env.NIX_CFLAGS_COMPILE ++ compilerFlags; } + else if + (args ? env && args.env ? NIX_CFLAGS_COMPILE && builtins.isString args.env.NIX_CFLAGS_COMPILE) + then + { env.NIX_CFLAGS_COMPILE = args.env.NIX_CFLAGS_COMPILE + " ${toString compilerFlags}"; } + else if (args ? NIX_CFLAGS_COMPILE && builtins.isList args.NIX_CFLAGS_COMPILE) then + { NIX_CFLAGS_COMPILE = args.NIX_CFLAGS_COMPILE ++ compilerFlags; } + else if (args ? NIX_CFLAGS_COMPILE && builtins.isString args.NIX_CFLAGS_COMPILE) then + { NIX_CFLAGS_COMPILE = args.NIX_CFLAGS_COMPILE + " ${toString compilerFlags}"; } + else + { env.NIX_CFLAGS_COMPILE = toString compilerFlags; }; + in + lib.recursiveUpdate args diff + ); }); # Overriding the SDK changes the Darwin SDK used to build the package, which: