From d8f71776fffc7c98d82a58771b199a761d40cde1 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Mon, 6 Jun 2022 09:48:25 -0400 Subject: [PATCH 1/4] apple_sdk_11_0: fix build on x86_64-darwin and expose as attribute --- pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix | 4 ++-- pkgs/top-level/darwin-packages.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix index 228a084d250f..05340642f8d0 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix @@ -168,8 +168,8 @@ in rec { bareFrameworks = ( lib.mapAttrs framework (import ./frameworks.nix { inherit frameworks libs; - inherit (pkgs.darwin) libobjc Libsystem; - inherit (pkgs.darwin.apple_sdk) libnetwork; + inherit (pkgs.darwin.apple_sdk_11_0) libnetwork Libsystem; + libobjc = pkgs.darwin.apple_sdk_11_0.objc4; }) ) // ( lib.mapAttrs privateFramework (import ./private-frameworks.nix { diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index d6ee88bc4f5e..47dd47aedea6 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -70,7 +70,7 @@ in impure-cmds // appleSourcePackages // chooseLibs // { - inherit apple_sdk; + inherit apple_sdk apple_sdk_10_12 apple_sdk_11_0; stdenvNoCF = stdenv.override { extraBuildInputs = []; From 4741402d547773cc7d7f53814e65a3b81f23666c Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Tue, 7 Jun 2022 16:01:28 -0400 Subject: [PATCH 2/4] apple_sdk_11_0: expose 11.0 sdk stdenv as an attribute --- .../darwin/apple-sdk-11.0/default.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix index 44b119e1a23e..96ef3831c95d 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix @@ -1,4 +1,5 @@ { stdenvNoCC, fetchurl, newScope, pkgs +, stdenv, overrideCC , xar, cpio, python3, pbzx }: let @@ -54,5 +55,21 @@ let # questionable aliases configd = pkgs.darwin.apple_sdk.frameworks.SystemConfiguration; IOKit = pkgs.darwin.apple_sdk.frameworks.IOKit; + + stdenv = + let + clang = stdenv.cc.override { + bintools = stdenv.cc.bintools.override { libc = packages.Libsystem; }; + libc = packages.Libsystem; + }; + in + if stdenv.isAarch64 then stdenv + else + (overrideCC stdenv clang).override { + targetPlatform = stdenv.targetPlatform // { + darwinMinVersion = "10.12"; + darwinSdkVersion = "11.0"; + }; + }; }; in packages From 9659c7abcebb9fd36d0a8184681574268d8b9296 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Wed, 6 Jul 2022 19:40:34 -0400 Subject: [PATCH 3/4] apple_sdk_11_0: provide SDK-specific `callPackage` --- .../darwin/apple-sdk-11.0/default.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix index 96ef3831c95d..b29a36177a82 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix @@ -1,4 +1,4 @@ -{ stdenvNoCC, fetchurl, newScope, pkgs +{ stdenvNoCC, fetchurl, newScope, lib, pkgs , stdenv, overrideCC , xar, cpio, python3, pbzx }: @@ -56,6 +56,20 @@ let configd = pkgs.darwin.apple_sdk.frameworks.SystemConfiguration; IOKit = pkgs.darwin.apple_sdk.frameworks.IOKit; + callPackage = newScope (lib.optionalAttrs stdenv.isDarwin rec { + inherit (pkgs.darwin.apple_sdk_11_0) stdenv; + darwin = pkgs.darwin.overrideScope (_: prev: { + inherit (prev.darwin.apple_sdk_11_0) Libsystem LibsystemCross libcharset libunwind objc4 configd IOKit Security; + apple_sdk = prev.darwin.apple_sdk_11_0; + CF = prev.darwin.apple_sdk_11_0.CoreFoundation; + }); + xcodebuild = pkgs.xcbuild.override { + inherit (pkgs.darwin.apple_sdk_11_0.frameworks) CoreServices CoreGraphics ImageIO; + inherit stdenv; + }; + xcbuild = xcodebuild; + }); + stdenv = let clang = stdenv.cc.override { From 25ccd71ff83a1b6e961588ee65c9f18a7c8f0a92 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Tue, 7 Jun 2022 00:18:19 -0400 Subject: [PATCH 4/4] doc: update Darwin platform doc regarding the 11.0 SDK --- doc/stdenv/platform-notes.chapter.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/stdenv/platform-notes.chapter.md b/doc/stdenv/platform-notes.chapter.md index 03e61e333f8b..b47f5af349b8 100644 --- a/doc/stdenv/platform-notes.chapter.md +++ b/doc/stdenv/platform-notes.chapter.md @@ -60,3 +60,8 @@ Some common issues when packaging software for Darwin: ``` The package `xcbuild` can be used to build projects that really depend on Xcode. However, this replacement is not 100% compatible with Xcode and can occasionally cause issues. + +- x86_64-darwin uses the 10.12 SDK by default, but some software is not compatible with that version of the SDK. In that case, + the 11.0 SDK used by aarch64-darwin is available for use on x86_64-darwin. To use it, reference `apple_sdk_11_0` instead of + `apple_sdk` in your derivation and use `pkgs.darwin.apple_sdk_11_0.callPackage` instead of `pkgs.callPackage`. On Linux, this will + have the same effect as `pkgs.callPackage`, so you can use `pkgs.darwin.apple_sdk_11_0.callPackage` regardless of platform.