From 4d4f94cde4d3806ca063ebf7e6ba448b0feae355 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Wed, 18 Oct 2017 14:05:39 -0400 Subject: [PATCH] treewide: Depend on targetPackages.stdenv.cc.bintools instead of binutils directly One should do this when needed executables at run time. It is more honest and cross-friendly than refering to binutils directly, if one neeeds the default binary tools for the target platform, rather than binutils in particular. --- .../development/compilers/gcc/4.5/default.nix | 8 +++---- .../development/compilers/gcc/4.8/default.nix | 8 +++---- .../development/compilers/gcc/4.9/default.nix | 8 +++---- pkgs/development/compilers/gcc/5/default.nix | 13 +++++------ pkgs/development/compilers/gcc/6/default.nix | 13 +++++------ pkgs/development/compilers/gcc/7/default.nix | 13 +++++------ .../compilers/gcc/snapshot/default.nix | 13 +++++------ pkgs/development/compilers/ghc/7.10.2.nix | 4 ++-- pkgs/development/compilers/ghc/7.10.3.nix | 4 ++-- pkgs/development/compilers/ghc/7.6.3.nix | 2 +- pkgs/development/compilers/ghc/8.0.2.nix | 4 ++-- pkgs/development/compilers/ghc/8.2.1.nix | 16 ++++++------- pkgs/development/compilers/ghc/head.nix | 4 ++-- pkgs/development/compilers/halvm/2.4.0.nix | 8 +++---- pkgs/development/compilers/rust/rustc.nix | 7 +++--- pkgs/development/compilers/swift/default.nix | 4 ++-- pkgs/stdenv/booter.nix | 23 +++++++++++++++---- 17 files changed, 81 insertions(+), 71 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.5/default.nix b/pkgs/development/compilers/gcc/4.5/default.nix index 5bad03d30252..498d2f0f6c7d 100644 --- a/pkgs/development/compilers/gcc/4.5/default.nix +++ b/pkgs/development/compilers/gcc/4.5/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, noSysDirs +{ stdenv, targetPackages, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langJava ? false , langAda ? false @@ -77,8 +77,8 @@ let version = "4.5.4"; withCpu + withAbi + # Ensure that -print-prog-name is able to find the correct programs. - " --with-as=${binutils}/bin/${targetPlatform.config}-as" + - " --with-ld=${binutils}/bin/${targetPlatform.config}-ld" + + " --with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as" + + " --with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" + (if crossMingw && crossStageStatic then " --with-headers=${libcCross}/include" + " --with-gcc" + @@ -228,7 +228,7 @@ stdenv.mkDerivation ({ ++ (optional langJava boehmgc) ++ (optionals langJava [zip unzip]) ++ (optionals javaAwtGtk ([gtk2 pkgconfig libart_lgpl] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [binutils]) + ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) ; diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 72e37f18a178..a49ea7bd6890 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, noSysDirs +{ stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langObjC ? targetPlatform.isDarwin , langObjCpp ? targetPlatform.isDarwin @@ -149,8 +149,8 @@ let version = "4.8.5"; withFloat + withMode + # Ensure that -print-prog-name is able to find the correct programs. - " --with-as=${binutils}/bin/${targetPlatform.config}-as" + - " --with-ld=${binutils}/bin/${targetPlatform.config}-ld" + + " --with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as" + + " --with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" + (if crossMingw && crossStageStatic then " --with-headers=${libcCross}/include" + " --with-gcc" + @@ -299,7 +299,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [binutils]) + ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index d7684a61a2ac..ee0df2e9c541 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, noSysDirs +{ stdenv, targetPackages, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langObjC ? targetPlatform.isDarwin , langObjCpp ? targetPlatform.isDarwin @@ -143,8 +143,8 @@ let version = "4.9.4"; withFloat + withMode + # Ensure that -print-prog-name is able to find the correct programs. - " --with-as=${binutils}/bin/${targetPlatform.config}-as" + - " --with-ld=${binutils}/bin/${targetPlatform.config}-ld" + + " --with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as" + + " --with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" + (if crossMingw && crossStageStatic then " --with-headers=${libcCross}/include" + " --with-gcc" + @@ -295,7 +295,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [binutils]) + ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index 346ea928b76f..345e2baf6718 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, noSysDirs +{ stdenv, targetPackages, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langObjC ? targetPlatform.isDarwin , langObjCpp ? targetPlatform.isDarwin @@ -31,7 +31,6 @@ , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true , gnused ? null -, binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , darwin ? null , buildPlatform, hostPlatform, targetPlatform @@ -51,7 +50,7 @@ assert libelf != null -> zlib != null; assert hostPlatform.isDarwin -> gnused != null; # Need c++filt on darwin -assert hostPlatform.isDarwin -> binutils != null; +assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; # The go frontend is written in c++ assert langGo -> langCC; @@ -149,8 +148,8 @@ let version = "5.5.0"; withFloat + withMode + # Ensure that -print-prog-name is able to find the correct programs. - " --with-as=${binutils}/bin/${targetPlatform.config}-as" + - " --with-ld=${binutils}/bin/${targetPlatform.config}-ld" + + " --with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as" + + " --with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" + (if crossMingw && crossStageStatic then " --with-headers=${libcCross}/include" + " --with-gcc" + @@ -312,7 +311,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [binutils]) + ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) ++ (optionals (buildPlatform != hostPlatform) [buildPackages.stdenv.cc]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) @@ -320,7 +319,7 @@ stdenv.mkDerivation ({ # 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 binutils) + ++ (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 47cb93c19953..e3639fdf0f50 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, noSysDirs +{ stdenv, targetPackages, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langObjC ? targetPlatform.isDarwin , langObjCpp ? targetPlatform.isDarwin @@ -31,7 +31,6 @@ , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true , gnused ? null -, binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , darwin ? null , buildPlatform, hostPlatform, targetPlatform @@ -50,7 +49,7 @@ assert libelf != null -> zlib != null; assert hostPlatform.isDarwin -> gnused != null; # Need c++filt on darwin -assert hostPlatform.isDarwin -> binutils != null; +assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; # The go frontend is written in c++ assert langGo -> langCC; @@ -143,8 +142,8 @@ let version = "6.4.0"; withFloat + withMode + # Ensure that -print-prog-name is able to find the correct programs. - " --with-as=${binutils}/bin/${targetPlatform.config}-as" + - " --with-ld=${binutils}/bin/${targetPlatform.config}-ld" + + " --with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as" + + " --with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" + (if crossMingw && crossStageStatic then " --with-headers=${libcCross}/include" + " --with-gcc" + @@ -307,14 +306,14 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [binutils]) + ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) # 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 binutils) + ++ (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 064f2ab00d47..3a7c0eb64437 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, noSysDirs +{ stdenv, targetPackages, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langObjC ? targetPlatform.isDarwin , langObjCpp ? targetPlatform.isDarwin @@ -31,7 +31,6 @@ , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true , gnused ? null -, binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , darwin ? null , flex ? null @@ -51,7 +50,7 @@ assert libelf != null -> zlib != null; assert hostPlatform.isDarwin -> gnused != null; # Need c++filt on darwin -assert hostPlatform.isDarwin -> binutils != null; +assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; # The go frontend is written in c++ assert langGo -> langCC; @@ -144,8 +143,8 @@ let version = "7.2.0"; withFloat + withMode + # Ensure that -print-prog-name is able to find the correct programs. - " --with-as=${binutils}/bin/${targetPlatform.config}-as" + - " --with-ld=${binutils}/bin/${targetPlatform.config}-ld" + + " --with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as" + + " --with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" + (if crossMingw && crossStageStatic then " --with-headers=${libcCross}/include" + " --with-gcc" + @@ -308,14 +307,14 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [binutils]) + ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) # 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 binutils) + ++ (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 696417a49566..e235be639c6e 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, noSysDirs +{ stdenv, targetPackages, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false , langObjC ? targetPlatform.isDarwin , langObjCpp ? targetPlatform.isDarwin @@ -31,7 +31,6 @@ , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true , gnused ? null -, binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , darwin ? null , flex ? null @@ -51,7 +50,7 @@ assert libelf != null -> zlib != null; assert hostPlatform.isDarwin -> gnused != null; # Need c++filt on darwin -assert hostPlatform.isDarwin -> binutils != null; +assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; # The go frontend is written in c++ assert langGo -> langCC; @@ -144,8 +143,8 @@ let version = "7-20170409"; withFloat + withMode + # Ensure that -print-prog-name is able to find the correct programs. - " --with-as=${binutils}/bin/${targetPlatform.config}-as" + - " --with-ld=${binutils}/bin/${targetPlatform.config}-ld" + + " --with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as" + + " --with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" + (if crossMingw && crossStageStatic then " --with-headers=${libcCross}/include" + " --with-gcc" + @@ -295,14 +294,14 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (targetPlatform != hostPlatform) [binutils]) + ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) # 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 binutils) + ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools) ; NIX_LDFLAGS = stdenv.lib.optionalString hostPlatform.isSunOS "-lm -ldl"; diff --git a/pkgs/development/compilers/ghc/7.10.2.nix b/pkgs/development/compilers/ghc/7.10.2.nix index 863f904e4e96..51274dd60598 100644 --- a/pkgs/development/compilers/ghc/7.10.2.nix +++ b/pkgs/development/compilers/ghc/7.10.2.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils , libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour # If enabled GHC will be build with the GPL-free but slower integer-simple @@ -70,7 +70,7 @@ stdenv.mkDerivation rec { for i in "$out/bin/"*; do test ! -h $i || continue egrep --quiet '^#!' <(head -n 1 $i) || continue - sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ binutils coreutils ]}"' $i + sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i done ''; diff --git a/pkgs/development/compilers/ghc/7.10.3.nix b/pkgs/development/compilers/ghc/7.10.3.nix index eb8f1dddd19b..d573a22e0ae8 100644 --- a/pkgs/development/compilers/ghc/7.10.3.nix +++ b/pkgs/development/compilers/ghc/7.10.3.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils , libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour # If enabled GHC will be build with the GPL-free but slower integer-simple @@ -68,7 +68,7 @@ stdenv.mkDerivation rec { for i in "$out/bin/"*; do test ! -h $i || continue egrep --quiet '^#!' <(head -n 1 $i) || continue - sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ binutils coreutils ]}"' $i + sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i done ''; diff --git a/pkgs/development/compilers/ghc/7.6.3.nix b/pkgs/development/compilers/ghc/7.6.3.nix index 5f951936046f..fde4ca2aa37d 100644 --- a/pkgs/development/compilers/ghc/7.6.3.nix +++ b/pkgs/development/compilers/ghc/7.6.3.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, ghc, perl, ncurses, binutils, libiconv +{ stdenv, fetchurl, ghc, perl, ncurses, libiconv # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. diff --git a/pkgs/development/compilers/ghc/8.0.2.nix b/pkgs/development/compilers/ghc/8.0.2.nix index e50a8df7352d..d475e3438b4b 100644 --- a/pkgs/development/compilers/ghc/8.0.2.nix +++ b/pkgs/development/compilers/ghc/8.0.2.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +{ stdenv, lib, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils , hscolour, patchutils, sphinx # If enabled GHC will be build with the GPL-free but slower integer-simple @@ -65,7 +65,7 @@ stdenv.mkDerivation rec { for i in "$out/bin/"*; do test ! -h $i || continue egrep --quiet '^#!' <(head -n 1 $i) || continue - sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ binutils coreutils ]}"' $i + sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i done ''; diff --git a/pkgs/development/compilers/ghc/8.2.1.nix b/pkgs/development/compilers/ghc/8.2.1.nix index dde56df81313..bcc801c98ea5 100644 --- a/pkgs/development/compilers/ghc/8.2.1.nix +++ b/pkgs/development/compilers/ghc/8.2.1.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +{ stdenv, lib, fetchurl, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils , autoconf, automake, happy, alex, python3, sphinx, hscolour , buildPlatform, targetPlatform , selfPkgs, cross ? null @@ -66,7 +66,7 @@ in stdenv.mkDerivation (rec { for i in "$out/bin/"*; do test ! -h $i || continue egrep --quiet '^#!' <(head -n 1 $i) || continue - sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ binutils coreutils ]}"' $i + sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i done ''; @@ -97,23 +97,23 @@ in stdenv.mkDerivation (rec { configureFlags = [ "CC=${stdenv.ccCross}/bin/${cross.config}-cc" - "LD=${stdenv.binutils}/bin/${cross.config}-ld" - "AR=${stdenv.binutils}/bin/${cross.config}-ar" - "NM=${stdenv.binutils}/bin/${cross.config}-nm" - "RANLIB=${stdenv.binutils}/bin/${cross.config}-ranlib" + "LD=${targetPackages.stdenv.cc.bintools}/bin/${cross.config}-ld" + "AR=${targetPackages.stdenv.cc.bintools}/bin/${cross.config}-ar" + "NM=${targetPackages.stdenv.cc.bintools}/bin/${cross.config}-nm" + "RANLIB=${targetPackages.stdenv.cc.bintools}/bin/${cross.config}-ranlib" "--target=${cross.config}" "--enable-bootstrap-with-devel-snapshot" ] ++ # fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; - buildInputs = commonBuildInputs ++ [ stdenv.ccCross stdenv.binutils ]; + buildInputs = commonBuildInputs ++ [ stdenv.ccCross stdenv.targetPackages.stdenv.cc.bintools ]; dontSetConfigureCross = true; passthru = { inherit bootPkgs cross; cc = "${stdenv.ccCross}/bin/${cross.config}-cc"; - ld = "${stdenv.binutils}/bin/${cross.config}-ld"; + ld = "${stdenv.targetPackages.stdenv.cc.bintools}/bin/${cross.config}-ld"; }; }) diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index 362b4895b7e3..92ba3f6a46ed 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchgit, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +{ stdenv, lib, fetchgit, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils , autoconf, automake, happy, alex, python3, buildPlatform, targetPlatform , selfPkgs, cross ? null @@ -71,7 +71,7 @@ in stdenv.mkDerivation (rec { for i in "$out/bin/"*; do test ! -h $i || continue egrep --quiet '^#!' <(head -n 1 $i) || continue - sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ binutils coreutils ]}"' $i + sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i done ''; diff --git a/pkgs/development/compilers/halvm/2.4.0.nix b/pkgs/development/compilers/halvm/2.4.0.nix index 24fffcf603cb..0c4cef653d86 100644 --- a/pkgs/development/compilers/halvm/2.4.0.nix +++ b/pkgs/development/compilers/halvm/2.4.0.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchgit, bootPkgs, perl, gmp, ncurses, binutils, autoconf, alex, happy, makeStaticLibraries +{ stdenv, fetchgit, bootPkgs, perl, gmp, ncurses, targetPackages, autoconf, alex, happy, makeStaticLibraries , hscolour, xen, automake, gcc, git, zlib, libtool, enableIntegerSimple ? false }: @@ -17,14 +17,14 @@ stdenv.mkDerivation rec { sed -i '305 d' Makefile sed -i '309,439 d' Makefile # Removes RPM packaging sed -i '20 d' src/scripts/halvm-cabal.in - sed -ie 's|ld |${binutils}/bin/ld |g' src/scripts/ldkernel.in + sed -ie 's|ld |${targetPackages.stdenv.cc.bintools}/bin/ld |g' src/scripts/ldkernel.in ''; configureFlags = stdenv.lib.optional (!enableIntegerSimple) [ "--enable-gmp" ]; propagatedNativeBuildInputs = [ alex happy ]; buildInputs = let haskellPkgs = [ alex happy bootPkgs.hscolour bootPkgs.cabal-install bootPkgs.haddock bootPkgs.hpc ]; in [ bootPkgs.ghc - automake perl git binutils + automake perl git targetPackages.stdenv.cc.bintools autoconf xen zlib ncurses.dev libtool gmp ] ++ haskellPkgs; preConfigure = '' @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { inherit bootPkgs; cross.config = "halvm"; cc = "${gcc}/bin/gcc"; - ld = "${binutils}/bin/ld"; + ld = "${targetPackages.stdenv.cc.bintools}/bin/ld"; }; meta = { diff --git a/pkgs/development/compilers/rust/rustc.nix b/pkgs/development/compilers/rust/rustc.nix index a113f5db4807..9f96d05c1163 100644 --- a/pkgs/development/compilers/rust/rustc.nix +++ b/pkgs/development/compilers/rust/rustc.nix @@ -1,5 +1,6 @@ -{ stdenv, fetchurl, fetchgit, fetchzip, file, python2, tzdata, procps -, llvm, jemalloc, ncurses, darwin, binutils, rustPlatform, git, cmake, curl +{ stdenv, targetPackages +, fetchurl, fetchgit, fetchzip, file, python2, tzdata, procps +, llvm, jemalloc, ncurses, darwin, rustPlatform, git, cmake, curl , which, libffi, gdb , version , forceBundledLLVM ? false @@ -49,7 +50,7 @@ stdenv.mkDerivation { ++ [ "--enable-local-rust" "--local-rust-root=${rustPlatform.rust.rustc}" "--enable-rpath" ] ++ [ "--enable-vendor" "--disable-locked-deps" ] # ++ [ "--jemalloc-root=${jemalloc}/lib" - ++ [ "--default-linker=${stdenv.cc}/bin/cc" "--default-ar=${binutils.out}/bin/ar" ] + ++ [ "--default-linker=${targetPackages.stdenv.cc}/bin/cc" "--default-ar=${targetPackages.stdenv.cc.bintools}/bin/ar" ] ++ optional (!forceBundledLLVM) [ "--enable-llvm-link-shared" ] ++ optional (stdenv.cc.cc ? isClang) "--enable-clang" ++ optional (targets != []) "--target=${target}" diff --git a/pkgs/development/compilers/swift/default.nix b/pkgs/development/compilers/swift/default.nix index 7484d2568be9..937977b0a97d 100644 --- a/pkgs/development/compilers/swift/default.nix +++ b/pkgs/development/compilers/swift/default.nix @@ -1,4 +1,5 @@ { stdenv +, targetPackages , cmake , coreutils , glibc @@ -26,7 +27,6 @@ , rsync , git , libgit2 -, binutils , fetchFromGitHub , paxctl , findutils @@ -250,7 +250,7 @@ stdenv.mkDerivation rec { # TODO: Use wrappers to get these on the PATH for swift tools, instead ln -s ${clang}/bin/* $out/bin/ - ln -s ${binutils}/bin/ar $out/bin/ar + ln -s ${targetPackages.stdenv.cc.bintools}/bin/ar $out/bin/ar ''; # Hack to avoid TMPDIR in RPATHs. diff --git a/pkgs/stdenv/booter.nix b/pkgs/stdenv/booter.nix index a8f8be75545c..7364a586fc2a 100644 --- a/pkgs/stdenv/booter.nix +++ b/pkgs/stdenv/booter.nix @@ -47,13 +47,13 @@ stageFuns: let same as let - f_-1 = lnul; + f_-1 = lnul f_0; f_0 = op f_-1 x_0 f_1; f_1 = op f_0 x_1 f_2; f_2 = op f_1 x_2 f_3; ... f_n = op f_n-1 x_n f_n+1; - f_n+1 = rnul; + f_n+1 = rnul f_n; in f_0 */ @@ -62,13 +62,15 @@ stageFuns: let len = builtins.length list; go = pred: n: if n == len - then rnul + then rnul pred else let # Note the cycle -- call-by-need ensures finite fold. cur = op pred (builtins.elemAt list n) succ; succ = go cur (n + 1); in cur; - in go lnul 0; + lapp = lnul cur; + cur = go lapp 0; + in cur; # Take the list and disallow custom overrides in all but the final stage, # and allow it in the final flag. Only defaults this boolean field if it @@ -101,4 +103,15 @@ stageFuns: let targetPackages = if args.selfBuild or true then null else nextStage; }); -in dfold folder {} {} withAllowCustomOverrides + # This is a hack for resolving cross-compiled compilers' run-time + # deps. (That is, compilers that are themselves cross-compiled, as + # opposed to used to cross-compile packages.) + postStage = buildPackages: { + __raw = true; + stdenv.cc = + if buildPackages.stdenv.cc.isClang or false + then buildPackages.clang + else buildPackages.gcc; + }; + +in dfold folder postStage (_: {}) withAllowCustomOverrides