From c36cf877f17ce8cf547f921c3a65d9aad46c85bb Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Mon, 20 Jul 2020 15:46:24 -0500 Subject: [PATCH 1/6] darwin.xcode: add hash for 11.3.1 --- pkgs/os-specific/darwin/xcode/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/darwin/xcode/default.nix b/pkgs/os-specific/darwin/xcode/default.nix index 1144232fba2..be9162fd7b6 100644 --- a/pkgs/os-specific/darwin/xcode/default.nix +++ b/pkgs/os-specific/darwin/xcode/default.nix @@ -53,5 +53,6 @@ in lib.makeExtensible (self: { xcode_10_2_1 = requireXcode "10.2.1" "11sdb54nr0x7kp987qq839x6k5gdx7vqdxjiy5xm5279n1n47bmg"; xcode_10_3 = requireXcode "10.3" "1i628vfn6zad81fsz3zpc6z15chhskvyp8qnajp2wnpzvrwl6ngb"; xcode_11 = requireXcode "11" "1r03j3kkp4blfp2kqpn538w3dx57ms930fj8apjkq6dk7fv3jcqh"; + xcode_11_3_1 = requireXcode "11.3.1" "1p6nicj91kr6ad3rmycahd1i7z4hj7ccjs93ixsiximjzaahx3q4"; xcode = self."xcode_${lib.replaceStrings ["."] ["_"] (if stdenv.targetPlatform.useiOSPrebuilt then stdenv.targetPlatform.xcodeVer else "10.3")}"; }) From 39c536c8db4e0982f89b67a194cd36ba9f4fbdd5 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Tue, 21 Jul 2020 10:30:19 -0500 Subject: [PATCH 2/6] darwin.libtapi: update, fix installTargets --- pkgs/os-specific/darwin/libtapi/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/darwin/libtapi/default.nix b/pkgs/os-specific/darwin/libtapi/default.nix index 182d1db3bfd..983499ccdbc 100644 --- a/pkgs/os-specific/darwin/libtapi/default.nix +++ b/pkgs/os-specific/darwin/libtapi/default.nix @@ -5,8 +5,8 @@ stdenv.mkDerivation { src = fetchFromGitHub { owner = "tpoechtrager"; repo = "apple-libtapi"; - rev = "cd9885b97fdff92cc41e886bba4a404c42fdf71b"; - sha256 = "1a19h39a48agvnmal99n9j1fjadiqwib7hfzmn342wmgh9z3vk0g"; + rev = "3cb307764cc5f1856c8a23bbdf3eb49dfc6bea48"; + sha256 = "1zb10p6xkls8x7wsdwgy9c0v16z97rfkgidii9ffq5rfczgvrhjh"; }; nativeBuildInputs = [ cmake python3 ]; @@ -20,7 +20,7 @@ stdenv.mkDerivation { buildFlags = [ "libtapi" ]; - installTarget = "install-libtapi"; + installTargets = [ "install-libtapi" "install-tapi-headers"]; meta = with lib; { license = licenses.apsl20; From 3c6bd61560d042ce1e366989b92b615dfa1dffb3 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Mon, 20 Jul 2020 15:48:39 -0500 Subject: [PATCH 3/6] darwin.cctools: 927.0.2 -> 949.0.1 Needed for iOS 13 support --- pkgs/os-specific/darwin/cctools/port.nix | 144 +++++++++++------------ 1 file changed, 71 insertions(+), 73 deletions(-) diff --git a/pkgs/os-specific/darwin/cctools/port.nix b/pkgs/os-specific/darwin/cctools/port.nix index 0c25f225291..64f1490a7a7 100644 --- a/pkgs/os-specific/darwin/cctools/port.nix +++ b/pkgs/os-specific/darwin/cctools/port.nix @@ -17,92 +17,90 @@ in # Non-Darwin alternatives assert (!stdenv.hostPlatform.isDarwin) -> maloader != null; -let - baseParams = rec { - name = "${targetPrefix}cctools-port"; - version = "927.0.2"; +stdenv.mkDerivation { + pname = "${targetPrefix}cctools-port"; + version = "949.0.1"; - src = fetchFromGitHub { - owner = "tpoechtrager"; - repo = "cctools-port"; - rev = "8239a5211bcf07d6b9d359782e1a889ec1d7cce5"; - sha256 = "0h8b1my0wf1jyjq63wbiqkl2clgxsf87f6i4fjhqs431fzlq8sac"; - }; + src = fetchFromGitHub { + owner = "tpoechtrager"; + repo = "cctools-port"; + rev = "43f32a4c61b5ba7fde011e816136c550b1b3146f"; + sha256 = "10yc5smiczzm62q6ijqccc58bwmfhc897f3bwa5i9j98csqsjj0k"; + }; - outputs = [ "out" "dev" "man" ]; + outputs = [ "out" "dev" "man" ]; - nativeBuildInputs = [ autoconf automake libtool autoreconfHook installShellFiles ]; - buildInputs = [ libuuid ] - ++ stdenv.lib.optionals stdenv.isDarwin [ libcxxabi libobjc ] - ++ stdenv.lib.optional enableTapiSupport libtapi; + nativeBuildInputs = [ autoconf automake libtool autoreconfHook installShellFiles ]; + buildInputs = [ libuuid ] + ++ stdenv.lib.optionals stdenv.isDarwin [ libcxxabi libobjc ] + ++ stdenv.lib.optional enableTapiSupport libtapi; - patches = [ ./ld-ignore-rpath-link.patch ./ld-rpath-nonfinal.patch ]; + patches = [ ./ld-ignore-rpath-link.patch ./ld-rpath-nonfinal.patch ]; - __propagatedImpureHostDeps = [ - # As far as I can tell, otool from cctools is the only thing that depends on these two, and we should fix them - "/usr/lib/libobjc.A.dylib" - "/usr/lib/libobjc.dylib" + __propagatedImpureHostDeps = [ + # As far as I can tell, otool from cctools is the only thing that depends on these two, and we should fix them + "/usr/lib/libobjc.A.dylib" + "/usr/lib/libobjc.dylib" + ]; + + enableParallelBuilding = true; + + # TODO(@Ericson2314): Always pass "--target" and always targetPrefix. + configurePlatforms = [ "build" "host" ] + ++ stdenv.lib.optional (stdenv.targetPlatform != stdenv.hostPlatform) "target"; + configureFlags = [ "--disable-clang-as" ] + ++ stdenv.lib.optionals enableTapiSupport [ + "--enable-tapi-support" + "--with-libtapi=${libtapi}" ]; - enableParallelBuilding = true; + postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace cctools/Makefile.am --replace libobjc2 "" + '' + '' + sed -i -e 's/addStandardLibraryDirectories = true/addStandardLibraryDirectories = false/' cctools/ld64/src/ld/Options.cpp - # TODO(@Ericson2314): Always pass "--target" and always targetPrefix. - configurePlatforms = [ "build" "host" ] - ++ stdenv.lib.optional (stdenv.targetPlatform != stdenv.hostPlatform) "target"; - configureFlags = [ "--disable-clang-as" ] - ++ stdenv.lib.optionals enableTapiSupport [ - "--enable-tapi-support" - "--with-libtapi=${libtapi}" - ]; + # FIXME: there are far more absolute path references that I don't want to fix right now + substituteInPlace cctools/configure.ac \ + --replace "-isystem /usr/local/include -isystem /usr/pkg/include" "" \ + --replace "-L/usr/local/lib" "" \ - postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace cctools/Makefile.am --replace libobjc2 "" - '' + '' - sed -i -e 's/addStandardLibraryDirectories = true/addStandardLibraryDirectories = false/' cctools/ld64/src/ld/Options.cpp + substituteInPlace cctools/include/Makefile \ + --replace "/bin/" "" - # FIXME: there are far more absolute path references that I don't want to fix right now - substituteInPlace cctools/configure.ac \ - --replace "-isystem /usr/local/include -isystem /usr/pkg/include" "" \ - --replace "-L/usr/local/lib" "" \ + patchShebangs tools + sed -i -e 's/which/type -P/' tools/*.sh - substituteInPlace cctools/include/Makefile \ - --replace "/bin/" "" + # Workaround for https://www.sourceware.org/bugzilla/show_bug.cgi?id=11157 + cat > cctools/include/unistd.h < cctools/include/unistd.h < Date: Tue, 21 Jul 2020 10:34:57 -0500 Subject: [PATCH 4/6] systems/examples.nix: update to iOS 13 new apps need iOS 13, so we should try to use that here --- lib/systems/examples.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 19b3790ecbe..3b32130f388 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -170,8 +170,8 @@ rec { iphone64 = { config = "aarch64-apple-ios"; # config = "aarch64-apple-darwin14"; - sdkVer = "12.4"; - xcodeVer = "10.3"; + sdkVer = "13.2"; + xcodeVer = "11.3.1"; xcodePlatform = "iPhoneOS"; useiOSPrebuilt = true; platform = {}; @@ -180,8 +180,8 @@ rec { iphone32 = { config = "armv7a-apple-ios"; # config = "arm-apple-darwin10"; - sdkVer = "12.4"; - xcodeVer = "10.3"; + sdkVer = "13.2"; + xcodeVer = "11.3.1"; xcodePlatform = "iPhoneOS"; useiOSPrebuilt = true; platform = {}; @@ -190,8 +190,8 @@ rec { iphone64-simulator = { config = "x86_64-apple-ios"; # config = "x86_64-apple-darwin14"; - sdkVer = "12.4"; - xcodeVer = "10.3"; + sdkVer = "13.2"; + xcodeVer = "11.3.1"; xcodePlatform = "iPhoneSimulator"; useiOSPrebuilt = true; platform = {}; @@ -200,8 +200,8 @@ rec { iphone32-simulator = { config = "i686-apple-ios"; # config = "i386-apple-darwin11"; - sdkVer = "12.4"; - xcodeVer = "10.3"; + sdkVer = "13.2"; + xcodeVer = "11.3.1"; xcodePlatform = "iPhoneSimulator"; useiOSPrebuilt = true; platform = {}; From 753e80125fd071f6d4cd3ea9988c3c4da86f6cba Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Tue, 21 Jul 2020 21:58:51 -0500 Subject: [PATCH 5/6] darwin/xcode: default to 11.3.1 --- pkgs/os-specific/darwin/xcode/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/darwin/xcode/default.nix b/pkgs/os-specific/darwin/xcode/default.nix index be9162fd7b6..34e3b2dfeea 100644 --- a/pkgs/os-specific/darwin/xcode/default.nix +++ b/pkgs/os-specific/darwin/xcode/default.nix @@ -54,5 +54,5 @@ in lib.makeExtensible (self: { xcode_10_3 = requireXcode "10.3" "1i628vfn6zad81fsz3zpc6z15chhskvyp8qnajp2wnpzvrwl6ngb"; xcode_11 = requireXcode "11" "1r03j3kkp4blfp2kqpn538w3dx57ms930fj8apjkq6dk7fv3jcqh"; xcode_11_3_1 = requireXcode "11.3.1" "1p6nicj91kr6ad3rmycahd1i7z4hj7ccjs93ixsiximjzaahx3q4"; - xcode = self."xcode_${lib.replaceStrings ["."] ["_"] (if stdenv.targetPlatform.useiOSPrebuilt then stdenv.targetPlatform.xcodeVer else "10.3")}"; + xcode = self."xcode_${lib.replaceStrings ["."] ["_"] (if (stdenv.targetPlatform ? xcodeVer) then stdenv.targetPlatform.xcodeVer else "11.3.1")}"; }) From 95eabdfd5f6197c83e9e5f53ddb65dbbea3c13fd Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Wed, 22 Jul 2020 10:54:11 -0500 Subject: [PATCH 6/6] xcode/sdk-pkgs.nix: set -platform_version in addition to -miphoneos-version-min MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The App Store looks at LC_VERSION_MIN_IPHONEOS to verify you have a new enough SDK version. This is not just the minimum version, but also the sdk version used. When the linker can’t figure it out, it tries to infer it from the sdk path[1]. When no sdk version is found, it defaults to just using the -miphoneos-version-min value[2]. So, to make sure we don’t rely on inference (which doesn’t work in the current directory structure), we have to specify -platform_version. [1]: https://github.com/tpoechtrager/cctools-port/blob/43f32a4c61b5ba7fde011e816136c550b1b3146f/cctools/ld64/src/ld/Options.cpp#L5355-L5376 [2]: https://github.com/tpoechtrager/cctools-port/blob/43f32a4c61b5ba7fde011e816136c550b1b3146f/cctools/ld64/src/ld/ld.hpp#L58 --- pkgs/os-specific/darwin/xcode/sdk-pkgs.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix b/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix index e8302a82555..45e1f1eab4f 100644 --- a/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix +++ b/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix @@ -12,7 +12,7 @@ let -minSdkVersion = "9.0"; +minSdkVersion = targetPlatform.minSdkVersion or "9.0"; iosPlatformArch = { parsed, ... }: { armv7a = "armv7"; @@ -37,6 +37,10 @@ rec { bintools = binutils-unwrapped; extraBuildCommands = '' echo "-arch ${iosPlatformArch targetPlatform}" >> $out/nix-support/libc-ldflags + '' + stdenv.lib.optionalString (sdk.platform == "iPhoneSimulator") '' + echo "-platform_version ios-sim ${minSdkVersion} ${sdk.version}" >> $out/nix-support/libc-ldflags + '' + stdenv.lib.optionalString (sdk.platform == "iPhoneOS") '' + echo "-platform_version ios ${minSdkVersion} ${sdk.version}" >> $out/nix-support/libc-ldflags ''; };