diff --git a/pkgs/os-specific/darwin/apple-sdk/sdkRoot.nix b/pkgs/os-specific/darwin/apple-sdk/sdkRoot.nix index 67d9cbe031059..01af2635cd805 100644 --- a/pkgs/os-specific/darwin/apple-sdk/sdkRoot.nix +++ b/pkgs/os-specific/darwin/apple-sdk/sdkRoot.nix @@ -41,18 +41,14 @@ runCommand "sdkroot-${sdkVersion}" { } '' install -D '${../../../build-support/setup-hooks/role.bash}' "$out/nix-support/setup-hook" cat >> "$out/nix-support/setup-hook" <<-hook - # - # See comments in cc-wrapper's setup hook. This works exactly the same way. - # - [[ -z \''${strictDeps-} ]] || (( "\$hostOffset" < 0 )) || return 0 - sdkRootHook() { # See ../../../build-support/setup-hooks/role.bash local role_post getHostRoleEnvHook # Only set the SDK root if one has not been set via this hook or some other means. - if [[ ! \$NIX_CFLAGS_COMPILE =~ isysroot ]]; then + local cflagsVar=NIX_CFLAGS_COMPILE\''${role_post} + if [[ ! \''${!cflagsVar} =~ isysroot ]]; then export NIX_CFLAGS_COMPILE\''${role_post}+=' -isysroot $out/${sdkName}.sdk' fi } @@ -60,9 +56,9 @@ runCommand "sdkroot-${sdkVersion}" { } '' # See ../../../build-support/setup-hooks/role.bash getTargetRole - addEnvHooks "\$targetOffset" sdkRootHook + addEnvHooks "\$hostOffset" sdkRootHook # No local scope in sourced file - unset -v role_post + unset -v cflagsVar role_post hook '' diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index 45cc6742c7205..27d31d5c410c4 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -138,9 +138,8 @@ let inherit config; - extraBuildInputs = [ prevStage.darwin.CF ]; - extraNativeBuildInputs = extraNativeBuildInputs - ++ [ prevStage.darwin.apple_sdk.sdkRoot ]; + extraBuildInputs = [ prevStage.darwin.CF prevStage.darwin.apple_sdk.sdkRoot ]; + extraNativeBuildInputs = extraNativeBuildInputs; preHook = lib.optionalString (!isBuiltByNixpkgsCompiler bash) '' # Don't patch #!/interpreter because it leads to retained @@ -671,7 +670,7 @@ in # libc++, and libc++abi do not need CoreFoundation. Avoid propagating the CF from prior # stages to the final stdenv via rpath by dropping it from `extraBuildInputs`. stdenvNoCF = self.stdenv.override { - extraBuildInputs = [ ]; + extraBuildInputs = [ prevStage.darwin.apple_sdk.sdkRoot ]; }; libcxxBootstrapStdenv = self.overrideCC stdenvNoCF (self.llvmPackages.clangNoCompilerRtWithLibc.override { @@ -885,7 +884,7 @@ in compiler-rt = superLib.compiler-rt.override ({ inherit (self.llvmPackages) libllvm; stdenv = self.stdenv.override { - extraBuildInputs = [ self.darwin.CF ]; + extraBuildInputs = [ self.darwin.CF prevStage.darwin.apple_sdk.sdkRoot ]; }; }); }); @@ -899,7 +898,7 @@ in stdenv = let stdenvNoCF = super.stdenv.override { - extraBuildInputs = [ ]; + extraBuildInputs = [ prevStage.darwin.apple_sdk.sdkRoot ]; }; in self.overrideCC stdenvNoCF (self.llvmPackages.clangNoCompilerRtWithLibc.override { @@ -1230,9 +1229,9 @@ in extraNativeBuildInputs = lib.optionals localSystem.isAarch64 [ prevStage.updateAutotoolsGnuConfigScriptsHook - ] ++ [ prevStage.darwin.apple_sdk.sdkRoot ]; + ]; - extraBuildInputs = [ prevStage.darwin.CF ]; + extraBuildInputs = [ prevStage.darwin.CF prevStage.darwin.apple_sdk.sdkRoot ]; inherit cc; diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index eef19ac6ef725..605ce172b002f 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -79,7 +79,7 @@ impure-cmds // appleSourcePackages // chooseLibs // { inherit apple_sdk apple_sdk_10_12 apple_sdk_11_0; stdenvNoCF = stdenv.override { - extraBuildInputs = []; + extraBuildInputs = [ apple_sdk.sdkRoot ]; }; binutils-unwrapped = callPackage ../os-specific/darwin/binutils {