From e0b591919707f07fd1c42646c6deb13f0dd4914a Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 4 Sep 2018 19:50:01 +0000 Subject: [PATCH 1/3] gcc-*: homogenize and cleanup expressions without a rebuild Looks scary but it is a noop. --- .../development/compilers/gcc/4.8/default.nix | 24 +++++++-------- .../development/compilers/gcc/4.9/default.nix | 29 ++++++++++--------- pkgs/development/compilers/gcc/5/default.nix | 15 +++++----- pkgs/development/compilers/gcc/6/default.nix | 18 +++++++----- pkgs/development/compilers/gcc/7/default.nix | 12 ++++---- pkgs/development/compilers/gcc/8/default.nix | 12 ++++---- .../compilers/gcc/snapshot/default.nix | 12 ++++---- 7 files changed, 65 insertions(+), 57 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index d9376f597a7..8eadfbf898c 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -52,12 +52,9 @@ with builtins; let version = "4.8.5"; - enableParallelBuilding = true; - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - patches = [ ] - ++ optional enableParallelBuilding ../parallel-bconfig.patch + patches = [ ../parallel-bconfig.patch ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optional noSysDirs ../no-sys-dirs.patch ++ optional langFortran ../gfortran-driving.patch @@ -175,14 +172,14 @@ stdenv.mkDerivation ({ inherit patches; - hardeningDisable = [ "format" ]; - outputs = [ "out" "lib" "man" "info" ]; setOutputFlags = false; NIX_NO_SELF_RPATH = true; libc_dev = stdenv.cc.libc_dev; + hardeningDisable = [ "format" ]; + postPatch = if targetPlatform != hostPlatform || stdenv.cc.libc != null then # On NixOS, use the right path to the dynamic linker instead of @@ -209,8 +206,9 @@ stdenv.mkDerivation ({ ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); - buildInputs = [ gmp mpfr libmpc libelf ] - ++ (optional (cloog != null) cloog) + buildInputs = [ + gmp mpfr libmpc libelf + ] ++ (optional (cloog != null) cloog) ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) @@ -222,7 +220,6 @@ stdenv.mkDerivation ({ ++ (optional hostPlatform.isDarwin gnused) ; - preConfigure = stdenv.lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET" @@ -354,13 +351,13 @@ stdenv.mkDerivation ({ ++ optional (zlib != null) zlib ++ optional langJava boehmgc ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ]) - ); + ++ optionals javaAwtGtk [ gmp mpfr ] + )); EXTRA_TARGET_FLAGS = optionals (targetPlatform != hostPlatform && libcCross != null) ([ - "-idirafter ${libcCross.dev}/include" + "-idirafter ${getDev libcCross}/include" ] ++ optionals (! crossStageStatic) [ "-B${libcCross.out}/lib" ]); @@ -382,7 +379,8 @@ stdenv.mkDerivation ({ hardeningUnsupportedFlags = [ "stackprotector" ]; }; - inherit enableParallelBuilding enableMultilib; + enableParallelBuilding = true; + inherit enableMultilib; inherit (stdenv) is64bit; diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index c60f54f1560..8a64cc79a9c 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -1,4 +1,4 @@ -{ stdenv, targetPackages, fetchurl, noSysDirs, fetchpatch +{ stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langObjC ? stdenv.targetPlatform.isDarwin , langObjCpp ? stdenv.targetPlatform.isDarwin @@ -52,13 +52,10 @@ with builtins; let version = "4.9.4"; - enableParallelBuilding = true; - inherit (stdenv) buildPlatform hostPlatform targetPlatform; patches = - [ ../use-source-date-epoch.patch ] - ++ optionals enableParallelBuilding [ ../parallel-bconfig.patch ./parallel-strsignal.patch ] + [ ../use-source-date-epoch.patch ../parallel-bconfig.patch ./parallel-strsignal.patch ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optional noSysDirs ../no-sys-dirs.patch ++ optional langFortran ../gfortran-driving.patch @@ -183,8 +180,6 @@ stdenv.mkDerivation ({ inherit patches; - hardeningDisable = [ "format" ]; - outputs = if langJava || langGo then ["out" "man" "info"] else [ "out" "lib" "man" "info" ]; setOutputFlags = false; @@ -192,6 +187,8 @@ stdenv.mkDerivation ({ libc_dev = stdenv.cc.libc_dev; + hardeningDisable = [ "format" ]; + postPatch = if targetPlatform != hostPlatform || stdenv.cc.libc != null then # On NixOS, use the right path to the dynamic linker instead of @@ -250,8 +247,7 @@ stdenv.mkDerivation ({ '' + stdenv.lib.optionalString (langJava || langGo) '' export lib=$out; - '' - ; + ''; dontDisableStatic = true; @@ -376,7 +372,8 @@ stdenv.mkDerivation ({ ++ optional (zlib != null) zlib ++ optional langJava boehmgc ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ])); + ++ optionals javaAwtGtk [ gmp mpfr ] + )); EXTRA_TARGET_FLAGS = optionals (targetPlatform != hostPlatform && libcCross != null) @@ -397,10 +394,13 @@ stdenv.mkDerivation ({ "-Wl,-rpath-link,${libcCross.out}/lib" ])); - passthru = - { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; + passthru = { + inherit langC langCC langObjC langObjCpp langFortran langGo version; + isGNU = true; + }; - inherit enableParallelBuilding enableMultilib; + enableParallelBuilding = true; + inherit enableMultilib; inherit (stdenv) is64bit; @@ -424,7 +424,8 @@ stdenv.mkDerivation ({ platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.freebsd ++ - stdenv.lib.platforms.illumos; + stdenv.lib.platforms.illumos ++ + stdenv.lib.platforms.darwin; }; } diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index efd6ec07257..5357f10ab5e 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -49,9 +49,6 @@ with stdenv.lib; with builtins; let version = "5.5.0"; - sha256 = "11zd1hgzkli3b2v70qsm2hyqppngd4616qc96lmm9zl2kl9yl32k"; - - enableParallelBuilding = true; inherit (stdenv) buildPlatform hostPlatform targetPlatform; @@ -164,7 +161,7 @@ stdenv.mkDerivation ({ src = fetchurl { url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz"; - inherit sha256; + sha256 = "11zd1hgzkli3b2v70qsm2hyqppngd4616qc96lmm9zl2kl9yl32k"; }; inherit patches; @@ -397,10 +394,13 @@ stdenv.mkDerivation ({ "-Wl,-rpath-link,${libcCross.out}/lib" ])); - passthru = - { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; + passthru = { + inherit langC langCC langObjC langObjCpp langFortran langGo version; + isGNU = true; + }; - inherit enableParallelBuilding enableMultilib; + enableParallelBuilding = true; + inherit enableMultilib; inherit (stdenv) is64bit; @@ -424,6 +424,7 @@ stdenv.mkDerivation ({ platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.freebsd ++ + stdenv.lib.platforms.illumos ++ stdenv.lib.platforms.darwin; }; } diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 4760d18a7d8..557c8ceba8a 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -50,8 +50,6 @@ with builtins; let version = "6.4.0"; - enableParallelBuilding = true; - inherit (stdenv) buildPlatform hostPlatform targetPlatform; patches = @@ -257,8 +255,7 @@ stdenv.mkDerivation ({ '' + stdenv.lib.optionalString (langJava || langGo) '' export lib=$out; - '' - ; + ''; dontDisableStatic = true; @@ -380,7 +377,8 @@ stdenv.mkDerivation ({ ++ optional (zlib != null) zlib ++ optional langJava boehmgc ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ])); + ++ optionals javaAwtGtk [ gmp mpfr ] + )); EXTRA_TARGET_FLAGS = optionals (targetPlatform != hostPlatform && libcCross != null) @@ -401,10 +399,13 @@ stdenv.mkDerivation ({ "-Wl,-rpath-link,${libcCross.out}/lib" ])); - passthru = - { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; + passthru = { + inherit langC langCC langObjC langObjCpp langFortran langGo version; + isGNU = true; + }; - inherit enableParallelBuilding enableMultilib; + enableParallelBuilding = true; + inherit enableMultilib; inherit (stdenv) is64bit; @@ -428,6 +429,7 @@ stdenv.mkDerivation ({ platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.freebsd ++ + stdenv.lib.platforms.illumos ++ stdenv.lib.platforms.darwin; }; } diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index e2c686b7e7e..85350f5a2b2 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -39,8 +39,6 @@ with builtins; let version = "7.3.0"; - enableParallelBuilding = true; - inherit (stdenv) buildPlatform hostPlatform targetPlatform; patches = @@ -344,10 +342,13 @@ stdenv.mkDerivation ({ "-Wl,-rpath-link,${libcCross.out}/lib" ])); - passthru = - { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; + passthru = { + inherit langC langCC langObjC langObjCpp langFortran langGo version; + isGNU = true; + }; - inherit enableParallelBuilding enableMultilib; + enableParallelBuilding = true; + inherit enableMultilib; inherit (stdenv) is64bit; @@ -371,6 +372,7 @@ stdenv.mkDerivation ({ platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.freebsd ++ + stdenv.lib.platforms.illumos ++ stdenv.lib.platforms.darwin; }; } diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix index 59d7653c52c..9dac0235037 100644 --- a/pkgs/development/compilers/gcc/8/default.nix +++ b/pkgs/development/compilers/gcc/8/default.nix @@ -39,8 +39,6 @@ with builtins; let version = "8.2.0"; - enableParallelBuilding = true; - inherit (stdenv) buildPlatform hostPlatform targetPlatform; patches = @@ -335,10 +333,13 @@ stdenv.mkDerivation ({ "-Wl,-rpath-link,${libcCross.out}/lib" ])); - passthru = - { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; + passthru = { + inherit langC langCC langObjC langObjCpp langFortran langGo version; + isGNU = true; + }; - inherit enableParallelBuilding enableMultilib; + enableParallelBuilding = true; + inherit enableMultilib; inherit (stdenv) is64bit; @@ -362,6 +363,7 @@ stdenv.mkDerivation ({ platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.freebsd ++ + stdenv.lib.platforms.illumos ++ stdenv.lib.platforms.darwin; }; } diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix index 0de6be36c35..96e05023743 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -40,8 +40,6 @@ with builtins; let version = "7-20170409"; - enableParallelBuilding = true; - inherit (stdenv) buildPlatform hostPlatform targetPlatform; patches = @@ -306,10 +304,13 @@ stdenv.mkDerivation ({ "-Wl,-rpath-link,${libcCross.out}/lib" ])); - passthru = - { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; + passthru = { + inherit langC langCC langObjC langObjCpp langFortran langGo version; + isGNU = true; + }; - inherit enableParallelBuilding enableMultilib; + enableParallelBuilding = true; + inherit enableMultilib; inherit (stdenv) is64bit; @@ -333,6 +334,7 @@ stdenv.mkDerivation ({ platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.freebsd ++ + stdenv.lib.platforms.illumos ++ stdenv.lib.platforms.darwin; broken = true; From eae890db1201359136c204026673eca4f02d0e15 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 4 Sep 2018 20:12:18 +0000 Subject: [PATCH 2/3] gcc-*: homogenize and cleanup expressions with a mass rebuild --- pkgs/development/compilers/gcc/4.8/default.nix | 11 +++++++++-- pkgs/development/compilers/gcc/4.9/default.nix | 5 ++--- pkgs/development/compilers/gcc/5/default.nix | 2 -- pkgs/development/compilers/gcc/6/default.nix | 3 --- pkgs/development/compilers/gcc/7/default.nix | 3 --- pkgs/development/compilers/gcc/8/default.nix | 3 --- pkgs/development/compilers/gcc/snapshot/default.nix | 3 --- 7 files changed, 11 insertions(+), 19 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 8eadfbf898c..cb0ae64f9d3 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -206,15 +206,22 @@ stdenv.mkDerivation ({ ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); + # For building runtime libs + depsBuildTarget = + if hostPlatform == buildPlatform then [ + targetPackages.stdenv.cc.bintools # newly-built gcc will be used + ] else assert targetPlatform == hostPlatform; [ # build != host == target + stdenv.cc + ]; + buildInputs = [ gmp mpfr libmpc libelf + targetPackages.stdenv.cc.bintools # For linking code at run-time ] ++ (optional (cloog != null) cloog) ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 8a64cc79a9c..746beb01ecc 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -231,8 +231,6 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) @@ -259,7 +257,8 @@ stdenv.mkDerivation ({ [ "--with-gmp-include=${gmp.dev}/include" "--with-gmp-lib=${gmp.out}/lib" - "--with-mpfr=${mpfr.dev}" + "--with-mpfr-include=${mpfr.dev}/include" + "--with-mpfr-lib=${mpfr.out}/lib" "--with-mpc=${libmpc}" ] ++ optional (libelf != null) "--with-libelf=${libelf}" ++ diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index 5357f10ab5e..752e15c78cc 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -235,12 +235,10 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) - ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools) ; NIX_LDFLAGS = stdenv.lib.optionalString hostPlatform.isSunOS "-lm -ldl"; diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 557c8ceba8a..5900775b097 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -237,12 +237,9 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) - ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools) ; NIX_LDFLAGS = stdenv.lib.optionalString hostPlatform.isSunOS "-lm -ldl"; diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 85350f5a2b2..c409b145299 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -207,12 +207,9 @@ stdenv.mkDerivation ({ targetPackages.stdenv.cc.bintools # For linking code at run-time ] ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) - ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) - ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools) ; NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.cc.isClang && langFortran) "-Wno-unused-command-line-argument"; diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix index 9dac0235037..34d8c1eb1c2 100644 --- a/pkgs/development/compilers/gcc/8/default.nix +++ b/pkgs/development/compilers/gcc/8/default.nix @@ -202,12 +202,9 @@ stdenv.mkDerivation ({ targetPackages.stdenv.cc.bintools # For linking code at run-time ] ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) - ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) - ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools) ; NIX_LDFLAGS = stdenv.lib.optionalString hostPlatform.isSunOS "-lm -ldl"; diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix index 96e05023743..d2f2c2ee558 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -172,12 +172,9 @@ stdenv.mkDerivation ({ targetPackages.stdenv.cc.bintools # For linking code at run-time ] ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) - ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) - ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools) ; NIX_LDFLAGS = stdenv.lib.optionalString hostPlatform.isSunOS "-lm -ldl"; From 110f16e43ed4f246186e2ffa2f489a698a0b187c Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 4 Sep 2018 17:31:16 +0000 Subject: [PATCH 3/3] llvm_5: cleanup with a mass rebuild, but no idea why, and can not test --- pkgs/development/compilers/llvm/5/llvm.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/development/compilers/llvm/5/llvm.nix b/pkgs/development/compilers/llvm/5/llvm.nix index 3abba0ed340..3ed3af712f5 100644 --- a/pkgs/development/compilers/llvm/5/llvm.nix +++ b/pkgs/development/compilers/llvm/5/llvm.nix @@ -36,9 +36,7 @@ in stdenv.mkDerivation (rec { nativeBuildInputs = [ cmake python ] ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; - buildInputs = [ libxml2 libffi ] - # TODO(@Ericson2314): Remove next mass rebuild - ++ stdenv.lib.optionals (stdenv.isDarwin && stdenv.hostPlatform == stdenv.buildPlatform) [ libcxxabi ]; + buildInputs = [ libxml2 libffi ]; propagatedBuildInputs = [ ncurses zlib ];