summary refs log tree commit diff
path: root/pkgs/stdenv/adapters.nix
diff options
context:
space:
mode:
authorRandy Eckenrode <randy@largeandhighquality.com>2023-10-31 00:14:59 -0400
committerRandy Eckenrode <randy@largeandhighquality.com>2023-10-31 00:18:54 -0400
commit3440df992e8ae2ae592b4359064765811e1ad2bd (patch)
tree00002c2cb57261c79d282368c51de158bb38bf15 /pkgs/stdenv/adapters.nix
parent1c1ce083f7d97e72dc11e8a127091f2f9ddebd7f (diff)
downloadnixpkgs-3440df992e8ae2ae592b4359064765811e1ad2bd.tar
nixpkgs-3440df992e8ae2ae592b4359064765811e1ad2bd.tar.gz
nixpkgs-3440df992e8ae2ae592b4359064765811e1ad2bd.tar.bz2
nixpkgs-3440df992e8ae2ae592b4359064765811e1ad2bd.tar.lz
nixpkgs-3440df992e8ae2ae592b4359064765811e1ad2bd.tar.xz
nixpkgs-3440df992e8ae2ae592b4359064765811e1ad2bd.tar.zst
nixpkgs-3440df992e8ae2ae592b4359064765811e1ad2bd.zip
stdenvAdapters.overrideSDK: override xcodebuild to use the requested SDK
Diffstat (limited to 'pkgs/stdenv/adapters.nix')
-rw-r--r--pkgs/stdenv/adapters.nix23
1 files changed, 22 insertions, 1 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index a7985b474ed..dd3dcfd6f3a 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"
       ]);
     });
 }