From b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Sun, 26 Jul 2020 17:27:15 +0900 Subject: [PATCH 1/2] libtapi: fix build, install phase and install name installTarget looks like a typo for installTargets. This causes a lot of llvm and clang to be built and installed. Clang is not intended to be an external dependency. The source bundle includes llvm and clang. Adding include paths and building clangBasic first is sufficient to use the internal clang components. --- pkgs/os-specific/darwin/libtapi/default.nix | 28 ++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/pkgs/os-specific/darwin/libtapi/default.nix b/pkgs/os-specific/darwin/libtapi/default.nix index 182d1db3bfd..8d710b45b26 100644 --- a/pkgs/os-specific/darwin/libtapi/default.nix +++ b/pkgs/os-specific/darwin/libtapi/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, python3, clang_6 }: +{ lib, stdenv, fetchFromGitHub, cmake, python3 }: stdenv.mkDerivation { name = "libtapi-1000.10.8"; @@ -9,22 +9,32 @@ stdenv.mkDerivation { sha256 = "1a19h39a48agvnmal99n9j1fjadiqwib7hfzmn342wmgh9z3vk0g"; }; - nativeBuildInputs = [ cmake python3 ]; - buildInputs = [ clang_6.cc ]; + sourceRoot = "source/src/llvm"; - preConfigure = '' - cd src/llvm - ''; + nativeBuildInputs = [ cmake python3 ]; cmakeFlags = [ "-DLLVM_INCLUDE_TESTS=OFF" ]; - buildFlags = [ "libtapi" ]; + # fixes: fatal error: 'clang/Basic/Diagnostic.h' file not found + # adapted from upstream + # https://github.com/tpoechtrager/apple-libtapi/blob/3cb307764cc5f1856c8a23bbdf3eb49dfc6bea48/build.sh#L58-L60 + preConfigure = '' + INCLUDE_FIX="-I $PWD/projects/clang/include" + INCLUDE_FIX+=" -I $PWD/build/projects/clang/include" - installTarget = "install-libtapi"; + cmakeFlagsArray+=(-DCMAKE_CXX_FLAGS="$INCLUDE_FIX") + ''; + + buildFlags = [ "clangBasic" "libtapi" ]; + + installTargets = [ "install-libtapi" "install-tapi-headers" ]; + + postInstall = '' + install_name_tool -id $out/lib/libtapi.dylib $out/lib/libtapi.dylib + ''; meta = with lib; { license = licenses.apsl20; maintainers = with maintainers; [ matthewbauer ]; }; - } From 630f5d30df4256991b2e72658eedeb954f7559f6 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Sat, 25 Jul 2020 15:26:54 +0900 Subject: [PATCH 2/2] stdenv/darwin: enable tapi support in cctools --- pkgs/os-specific/darwin/libtapi/default.nix | 6 +++++- pkgs/stdenv/darwin/default.nix | 11 ++--------- pkgs/stdenv/darwin/make-bootstrap-tools.nix | 2 ++ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/pkgs/os-specific/darwin/libtapi/default.nix b/pkgs/os-specific/darwin/libtapi/default.nix index 8d710b45b26..3252efb4236 100644 --- a/pkgs/os-specific/darwin/libtapi/default.nix +++ b/pkgs/os-specific/darwin/libtapi/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, python3 }: +{ lib, stdenv, fetchFromGitHub, cmake, python3, ncurses }: stdenv.mkDerivation { name = "libtapi-1000.10.8"; @@ -13,6 +13,10 @@ stdenv.mkDerivation { nativeBuildInputs = [ cmake python3 ]; + # ncurses is required here to avoid a reference to bootstrap-tools, which is + # not allowed for the stdenv. + buildInputs = [ ncurses ]; + cmakeFlags = [ "-DLLVM_INCLUDE_TESTS=OFF" ]; # fixes: fatal error: 'clang/Basic/Diagnostic.h' file not found diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index 9de6ef63bfe..3f06dec10af 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -198,12 +198,6 @@ in rec { python3 = super.python3Minimal; ninja = super.ninja.override { buildDocs = false; }; - - darwin = super.darwin // { - cctools = super.darwin.cctools.override { - enableTapiSupport = false; - }; - }; }; in with prevStage; stageFun 1 prevStage { extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\""; @@ -305,7 +299,7 @@ in rec { persistent = self: super: with prevStage; { inherit gnumake gzip gnused bzip2 gawk ed xz patch bash python3 - ncurses libffi zlib gmp pcre gnugrep + ncurses libffi zlib gmp pcre gnugrep cmake coreutils findutils diffutils patchutils ninja libxml2; # Hack to make sure we don't link ncurses in bootstrap tools. The proper @@ -330,7 +324,6 @@ in rec { darwin = super.darwin // rec { inherit (darwin) dyld Libsystem libiconv locale; - cctools = super.darwin.cctools.override { enableTapiSupport = false; }; CF = super.darwin.CF.override { inherit libxml2; python3 = prevStage.python3; @@ -419,7 +412,7 @@ in rec { curl.out openssl.out libssh2.out nghttp2.lib libkrb5 cc.expand-response-params libxml2.out ]) ++ (with pkgs.darwin; [ - dyld Libsystem CF cctools ICU libiconv locale + dyld Libsystem CF cctools ICU libiconv locale libtapi ]); overrides = lib.composeExtensions persistent (self: super: { diff --git a/pkgs/stdenv/darwin/make-bootstrap-tools.nix b/pkgs/stdenv/darwin/make-bootstrap-tools.nix index a299879693c..31e12963937 100644 --- a/pkgs/stdenv/darwin/make-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/make-bootstrap-tools.nix @@ -100,6 +100,8 @@ in rec { cp ${cctools_}/bin/$i $out/bin done + cp -d ${darwin.libtapi}/lib/libtapi* $out/lib + cp -rd ${pkgs.darwin.CF}/Library $out chmod -R u+w $out