From 68648fa4c01e5b9f9b91cf0235652bbaec154926 Mon Sep 17 00:00:00 2001 From: Malo Bourgon Date: Sat, 4 Mar 2023 10:34:01 +1100 Subject: [PATCH 1/4] darwin.apple_sdk_11_0.clang{12-15}Stdenv: init --- .../darwin/apple-sdk-11.0/default.nix | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) 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 145c98496b49..df707e2b6e26 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix @@ -56,9 +56,32 @@ let ''; }; + mkStdenv = stdenv: + let + cc = stdenv.cc.override { + bintools = stdenv.cc.bintools.override { libc = packages.Libsystem; }; + libc = packages.Libsystem; + }; + in + if stdenv.isAarch64 then stdenv + else + (overrideCC stdenv cc).override { + targetPlatform = stdenv.targetPlatform // { + darwinMinVersion = "10.12"; + darwinSdkVersion = "11.0"; + }; + }; + + stdenvs = { + stdenv = mkStdenv stdenv; + } // builtins.listToAttrs (map + (v: { name = "clang${v}Stdenv"; value = mkStdenv pkgs."llvmPackages_${v}".stdenv; }) + [ "12" "13" "14" "15" ] + ); + callPackage = newScope (packages // pkgs.darwin // { inherit MacOSX-SDK; }); - packages = { + packages = stdenvs // { inherit (callPackage ./apple_sdk.nix {}) frameworks libs; # TODO: this is nice to be private. is it worth the callPackage above? @@ -89,30 +112,14 @@ let inherit (pkgs) rustc cargo; }; - callPackage = newScope (lib.optionalAttrs stdenv.isDarwin rec { - inherit (pkgs.darwin.apple_sdk_11_0) stdenv xcodebuild rustPlatform; + callPackage = newScope (lib.optionalAttrs stdenv.isDarwin (stdenvs // rec { + inherit (pkgs.darwin.apple_sdk_11_0) xcodebuild rustPlatform; 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; }); xcbuild = xcodebuild; - }); - - 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 7a734f279523d08b5eec75a8a60d24438dbbe5cc Mon Sep 17 00:00:00 2001 From: Malo Bourgon Date: Sat, 4 Mar 2023 10:35:20 +1100 Subject: [PATCH 2/4] darwin.apple_sdk_11_0: code cleanup --- .../darwin/apple-sdk-11.0/default.nix | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) 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 df707e2b6e26..8c9e16a6ca9a 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix @@ -82,25 +82,25 @@ let callPackage = newScope (packages // pkgs.darwin // { inherit MacOSX-SDK; }); packages = stdenvs // { - inherit (callPackage ./apple_sdk.nix {}) frameworks libs; + inherit (callPackage ./apple_sdk.nix { }) frameworks libs; # TODO: this is nice to be private. is it worth the callPackage above? # Probably, I don't think that callPackage costs much at all. inherit MacOSX-SDK CLTools_Executables; - Libsystem = callPackage ./libSystem.nix {}; + Libsystem = callPackage ./libSystem.nix { }; LibsystemCross = pkgs.darwin.Libsystem; - libcharset = callPackage ./libcharset.nix {}; - libunwind = callPackage ./libunwind.nix {}; - libnetwork = callPackage ./libnetwork.nix {}; - libpm = callPackage ./libpm.nix {}; + libcharset = callPackage ./libcharset.nix { }; + libunwind = callPackage ./libunwind.nix { }; + libnetwork = callPackage ./libnetwork.nix { }; + libpm = callPackage ./libpm.nix { }; # Avoid introducing a new objc4 if stdenv already has one, to prevent # conflicting LLVM modules. - objc4 = if stdenv ? objc4 then stdenv.objc4 else callPackage ./libobjc.nix {}; + objc4 = stdenv.objc4 or (callPackage ./libobjc.nix { }); # questionable aliases configd = pkgs.darwin.apple_sdk.frameworks.SystemConfiguration; - IOKit = pkgs.darwin.apple_sdk.frameworks.IOKit; + inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; xcodebuild = pkgs.xcbuild.override { inherit (pkgs.darwin.apple_sdk_11_0) stdenv; @@ -115,7 +115,16 @@ let callPackage = newScope (lib.optionalAttrs stdenv.isDarwin (stdenvs // rec { inherit (pkgs.darwin.apple_sdk_11_0) xcodebuild rustPlatform; darwin = pkgs.darwin.overrideScope (_: prev: { - inherit (prev.darwin.apple_sdk_11_0) Libsystem LibsystemCross libcharset libunwind objc4 configd IOKit Security; + inherit (prev.darwin.apple_sdk_11_0) + IOKit + Libsystem + LibsystemCross + Security + configd + libcharset + libunwind + objc4 + ; apple_sdk = prev.darwin.apple_sdk_11_0; CF = prev.darwin.apple_sdk_11_0.CoreFoundation; }); From b7391c695b8c29e046445cc1953c7380ae36eb66 Mon Sep 17 00:00:00 2001 From: Malo Bourgon Date: Sat, 4 Mar 2023 10:36:28 +1100 Subject: [PATCH 3/4] signalbackup-tools: unbreak on Darwin systems --- .../signalbackup-tools/default.nix | 9 ++++++--- .../fix-build-darwin-clang14.patch | 13 +++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch diff --git a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix index c3b9caf9ab4b..643bc76c332d 100644 --- a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix +++ b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix @@ -1,6 +1,6 @@ -{ lib, stdenv, fetchFromGitHub, openssl, sqlite }: +{ lib, stdenv, clang14Stdenv, fetchFromGitHub, openssl, sqlite }: -stdenv.mkDerivation rec { +(if stdenv.isDarwin then clang14Stdenv else stdenv).mkDerivation rec { pname = "signalbackup-tools"; version = "20230223-1"; @@ -11,6 +11,10 @@ stdenv.mkDerivation rec { hash = "sha256-tBjMg+aYXmIhS2tw+D5NkBieWKiWwEVBWs6LA3rFaQQ="; }; + patches = [ + ./fix-build-darwin-clang14.patch + ]; + postPatch = '' patchShebangs BUILDSCRIPT_MULTIPROC.bash44 ''; @@ -36,6 +40,5 @@ stdenv.mkDerivation rec { license = licenses.gpl3Only; maintainers = [ maintainers.malo ]; platforms = platforms.all; - broken = stdenv.isDarwin; }; } diff --git a/pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch b/pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch new file mode 100644 index 000000000000..564d91fe97a7 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch @@ -0,0 +1,13 @@ +diff --git a/signalbackup/signalbackup.h b/signalbackup/signalbackup.h +index e9fc3fb..a620571 100644 +--- a/signalbackup/signalbackup.h ++++ b/signalbackup/signalbackup.h +@@ -148,7 +148,7 @@ class SignalBackup + std::string pre; + std::string replacement; + std::string post; +- bool operator<(Range const &other) ++ bool operator<(Range const &other) const + { + return (start < other.start) || + (start == other.start && start + length < other.start + other.length) || From 919dd0892c74a6cbca47000182909766d8380385 Mon Sep 17 00:00:00 2001 From: Malo Bourgon Date: Sun, 5 Mar 2023 11:55:27 +1100 Subject: [PATCH 4/4] signalbackup-tools: 20230223-1 -> 20230304-3 --- .../signalbackup-tools/default.nix | 8 ++------ .../fix-build-darwin-clang14.patch | 13 ------------- 2 files changed, 2 insertions(+), 19 deletions(-) delete mode 100644 pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch diff --git a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix index 643bc76c332d..3793b3a66868 100644 --- a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix +++ b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix @@ -2,19 +2,15 @@ (if stdenv.isDarwin then clang14Stdenv else stdenv).mkDerivation rec { pname = "signalbackup-tools"; - version = "20230223-1"; + version = "20230304-3"; src = fetchFromGitHub { owner = "bepaald"; repo = pname; rev = version; - hash = "sha256-tBjMg+aYXmIhS2tw+D5NkBieWKiWwEVBWs6LA3rFaQQ="; + hash = "sha256-y6ApImUkS25kUPih/hl1ngLAkeBAX+MhJ6XuiVU9aZQ="; }; - patches = [ - ./fix-build-darwin-clang14.patch - ]; - postPatch = '' patchShebangs BUILDSCRIPT_MULTIPROC.bash44 ''; diff --git a/pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch b/pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch deleted file mode 100644 index 564d91fe97a7..000000000000 --- a/pkgs/applications/networking/instant-messengers/signalbackup-tools/fix-build-darwin-clang14.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/signalbackup/signalbackup.h b/signalbackup/signalbackup.h -index e9fc3fb..a620571 100644 ---- a/signalbackup/signalbackup.h -+++ b/signalbackup/signalbackup.h -@@ -148,7 +148,7 @@ class SignalBackup - std::string pre; - std::string replacement; - std::string post; -- bool operator<(Range const &other) -+ bool operator<(Range const &other) const - { - return (start < other.start) || - (start == other.start && start + length < other.start + other.length) ||