From 00839fea22bfa118b3897519d3a3be0f447dbeb1 Mon Sep 17 00:00:00 2001 From: Rahul Butani Date: Fri, 7 Oct 2022 17:16:05 -0500 Subject: [PATCH] llvmPackages_15.compiler-rt: fixes for Darwin this introduces a codesigning related patch that we can drop once #195107 goes through see: https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272116014 --- .../llvm/15/compiler-rt/codesign.patch | 33 ------------------- .../compilers/llvm/15/compiler-rt/default.nix | 25 +++++++++++++- .../compiler-rt/skip-explicit-codesign.patch | 12 +++++++ 3 files changed, 36 insertions(+), 34 deletions(-) delete mode 100644 pkgs/development/compilers/llvm/15/compiler-rt/codesign.patch create mode 100644 pkgs/development/compilers/llvm/15/compiler-rt/skip-explicit-codesign.patch diff --git a/pkgs/development/compilers/llvm/15/compiler-rt/codesign.patch b/pkgs/development/compilers/llvm/15/compiler-rt/codesign.patch deleted file mode 100644 index 065959d14d46c..0000000000000 --- a/pkgs/development/compilers/llvm/15/compiler-rt/codesign.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 3dec5f3475a26aeb4678627795c4b67c6b7b4785 Mon Sep 17 00:00:00 2001 -From: Will Dietz -Date: Tue, 19 Sep 2017 13:13:06 -0500 -Subject: [PATCH] remove codesign use on Apple, disable ios sim testing that - needs it - ---- - cmake/Modules/AddCompilerRT.cmake | 8 ------ - test/asan/CMakeLists.txt | 52 --------------------------------------- - test/tsan/CMakeLists.txt | 47 ----------------------------------- - 3 files changed, 107 deletions(-) - -diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake -index bc69ec95c419..9f100fdcec2f 100644 ---- a/cmake/Modules/AddCompilerRT.cmake -+++ b/cmake/Modules/AddCompilerRT.cmake -@@ -366,14 +366,6 @@ function(add_compiler_rt_runtime name type) - set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "") - set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib") - endif() -- if(APPLE) -- # Ad-hoc sign the dylibs -- add_custom_command(TARGET ${libname} -- POST_BUILD -- COMMAND codesign --sign - $ -- WORKING_DIRECTORY ${COMPILER_RT_OUTPUT_LIBRARY_DIR} -- ) -- endif() - endif() - - set(parent_target_arg) -2.14.1 - diff --git a/pkgs/development/compilers/llvm/15/compiler-rt/default.nix b/pkgs/development/compilers/llvm/15/compiler-rt/default.nix index 0a08f4dcf94b5..3bbb8a23c7708 100644 --- a/pkgs/development/compilers/llvm/15/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/15/compiler-rt/default.nix @@ -66,6 +66,10 @@ stdenv.mkDerivation { "-DDARWIN_macosx_OVERRIDE_SDK_VERSION=ON" "-DDARWIN_osx_ARCHS=${stdenv.hostPlatform.darwinArch}" "-DDARWIN_osx_BUILTIN_ARCHS=${stdenv.hostPlatform.darwinArch}" + + # `COMPILER_RT_DEFAULT_TARGET_ONLY` does not apply to Darwin: + # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/base-config-ix.cmake#L153 + "-DCOMPILER_RT_ENABLE_IOS=OFF" ]; outputs = [ "out" "dev" ]; @@ -78,7 +82,26 @@ stdenv.mkDerivation { ./normalize-var.patch ] # Prevent a compilation error on darwin ++ lib.optional stdenv.hostPlatform.isDarwin ./darwin-targetconditionals.patch - ++ lib.optional stdenv.hostPlatform.isAarch32 ./armv7l.patch; + ++ lib.optional stdenv.hostPlatform.isAarch32 ./armv7l.patch + + # The `compiler-rt` build inspects `ld` to figure out whether it needs to + # explicitly call `codesign`: + # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/Modules/AddCompilerRT.cmake#L409-L422 + # + # In our case, despite (currently) having an `ld` version than 609, we don't + # need an explicit codesigning step because `postLinkSignHook` handles this + # for us. + # + # Unfortunately there isn't an easy way to override + # `NEED_EXPLICIT_ADHOC_CODESIGN`. + # + # Adding `codesign` as a build input also doesn't currently work because, as + # of this writing, `codesign` in nixpkgs doesn't support the `--sign` alias + # which the `compiler-rt` build uses. See here for context: + # https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272116014 + # + # So, for now, we patch `compiler-rt` to skip the explicit codesigning step. + ++ lib.optional stdenv.hostPlatform.isDarwin ./skip-explicit-codesign.patch; # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra diff --git a/pkgs/development/compilers/llvm/15/compiler-rt/skip-explicit-codesign.patch b/pkgs/development/compilers/llvm/15/compiler-rt/skip-explicit-codesign.patch new file mode 100644 index 0000000000000..894a74e74d464 --- /dev/null +++ b/pkgs/development/compilers/llvm/15/compiler-rt/skip-explicit-codesign.patch @@ -0,0 +1,12 @@ +diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake +--- a/cmake/Modules/AddCompilerRT.cmake ++++ b/cmake/Modules/AddCompilerRT.cmake +@@ -406,7 +406,7 @@ function(add_compiler_rt_runtime name type) + if (HAD_ERROR) + message(FATAL_ERROR "${CMAKE_LINKER} failed with status ${HAD_ERROR}") + endif() +- set(NEED_EXPLICIT_ADHOC_CODESIGN 1) ++ set(NEED_EXPLICIT_ADHOC_CODESIGN 0) # `postLinkSignHook` handles this for us + if ("${LD_V_OUTPUT}" MATCHES ".*ld64-([0-9.]+).*") + string(REGEX REPLACE ".*ld64-([0-9.]+).*" "\\1" HOST_LINK_VERSION ${LD_V_OUTPUT}) + if (HOST_LINK_VERSION VERSION_GREATER_EQUAL 609)