From 3440df992e8ae2ae592b4359064765811e1ad2bd Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Tue, 31 Oct 2023 00:14:59 -0400 Subject: stdenvAdapters.overrideSDK: override xcodebuild to use the requested SDK --- pkgs/stdenv/adapters.nix | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'pkgs/stdenv') diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index a7985b474ed7..dd3dcfd6f3ac 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -323,8 +323,27 @@ rec { then sdk.frameworks."${framework}" else replacePropagatedFrameworks pkg; + mapRuntimeToSDK = pkg: + # Only remap xcbuild for now, which exports the SDK used to build it. + if pkg != null && lib.getName pkg == "xcodebuild" + then pkg.override { stdenv = overrideSDK stdenv { inherit darwinMinVersion darwinSdkVersion; }; } + else pkg; + mapInputsToSDK = inputs: args: - lib.genAttrs inputs (input: map mapPackageToSDK (args."${input}" or [ ])); + let + runsAtBuild = lib.flip lib.elem [ + "depsBuildBuild" + "depsBuildBuildPropagated" + "nativeBuildInputs" + "propagatedNativeBuildInputs" + "depsBuildTarget" + "depsBuildTargetPropagated" + ]; + atBuildInputs = lib.filter runsAtBuild inputs; + atRuntimeInputs = lib.subtractLists atBuildInputs inputs; + in + lib.genAttrs atRuntimeInputs (input: map mapPackageToSDK (args."${input}" or [ ])) + // lib.genAttrs atBuildInputs (input: map mapRuntimeToSDK (args."${input}" or [ ])); mkCC = cc: cc.override { bintools = cc.bintools.override { libc = sdk.Libsystem; }; @@ -343,6 +362,8 @@ rec { extraBuildInputs = [sdk.frameworks.CoreFoundation ]; mkDerivationFromStdenv = extendMkDerivationArgs old (mapInputsToSDK [ "buildInputs" + "nativeBuildInputs" + "propagatedNativeBuildInputs" ]); }); } -- cgit 1.4.1