darwin.stdenv: add sdkRoot to extraNativeBuildInputs
Setting the SDK root by default allows `overrideSDK` to correctly set the SDK version when using a different SDK. It also allows the correct SDK version to be set when using an older deployment target. Not setting the correct SDK version can result in unexpected behavior at runtime. Examples: * Automatic dark mode switching requires linking against an SDK version of 10.14 or newer. With the current behavior, the only way to do this is by using a 10.14+ deployment target even when the application supports older platforms when build with a newer SDK. * MetalD3D checks that the system version is at least 14.0. The API it uses returns a compatibility version when the the SDK is older than 11.0, which causes it to display an error and terminate the application even when even when its requirements are all met.
This commit is contained in:
parent
f61e189ad3
commit
71c6ee9295
|
@ -135,9 +135,11 @@ let
|
||||||
hostPlatform = localSystem;
|
hostPlatform = localSystem;
|
||||||
targetPlatform = localSystem;
|
targetPlatform = localSystem;
|
||||||
|
|
||||||
inherit config extraNativeBuildInputs;
|
inherit config;
|
||||||
|
|
||||||
extraBuildInputs = [ prevStage.darwin.CF ];
|
extraBuildInputs = [ prevStage.darwin.CF ];
|
||||||
|
extraNativeBuildInputs = extraNativeBuildInputs
|
||||||
|
++ [ prevStage.darwin.apple_sdk.sdkRoot ];
|
||||||
|
|
||||||
preHook = lib.optionalString (!isBuiltByNixpkgsCompiler bash) ''
|
preHook = lib.optionalString (!isBuiltByNixpkgsCompiler bash) ''
|
||||||
# Don't patch #!/interpreter because it leads to retained
|
# Don't patch #!/interpreter because it leads to retained
|
||||||
|
@ -196,6 +198,7 @@ in
|
||||||
cpio = null;
|
cpio = null;
|
||||||
|
|
||||||
darwin = {
|
darwin = {
|
||||||
|
apple_sdk.sdkRoot = null;
|
||||||
binutils = null;
|
binutils = null;
|
||||||
binutils-unwrapped = null;
|
binutils-unwrapped = null;
|
||||||
cctools = null;
|
cctools = null;
|
||||||
|
@ -435,6 +438,10 @@ in
|
||||||
});
|
});
|
||||||
|
|
||||||
darwin = super.darwin.overrideScope (selfDarwin: superDarwin: {
|
darwin = super.darwin.overrideScope (selfDarwin: superDarwin: {
|
||||||
|
apple_sdk = superDarwin.apple_sdk // {
|
||||||
|
inherit (prevStage.darwin.apple_sdk) sdkRoot;
|
||||||
|
};
|
||||||
|
|
||||||
# Use this stage’s CF to build configd. It’s required but can’t be included in the stdenv.
|
# Use this stage’s CF to build configd. It’s required but can’t be included in the stdenv.
|
||||||
configd = superDarwin.configd.overrideAttrs (old: {
|
configd = superDarwin.configd.overrideAttrs (old: {
|
||||||
buildInputs = old.buildInputs or [ ] ++ [ self.darwin.CF ];
|
buildInputs = old.buildInputs or [ ] ++ [ self.darwin.CF ];
|
||||||
|
@ -558,9 +565,13 @@ in
|
||||||
|
|
||||||
darwin = super.darwin.overrideScope (_: superDarwin: {
|
darwin = super.darwin.overrideScope (_: superDarwin: {
|
||||||
inherit (prevStage.darwin)
|
inherit (prevStage.darwin)
|
||||||
CF Libsystem binutils-unwrapped cctools cctools-port configd darwin-stubs dyld
|
CF sdkRoot Libsystem binutils-unwrapped cctools cctools-port configd darwin-stubs dyld
|
||||||
launchd libclosure libdispatch libobjc locale objc4 postLinkSignHook
|
launchd libclosure libdispatch libobjc locale objc4 postLinkSignHook
|
||||||
print-reexports rewrite-tbd signingUtils sigtool;
|
print-reexports rewrite-tbd signingUtils sigtool;
|
||||||
|
|
||||||
|
apple_sdk = superDarwin.apple_sdk // {
|
||||||
|
inherit (prevStage.darwin.apple_sdk) sdkRoot;
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
llvmPackages = super.llvmPackages // (
|
llvmPackages = super.llvmPackages // (
|
||||||
|
@ -638,6 +649,10 @@ in
|
||||||
CF Libsystem configd darwin-stubs dyld launchd libclosure libdispatch libobjc
|
CF Libsystem configd darwin-stubs dyld launchd libclosure libdispatch libobjc
|
||||||
locale objc4 postLinkSignHook print-reexports rewrite-tbd signingUtils sigtool;
|
locale objc4 postLinkSignHook print-reexports rewrite-tbd signingUtils sigtool;
|
||||||
|
|
||||||
|
apple_sdk = superDarwin.apple_sdk // {
|
||||||
|
inherit (prevStage.darwin.apple_sdk) sdkRoot;
|
||||||
|
};
|
||||||
|
|
||||||
# Avoid building unnecessary Python dependencies due to building LLVM manpages.
|
# Avoid building unnecessary Python dependencies due to building LLVM manpages.
|
||||||
cctools-llvm = superDarwin.cctools-llvm.override { enableManpages = false; };
|
cctools-llvm = superDarwin.cctools-llvm.override { enableManpages = false; };
|
||||||
});
|
});
|
||||||
|
@ -735,6 +750,10 @@ in
|
||||||
inherit (prevStage.darwin)
|
inherit (prevStage.darwin)
|
||||||
CF binutils-unwrapped cctools configd darwin-stubs launchd libobjc libtapi locale
|
CF binutils-unwrapped cctools configd darwin-stubs launchd libobjc libtapi locale
|
||||||
objc4 print-reexports rewrite-tbd signingUtils sigtool;
|
objc4 print-reexports rewrite-tbd signingUtils sigtool;
|
||||||
|
|
||||||
|
apple_sdk = superDarwin.apple_sdk // {
|
||||||
|
inherit (prevStage.darwin.apple_sdk) sdkRoot;
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
llvmPackages = super.llvmPackages // (
|
llvmPackages = super.llvmPackages // (
|
||||||
|
@ -773,7 +792,7 @@ in
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
||||||
# This stage rebuilds CF and compiler-rt.
|
# This stage rebuilds CF, compiler-rt, and the sdkRoot derivation.
|
||||||
#
|
#
|
||||||
# CF requires:
|
# CF requires:
|
||||||
# - aarch64-darwin: libobjc (due to being apple_sdk.frameworks.CoreFoundation instead of swift-corefoundation)
|
# - aarch64-darwin: libobjc (due to being apple_sdk.frameworks.CoreFoundation instead of swift-corefoundation)
|
||||||
|
@ -958,6 +977,10 @@ in
|
||||||
CF Libsystem binutils binutils-unwrapped cctools cctools-llvm cctools-port configd
|
CF Libsystem binutils binutils-unwrapped cctools cctools-llvm cctools-port configd
|
||||||
darwin-stubs dyld launchd libclosure libdispatch libobjc libtapi locale objc4
|
darwin-stubs dyld launchd libclosure libdispatch libobjc libtapi locale objc4
|
||||||
postLinkSignHook print-reexports rewrite-tbd signingUtils sigtool;
|
postLinkSignHook print-reexports rewrite-tbd signingUtils sigtool;
|
||||||
|
|
||||||
|
apple_sdk = superDarwin.apple_sdk // {
|
||||||
|
inherit (prevStage.darwin.apple_sdk) sdkRoot;
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
llvmPackages = super.llvmPackages // (
|
llvmPackages = super.llvmPackages // (
|
||||||
|
@ -1036,6 +1059,10 @@ in
|
||||||
# CF dependencies - don’t rebuild them.
|
# CF dependencies - don’t rebuild them.
|
||||||
libobjc objc4;
|
libobjc objc4;
|
||||||
|
|
||||||
|
apple_sdk = superDarwin.apple_sdk // {
|
||||||
|
inherit (prevStage.darwin.apple_sdk) sdkRoot;
|
||||||
|
};
|
||||||
|
|
||||||
signingUtils = superDarwin.signingUtils.override {
|
signingUtils = superDarwin.signingUtils.override {
|
||||||
inherit (selfDarwin) sigtool;
|
inherit (selfDarwin) sigtool;
|
||||||
};
|
};
|
||||||
|
@ -1206,7 +1233,7 @@ in
|
||||||
|
|
||||||
extraNativeBuildInputs = lib.optionals localSystem.isAarch64 [
|
extraNativeBuildInputs = lib.optionals localSystem.isAarch64 [
|
||||||
prevStage.updateAutotoolsGnuConfigScriptsHook
|
prevStage.updateAutotoolsGnuConfigScriptsHook
|
||||||
];
|
] ++ [ prevStage.darwin.apple_sdk.sdkRoot ];
|
||||||
|
|
||||||
extraBuildInputs = [ prevStage.darwin.CF ];
|
extraBuildInputs = [ prevStage.darwin.CF ];
|
||||||
|
|
||||||
|
@ -1293,6 +1320,7 @@ in
|
||||||
dyld
|
dyld
|
||||||
libtapi
|
libtapi
|
||||||
locale
|
locale
|
||||||
|
apple_sdk.sdkRoot
|
||||||
]
|
]
|
||||||
++ lib.optional useAppleSDKLibs [ objc4 ]
|
++ lib.optional useAppleSDKLibs [ objc4 ]
|
||||||
++ lib.optionals doSign [ postLinkSignHook sigtool signingUtils ]);
|
++ lib.optionals doSign [ postLinkSignHook sigtool signingUtils ]);
|
||||||
|
@ -1307,9 +1335,13 @@ in
|
||||||
libunistring libxml2 libyaml ncurses nghttp2 openbsm openpam openssl patch pbzx
|
libunistring libxml2 libyaml ncurses nghttp2 openbsm openpam openssl patch pbzx
|
||||||
pcre python3Minimal xar xz zlib zstd;
|
pcre python3Minimal xar xz zlib zstd;
|
||||||
|
|
||||||
darwin = super.darwin.overrideScope (_: _: {
|
darwin = super.darwin.overrideScope (_: superDarwin: {
|
||||||
inherit (prevStage.darwin)
|
inherit (prevStage.darwin)
|
||||||
CF ICU Libsystem darwin-stubs dyld locale libobjc libtapi rewrite-tbd xnu;
|
CF ICU Libsystem darwin-stubs dyld locale libobjc libtapi rewrite-tbd xnu;
|
||||||
|
|
||||||
|
apple_sdk = superDarwin.apple_sdk // {
|
||||||
|
inherit (prevStage.darwin.apple_sdk) sdkRoot;
|
||||||
|
};
|
||||||
} // lib.optionalAttrs (super.stdenv.targetPlatform == localSystem) {
|
} // lib.optionalAttrs (super.stdenv.targetPlatform == localSystem) {
|
||||||
inherit (prevStage.darwin) binutils binutils-unwrapped cctools-llvm cctools-port;
|
inherit (prevStage.darwin) binutils binutils-unwrapped cctools-llvm cctools-port;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user