From a31365d831c5b73e2414d7e14c8612ef7972466e Mon Sep 17 00:00:00 2001 From: John Ericson Date: Fri, 15 Sep 2017 13:01:12 -0400 Subject: [PATCH] Revert "Merge commit on master into staging" This was reverted on master in 3510197dccd999ac7189e70d819e0c6a61296817, and so needs to be reverted here too. This reverts commit 3befba542a4264c970de7fde63baa736900c8e53, reversing changes made to 3655e7e18bf7c2b7eeadf824d8c4230a487ca16e. --- .../compilers/ghc/6.10.2-binary.nix | 33 +++++++-------- pkgs/development/compilers/ghc/6.10.4.nix | 5 --- pkgs/development/compilers/ghc/6.12.3.nix | 5 --- .../compilers/ghc/7.0.4-binary.nix | 33 +++++++-------- pkgs/development/compilers/ghc/7.0.4.nix | 5 --- pkgs/development/compilers/ghc/7.10.2.nix | 28 ++++--------- pkgs/development/compilers/ghc/7.10.3.nix | 28 ++++--------- pkgs/development/compilers/ghc/7.2.2.nix | 7 +--- .../compilers/ghc/7.4.2-binary.nix | 33 +++++++-------- pkgs/development/compilers/ghc/7.4.2.nix | 10 +---- pkgs/development/compilers/ghc/7.6.3.nix | 10 +---- pkgs/development/compilers/ghc/7.8.3.nix | 10 +---- pkgs/development/compilers/ghc/7.8.4.nix | 10 +---- pkgs/development/compilers/ghc/8.0.2.nix | 35 +++++----------- pkgs/development/compilers/ghc/8.2.1.nix | 41 ++++++------------- pkgs/development/compilers/ghc/head.nix | 40 ++++++------------ .../haskell-modules/generic-builder.nix | 38 +++++++---------- .../haskell-modules/make-package-set.nix | 25 +++++------ .../haskell-modules/with-packages-wrapper.nix | 5 ++- .../darwin/ghc-standalone-archive/default.nix | 3 +- 20 files changed, 132 insertions(+), 272 deletions(-) diff --git a/pkgs/development/compilers/ghc/6.10.2-binary.nix b/pkgs/development/compilers/ghc/6.10.2-binary.nix index 10792ffb05b..60749a29b58 100644 --- a/pkgs/development/compilers/ghc/6.10.2-binary.nix +++ b/pkgs/development/compilers/ghc/6.10.2-binary.nix @@ -1,29 +1,24 @@ -{ stdenv -, fetchurl, perl -, libedit, ncurses5, gmp -}: - -# Prebuilt only does native -assert stdenv.targetPlatform == stdenv.hostPlatform; +{stdenv, lib, fetchurl, perl, libedit, ncurses5, gmp}: stdenv.mkDerivation rec { version = "6.10.2"; name = "ghc-${version}-binary"; - src = { - "i686-linux" = fetchurl { + src = + if stdenv.system == "i686-linux" then + fetchurl { # This binary requires libedit.so.0 (rather than libedit.so.2). url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-i386-unknown-linux.tar.bz2"; sha256 = "1fw0zr2qshlpk8s0d16k27zcv5263nqdg2xds5ymw8ff6qz9rz9b"; - }; - "x86_64-linux" = fetchurl { + } + else if stdenv.system == "x86_64-linux" then + fetchurl { # Idem. url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-unknown-linux.tar.bz2"; sha256 = "1rd2j7lmcfsm2rdfb5g6q0l8dz3sxadk5m3d2f69d4a6g4p4h7jj"; - }; - }.${stdenv.hostPlatform.system} - or (throw "cannot bootstrap GHC on this platform"); + } + else throw "cannot bootstrap GHC on this platform"; buildInputs = [perl]; @@ -42,17 +37,17 @@ stdenv.mkDerivation rec { '' + # On Linux, use patchelf to modify the executables so that they can # find editline/gmp. - stdenv.lib.optionalString stdenv.hostPlatform.isLinux '' + (if stdenv.isLinux then '' find . -type f -perm -0100 \ -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath "${lib.makeLibraryPath [ libedit ncurses5 gmp ]}" {} \; for prog in ld ar gcc strip ranlib; do find . -name "setup-config" -exec sed -i "s@/usr/bin/$prog@$(type -p $prog)@g" {} \; done - ''; + '' else ""); configurePhase = '' - ./configure --prefix=$out --with-gmp-libraries=${stdenv.lib.getLib gmp}/lib --with-gmp-includes=${stdenv.lib.getDev gmp}/include + ./configure --prefix=$out --with-gmp-libraries=${lib.getLib gmp}/lib --with-gmp-includes=${lib.getDev gmp}/include ''; # Stripping combined with patchelf breaks the executables (they die @@ -67,7 +62,7 @@ stdenv.mkDerivation rec { # and create some wrapper scripts that set DYLD_FRAMEWORK_PATH so # that the executables work with no special setup. postInstall = - stdenv.lib.optionalString stdenv.hostPlatform.isDarwin + (if stdenv.isDarwin then '' mkdir -p $out/frameworks/GMP.framework/Versions/A ln -s ${gmp.out}/lib/libgmp.dylib $out/frameworks/GMP.framework/GMP @@ -84,7 +79,7 @@ stdenv.mkDerivation rec { echo \"DYLD_FRAMEWORK_PATH=$out/frameworks exec $out/bin-orig/$i -framework-path $out/frameworks \\\"\\$@\\\"\" >> $out/bin/$i chmod +x $out/bin/$i done - '' + '' else "") + '' # bah, the passing gmp doesn't work, so let's add it to the final package.conf in a quick but dirty way diff --git a/pkgs/development/compilers/ghc/6.10.4.nix b/pkgs/development/compilers/ghc/6.10.4.nix index 85dd31dda88..c56762edd24 100644 --- a/pkgs/development/compilers/ghc/6.10.4.nix +++ b/pkgs/development/compilers/ghc/6.10.4.nix @@ -1,8 +1,5 @@ {stdenv, fetchurl, libedit, ghc, perl, gmp, ncurses}: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; - stdenv.mkDerivation rec { version = "6.10.4"; @@ -25,8 +22,6 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = "-fomit-frame-pointer"; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/6.12.3.nix b/pkgs/development/compilers/ghc/6.12.3.nix index bd738f07942..a46ef66a8cb 100644 --- a/pkgs/development/compilers/ghc/6.12.3.nix +++ b/pkgs/development/compilers/ghc/6.12.3.nix @@ -1,8 +1,5 @@ {stdenv, fetchurl, ghc, perl, gmp, ncurses}: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; - stdenv.mkDerivation rec { version = "6.12.3"; @@ -36,8 +33,6 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags=["-S" "--keep-file-symbols"]; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.0.4-binary.nix b/pkgs/development/compilers/ghc/7.0.4-binary.nix index ad54b4aa9aa..6140cde4a9e 100644 --- a/pkgs/development/compilers/ghc/7.0.4-binary.nix +++ b/pkgs/development/compilers/ghc/7.0.4-binary.nix @@ -1,35 +1,32 @@ -{ stdenv -, fetchurl, perl -, ncurses5, gmp, libiconv -}: - -# Prebuilt only does native -assert stdenv.targetPlatform == stdenv.hostPlatform; +{stdenv, fetchurl, perl, ncurses5, gmp, libiconv}: stdenv.mkDerivation rec { version = "7.0.4"; name = "ghc-${version}-binary"; - src = { - "i686-linux" = fetchurl { + src = + if stdenv.system == "i686-linux" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-i386-unknown-linux.tar.bz2"; sha256 = "0mfnihiyjl06f5w1yrjp36sw9g67g2ymg5sdl0g23h1pab99jx63"; - }; - "x86_64-linux" = fetchurl { + } + else if stdenv.system == "x86_64-linux" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-unknown-linux.tar.bz2"; sha256 = "0mc4rhqcxz427wq4zgffmnn0d2yjqvy6af4x9mha283p1gdj5q99"; - }; - "i686-darwin" = fetchurl { + } + else if stdenv.system == "i686-darwin" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-i386-apple-darwin.tar.bz2"; sha256 = "0qj45hslrrr8zfks8m1jcb3awwx9rh35ndnpfmb0gwb6j7azq5n3"; - }; - "x86_64-darwin" = fetchurl { + } + else if stdenv.system == "x86_64-darwin" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-apple-darwin.tar.bz2"; sha256 = "1m2ml88p1swf4dnv2vq8hz4drcp46n3ahpfi05wh01ajkf8hnn3l"; - }; - }.${stdenv.hostPlatform.system} - or (throw "cannot bootstrap GHC on this platform"); + } + else throw "cannot bootstrap GHC on this platform"; buildInputs = [perl]; diff --git a/pkgs/development/compilers/ghc/7.0.4.nix b/pkgs/development/compilers/ghc/7.0.4.nix index a869c34c4f0..9d052ddb246 100644 --- a/pkgs/development/compilers/ghc/7.0.4.nix +++ b/pkgs/development/compilers/ghc/7.0.4.nix @@ -1,8 +1,5 @@ { stdenv, fetchurl, ghc, perl, gmp, ncurses, libiconv }: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; - stdenv.mkDerivation rec { version = "7.0.4"; name = "ghc-${version}"; @@ -45,8 +42,6 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags=["-S" "--keep-file-symbols"]; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.10.2.nix b/pkgs/development/compilers/ghc/7.10.2.nix index 5c6533f6c30..863f904e4e9 100644 --- a/pkgs/development/compilers/ghc/7.10.2.nix +++ b/pkgs/development/compilers/ghc/7.10.2.nix @@ -1,28 +1,14 @@ -{ stdenv, __targetPackages -, buildPlatform, hostPlatform, targetPlatform +{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour -# build-tools -, bootPkgs, hscolour -, binutils, coreutils, fetchurl, fetchpatch, perl -, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, libxml2, libxslt - -, ncurses, libiconv - -, # If enabled GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -assert !enableIntegerSimple -> gmp != null; - let inherit (bootPkgs) ghc; - # TODO(@Ericson2314) Make unconditional - prefix = stdenv.lib.optionalString - (targetPlatform != hostPlatform) - "${targetPlatform.config}-"; - buildMK = '' libraries/terminfo_CONFIGURE_OPTS += --configure-option=--with-curses-includes="${ncurses.dev}/include" libraries/terminfo_CONFIGURE_OPTS += --configure-option=--with-curses-libraries="${ncurses.out}/lib" @@ -41,7 +27,7 @@ in stdenv.mkDerivation rec { version = "7.10.2"; - name = "${prefix}ghc-${version}"; + name = "ghc-${version}"; src = fetchurl { url = "https://downloads.haskell.org/~ghc/7.10.2/${name}-src.tar.xz"; @@ -78,7 +64,7 @@ stdenv.mkDerivation rec { postInstall = '' # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${prefix}ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -89,7 +75,7 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit bootPkgs prefix; + inherit bootPkgs; }; meta = { diff --git a/pkgs/development/compilers/ghc/7.10.3.nix b/pkgs/development/compilers/ghc/7.10.3.nix index 96d0111970c..eb8f1dddd19 100644 --- a/pkgs/development/compilers/ghc/7.10.3.nix +++ b/pkgs/development/compilers/ghc/7.10.3.nix @@ -1,28 +1,14 @@ -{ stdenv, __targetPackages -, buildPlatform, hostPlatform, targetPlatform +{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour -# build-tools -, bootPkgs, hscolour -, binutils, coreutils, fetchurl, fetchpatch, perl -, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, libxml2, libxslt - -, ncurses, libiconv - -, # If enabled GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -assert !enableIntegerSimple -> gmp != null; - let inherit (bootPkgs) ghc; - # TODO(@Ericson2314) Make unconditional - prefix = stdenv.lib.optionalString - (targetPlatform != hostPlatform) - "${targetPlatform.config}-"; - docFixes = fetchurl { url = "https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3a.patch"; sha256 = "1j45z4kcd3w1rzm4hapap2xc16bbh942qnzzdbdjcwqznsccznf0"; @@ -32,7 +18,7 @@ in stdenv.mkDerivation rec { version = "7.10.3"; - name = "${prefix}ghc-${version}"; + name = "ghc-${version}"; src = fetchurl { url = "https://downloads.haskell.org/~ghc/${version}/${name}-src.tar.xz"; @@ -76,7 +62,7 @@ stdenv.mkDerivation rec { postInstall = '' # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${prefix}ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -87,7 +73,7 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit bootPkgs prefix; + inherit bootPkgs; }; meta = { diff --git a/pkgs/development/compilers/ghc/7.2.2.nix b/pkgs/development/compilers/ghc/7.2.2.nix index 72d49816664..156ff56bd66 100644 --- a/pkgs/development/compilers/ghc/7.2.2.nix +++ b/pkgs/development/compilers/ghc/7.2.2.nix @@ -2,12 +2,9 @@ # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; - stdenv.mkDerivation rec { version = "7.2.2"; name = "ghc-${version}"; @@ -54,8 +51,6 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags=["-S" "--keep-file-symbols"]; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.4.2-binary.nix b/pkgs/development/compilers/ghc/7.4.2-binary.nix index eae45bc0b92..100bb87768b 100644 --- a/pkgs/development/compilers/ghc/7.4.2-binary.nix +++ b/pkgs/development/compilers/ghc/7.4.2-binary.nix @@ -1,35 +1,32 @@ -{ stdenv -, fetchurl, perl, makeWrapper -, ncurses5, gmp, libiconv -}: - -# Prebuilt only does native -assert stdenv.targetPlatform == stdenv.hostPlatform; +{stdenv, fetchurl, perl, ncurses5, gmp, libiconv, makeWrapper}: stdenv.mkDerivation rec { version = "7.4.2"; name = "ghc-${version}-binary"; - src = { - "i686-linux" = fetchurl { + src = + if stdenv.system == "i686-linux" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-i386-unknown-linux.tar.bz2"; sha256 = "0gny7knhss0w0d9r6jm1gghrcb8kqjvj94bb7hxf9syrk4fxlcxi"; - }; - "x86_64-linux" = fetchurl { + } + else if stdenv.system == "x86_64-linux" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-unknown-linux.tar.bz2"; sha256 = "043jabd0lh6n1zlqhysngbpvlsdznsa2mmsj08jyqgahw9sjb5ns"; - }; - "i686-darwin" = fetchurl { + } + else if stdenv.system == "i686-darwin" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-i386-apple-darwin.tar.bz2"; sha256 = "1vrbs3pzki37hzym1f1nh07lrqh066z3ypvm81fwlikfsvk4djc0"; - }; - "x86_64-darwin" = fetchurl { + } + else if stdenv.system == "x86_64-darwin" then + fetchurl { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-apple-darwin.tar.bz2"; sha256 = "1imzqc0slpg0r6p40n5a9m18cbcm0m86z8dgyhfxcckksw54mzwf"; - }; - }.${stdenv.hostPlatform.system} - or (throw "cannot bootstrap GHC on this platform"); + } + else throw "cannot bootstrap GHC on this platform"; buildInputs = [perl]; diff --git a/pkgs/development/compilers/ghc/7.4.2.nix b/pkgs/development/compilers/ghc/7.4.2.nix index 046a3a0fae6..e5bc4724c9e 100644 --- a/pkgs/development/compilers/ghc/7.4.2.nix +++ b/pkgs/development/compilers/ghc/7.4.2.nix @@ -1,14 +1,10 @@ { stdenv, fetchurl, ghc, perl, ncurses, libiconv -, # If enabled GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; -assert !enableIntegerSimple -> gmp != null; - stdenv.mkDerivation rec { version = "7.4.2"; @@ -56,8 +52,6 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.6.3.nix b/pkgs/development/compilers/ghc/7.6.3.nix index ab288f222f9..5f951936046 100644 --- a/pkgs/development/compilers/ghc/7.6.3.nix +++ b/pkgs/development/compilers/ghc/7.6.3.nix @@ -1,14 +1,10 @@ { stdenv, fetchurl, ghc, perl, ncurses, binutils, libiconv -, # If enabled GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; -assert !enableIntegerSimple -> gmp != null; - let # The "-Wa,--noexecstack" options might be needed only with GNU ld (as opposed # to the gold linker). It prevents binaries' stacks from being marked as @@ -82,8 +78,6 @@ in stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.8.3.nix b/pkgs/development/compilers/ghc/7.8.3.nix index b147c787caf..50b0108861f 100644 --- a/pkgs/development/compilers/ghc/7.8.3.nix +++ b/pkgs/development/compilers/ghc/7.8.3.nix @@ -1,14 +1,10 @@ { stdenv, fetchurl, ghc, perl, ncurses, libiconv -, # If enabled GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; -assert !enableIntegerSimple -> gmp != null; - stdenv.mkDerivation rec { version = "7.8.3"; name = "ghc-${version}"; @@ -53,8 +49,6 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.8.4.nix b/pkgs/development/compilers/ghc/7.8.4.nix index db4f46fb880..5a380c75c69 100644 --- a/pkgs/development/compilers/ghc/7.8.4.nix +++ b/pkgs/development/compilers/ghc/7.8.4.nix @@ -1,14 +1,10 @@ { stdenv, fetchurl, ghc, perl, ncurses, libiconv -, # If enabled GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -# TODO(@Ericson2314): Cross compilation support -assert stdenv.targetPlatform == stdenv.hostPlatform; -assert !enableIntegerSimple -> gmp != null; - stdenv.mkDerivation (rec { version = "7.8.4"; name = "ghc-${version}"; @@ -53,8 +49,6 @@ stdenv.mkDerivation (rec { # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; - passthru = { prefix = ""; }; - meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/8.0.2.nix b/pkgs/development/compilers/ghc/8.0.2.nix index 2ac24ec1683..e50a8df7352 100644 --- a/pkgs/development/compilers/ghc/8.0.2.nix +++ b/pkgs/development/compilers/ghc/8.0.2.nix @@ -1,30 +1,18 @@ -{ stdenv, __targetPackages -, buildPlatform, hostPlatform, targetPlatform +{ stdenv, lib, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +, hscolour, patchutils, sphinx -# build-tools -, bootPkgs, hscolour -, binutils, coreutils, fetchurl, fetchpatch, patchutils, perl, sphinx - -, libiconv, ncurses - -, # If enabled GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp +, cross ? null }: -assert !enableIntegerSimple -> gmp != null; - let inherit (bootPkgs) ghc; - - # TODO(@Ericson2314) Make unconditional - prefix = stdenv.lib.optionalString - (targetPlatform != hostPlatform) - "${targetPlatform.config}-"; in stdenv.mkDerivation rec { version = "8.0.2"; - name = "${prefix}ghc-${version}"; + name = "ghc-${version}"; src = fetchurl { url = "https://downloads.haskell.org/~ghc/8.0.2/${name}-src.tar.xz"; @@ -59,20 +47,19 @@ stdenv.mkDerivation rec { "--with-gmp-includes=${gmp.dev}/include" "--with-gmp-libraries=${gmp.out}/lib" ] ++ stdenv.lib.optional stdenv.isDarwin [ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" - ] ++ stdenv.lib.optionals (targetPlatform.isDarwin && targetPlatform.isAarch64) [ + ] ++ # fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ - "--disable-large-address-space" - ]; + lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; # required, because otherwise all symbols from HSffi.o are stripped, and # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; postInstall = '' - paxmark m $out/lib/${name}/bin/${if targetPlatform != hostPlatform then "ghc" else "{ghc,haddock}"} + paxmark m $out/lib/${name}/bin/{ghc,haddock} # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${prefix}ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -83,7 +70,7 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit bootPkgs prefix; + inherit bootPkgs; }; meta = { diff --git a/pkgs/development/compilers/ghc/8.2.1.nix b/pkgs/development/compilers/ghc/8.2.1.nix index a3d2f73c87e..dde56df8131 100644 --- a/pkgs/development/compilers/ghc/8.2.1.nix +++ b/pkgs/development/compilers/ghc/8.2.1.nix @@ -1,30 +1,16 @@ -{ stdenv, __targetPackages -, buildPlatform, hostPlatform, targetPlatform -, selfPkgs, cross ? null +{ stdenv, lib, fetchurl, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +, autoconf, automake, happy, alex, python3, sphinx, hscolour +, buildPlatform, targetPlatform , selfPkgs, cross ? null -# build-tools -, bootPkgs, alex, happy, hscolour -, autoconf, automake, binutils, coreutils, fetchurl, perl, python3, sphinx - -, libiconv ? null, ncurses - -, # If enabled, GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null +, enableIntegerSimple ? false, gmp }: -assert !enableIntegerSimple -> gmp != null; - let inherit (bootPkgs) ghc; - version = "8.2.1"; - # TODO(@Ericson2314) Make unconditional - prefix = stdenv.lib.optionalString - (targetPlatform != hostPlatform) - "${targetPlatform.config}-"; - commonBuildInputs = [ alex autoconf automake ghc happy hscolour perl python3 sphinx ]; commonPreConfigure = '' sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure @@ -35,10 +21,9 @@ let '' + stdenv.lib.optionalString enableIntegerSimple '' echo "INTEGER_LIBRARY=integer-simple" > mk/build.mk ''; -in -stdenv.mkDerivation (rec { +in stdenv.mkDerivation (rec { inherit version; - name = "${prefix}ghc-${version}"; + name = "ghc-${version}"; src = fetchurl { url = "https://downloads.haskell.org/~ghc/${version}/${name}-src.tar.xz"; @@ -67,17 +52,15 @@ stdenv.mkDerivation (rec { # required, because otherwise all symbols from HSffi.o are stripped, and # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; + stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; checkTarget = "test"; - # zsh and other shells are smart about `{ghc}` but bash isn't, and doesn't - # treat that as a unary `{x,y,z,..}` repetition. postInstall = '' - paxmark m $out/lib/${name}/bin/${if targetPlatform != hostPlatform then "ghc" else "{ghc,haddock}"} + paxmark m $out/lib/${name}/bin/{ghc,haddock} # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${prefix}ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -90,7 +73,7 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; passthru = { - inherit bootPkgs prefix; + inherit bootPkgs; } // stdenv.lib.optionalAttrs (targetPlatform != buildPlatform) { crossCompiler = selfPkgs.ghc.override { cross = targetPlatform; @@ -122,7 +105,7 @@ stdenv.mkDerivation (rec { "--enable-bootstrap-with-devel-snapshot" ] ++ # fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ - stdenv.lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; + lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; buildInputs = commonBuildInputs ++ [ stdenv.ccCross stdenv.binutils ]; diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index 349f9963e53..362b4895b7e 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -1,33 +1,20 @@ -{ stdenv, __targetPackages -, buildPlatform, hostPlatform, targetPlatform +{ stdenv, lib, fetchgit, bootPkgs, perl, ncurses, libiconv, binutils, coreutils +, autoconf, automake, happy, alex, python3, buildPlatform, targetPlatform , selfPkgs, cross ? null -# build-tools -, bootPkgs, alex, happy -, autoconf, automake, binutils, coreutils, fetchgit, perl, python3 - -, libiconv ? null, ncurses - -, # If enabled, GHC will be build with the GPL-free but slower integer-simple + # If enabled GHC will be build with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. - enableIntegerSimple ? false, gmp ? null - +, enableIntegerSimple ? false, gmp , version ? "8.3.20170808" }: -assert !enableIntegerSimple -> gmp != null; - let inherit (bootPkgs) ghc; + commonBuildInputs = [ ghc perl autoconf automake happy alex python3 ]; + rev = "14457cf6a50f708eecece8f286f08687791d51f7"; - # TODO(@Ericson2314) Make unconditional - prefix = stdenv.lib.optionalString - (targetPlatform != hostPlatform) - "${targetPlatform.config}-"; - - commonBuildInputs = [ ghc perl autoconf automake happy alex python3 ]; commonPreConfigure = '' echo ${version} >VERSION echo ${rev} >GIT_COMMIT_ID @@ -40,8 +27,7 @@ let '' + stdenv.lib.optionalString enableIntegerSimple '' echo "INTEGER_LIBRARY=integer-simple" > mk/build.mk ''; -in -stdenv.mkDerivation (rec { +in stdenv.mkDerivation (rec { inherit version rev; name = "ghc-${version}"; @@ -71,17 +57,15 @@ stdenv.mkDerivation (rec { # required, because otherwise all symbols from HSffi.o are stripped, and # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; + stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; checkTarget = "test"; - # zsh and other shells are smart about `{ghc}` but bash isn't, and doesn't - # treat that as a unary `{x,y,z,..}` repetition. postInstall = '' - paxmark m $out/lib/${name}/bin/${if targetPlatform != hostPlatform then "ghc" else "{ghc,haddock}"} + paxmark m $out/lib/${name}/bin/{ghc,haddock} # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${prefix}ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -94,7 +78,7 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; passthru = { - inherit bootPkgs prefix; + inherit bootPkgs; } // stdenv.lib.optionalAttrs (targetPlatform != buildPlatform) { crossCompiler = selfPkgs.ghc.override { cross = targetPlatform; @@ -126,7 +110,7 @@ stdenv.mkDerivation (rec { "--enable-bootstrap-with-devel-snapshot" ] ++ # fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ - stdenv.lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; + lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; buildInputs = commonBuildInputs; diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix index 555ef31f0bb..60cce56cca0 100644 --- a/pkgs/development/haskell-modules/generic-builder.nix +++ b/pkgs/development/haskell-modules/generic-builder.nix @@ -1,14 +1,7 @@ -{ stdenv, buildPackages, ghc -, jailbreak-cabal, hscolour, cpphs, nodejs -, buildPlatform, hostPlatform +{ stdenv, fetchurl, ghc, pkgconfig, glibcLocales, coreutils, gnugrep, gnused +, jailbreak-cabal, hscolour, cpphs, nodejs, lib, removeReferencesTo }: - -let - isCross = buildPlatform != hostPlatform; - inherit (buildPackages) - fetchurl removeReferencesTo - pkgconfig binutils coreutils gnugrep gnused glibcLocales; -in +let isCross = (ghc.cross or null) != null; in { pname , dontStrip ? (ghc.isGhcjs or false) @@ -27,8 +20,8 @@ in , enableLibraryProfiling ? false , enableExecutableProfiling ? false # TODO enable shared libs for cross-compiling -, enableSharedExecutables ? ((ghc.isGhcjs or false) || stdenv.lib.versionOlder "7.7" ghc.version) -, enableSharedLibraries ? ((ghc.isGhcjs or false) || stdenv.lib.versionOlder "7.7" ghc.version) +, enableSharedExecutables ? !isCross && (((ghc.isGhcjs or false) || stdenv.lib.versionOlder "7.7" ghc.version)) +, enableSharedLibraries ? !isCross && (((ghc.isGhcjs or false) || stdenv.lib.versionOlder "7.7" ghc.version)) , enableSplitObjs ? null # OBSOLETE, use enableDeadCodeElimination , enableDeadCodeElimination ? (!stdenv.isDarwin) # TODO: use -dead_strip for darwin , enableStaticLibraries ? true @@ -60,7 +53,7 @@ in , shellHook ? "" , coreSetup ? false # Use only core packages to build Setup.hs. , useCpphs ? false -, hardeningDisable ? stdenv.lib.optional (ghc.isHaLVM or false) "all" +, hardeningDisable ? lib.optional (ghc.isHaLVM or false) "all" , enableSeparateDataOutput ? false , enableSeparateDocOutput ? doHaddock } @ args: @@ -109,12 +102,11 @@ let enableParallelBuilding = (versionOlder "7.8" ghc.version && !hasActiveLibrary) || versionOlder "8.0.1" ghc.version; crossCabalFlags = [ - "--with-ghc=${ghc.prefix}ghc" - "--with-ghc-pkg=${ghc.prefix}ghc-pkg" - "--with-gcc=${ghc.prefix}cc" - "--with-ld=${ghc.prefix}ld" + "--with-ghc=${ghc.cross.config}-ghc" + "--with-ghc-pkg=${ghc.cross.config}-ghc-pkg" + "--with-gcc=${ghc.cc}" + "--with-ld=${ghc.ld}" "--with-hsc2hs=${nativeGhc}/bin/hsc2hs" - "--with-strip=${binutils}/bin/${ghc.prefix}strip" ] ++ (if isHaLVM then [] else ["--hsc2hs-options=--cross-compile"]); crossCabalFlagsString = @@ -143,7 +135,7 @@ let ] ++ optionals isGhcjs [ "--ghcjs" ] ++ optionals isCross ([ - "--configure-option=--host=${hostPlatform.config}" + "--configure-option=--host=${ghc.cross.config}" ] ++ crossCabalFlags); setupCompileFlags = [ @@ -178,7 +170,8 @@ let setupBuilder = if isCross then "${nativeGhc}/bin/ghc" else ghcCommand; setupCommand = "./Setup"; ghcCommand' = if isGhcjs then "ghcjs" else "ghc"; - ghcCommand = "${ghc.prefix}${ghcCommand'}"; + crossPrefix = if (ghc.cross or null) != null then "${ghc.cross.config}-" else ""; + ghcCommand = "${crossPrefix}${ghcCommand'}"; ghcCommandCaps= toUpper ghcCommand'; in @@ -275,8 +268,6 @@ stdenv.mkDerivation ({ runHook postCompileBuildDriver ''; - inherit configureFlags; - configurePhase = '' runHook preConfigure @@ -402,6 +393,7 @@ stdenv.mkDerivation ({ // optionalAttrs (postCompileBuildDriver != "") { inherit postCompileBuildDriver; } // optionalAttrs (preUnpack != "") { inherit preUnpack; } // optionalAttrs (postUnpack != "") { inherit postUnpack; } +// optionalAttrs (configureFlags != []) { inherit configureFlags; } // optionalAttrs (patches != []) { inherit patches; } // optionalAttrs (patchPhase != "") { inherit patchPhase; } // optionalAttrs (preConfigure != "") { inherit preConfigure; } @@ -420,5 +412,5 @@ stdenv.mkDerivation ({ // optionalAttrs (postFixup != "") { inherit postFixup; } // optionalAttrs (dontStrip) { inherit dontStrip; } // optionalAttrs (hardeningDisable != []) { inherit hardeningDisable; } -// optionalAttrs (buildPlatform.isLinux){ LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive"; } +// optionalAttrs (stdenv.isLinux) { LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive"; } ) diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index deeeeb7a5a8..ff5be894b92 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -1,10 +1,7 @@ # This expression takes a file like `hackage-packages.nix` and constructs # a full package set out of that. -{ # package-set used for build tools (all of nixpkgs) - buildPackages - -, # package-set used for non-haskell dependencies (all of nixpkgs) +{ # package-set used for non-haskell dependencies (all of nixpkgs) pkgs , # stdenv to use for building haskell packages @@ -31,21 +28,19 @@ self: let - inherit (stdenv) buildPlatform hostPlatform; inherit (stdenv.lib) fix' extends makeOverridable; inherit (haskellLib) overrideCabal; - buildHaskellPackages = if hostPlatform != buildPlatform - then self.ghc.bootPkgs - else self; - mkDerivationImpl = pkgs.callPackage ./generic-builder.nix { inherit stdenv; - nodejs = buildPackages.nodejs-slim; - inherit (buildHaskellPackages) jailbreak-cabal; + inherit (pkgs) fetchurl pkgconfig glibcLocales coreutils gnugrep gnused; + nodejs = pkgs.nodejs-slim; + jailbreak-cabal = if (self.ghc.cross or null) != null + then self.ghc.bootPkgs.jailbreak-cabal + else self.jailbreak-cabal; inherit (self) ghc; - hscolour = overrideCabal buildHaskellPackages.hscolour (drv: { + hscolour = overrideCabal self.hscolour (drv: { isLibrary = false; doHaddock = false; hyperlinkSource = false; # Avoid depending on hscolour for this build. @@ -109,13 +104,13 @@ let haskellSrc2nix = { name, src, sha256 ? null }: let sha256Arg = if isNull sha256 then "--sha256=" else ''--sha256="${sha256}"''; - in pkgs.buildPackages.stdenv.mkDerivation { + in pkgs.stdenv.mkDerivation { name = "cabal2nix-${name}"; - nativeBuildInputs = [ pkgs.buildPackages.haskellPackages.cabal2nix ]; + buildInputs = [ pkgs.haskellPackages.cabal2nix ]; preferLocalBuild = true; phases = ["installPhase"]; LANG = "en_US.UTF-8"; - LOCALE_ARCHIVE = pkgs.lib.optionalString buildPlatform.isLinux "${buildPackages.glibcLocales}/lib/locale/locale-archive"; + LOCALE_ARCHIVE = pkgs.lib.optionalString pkgs.stdenv.isLinux "${pkgs.glibcLocales}/lib/locale/locale-archive"; installPhase = '' export HOME="$TMP" mkdir -p "$out" diff --git a/pkgs/development/haskell-modules/with-packages-wrapper.nix b/pkgs/development/haskell-modules/with-packages-wrapper.nix index fb96f0bcbae..ec7d961581a 100644 --- a/pkgs/development/haskell-modules/with-packages-wrapper.nix +++ b/pkgs/development/haskell-modules/with-packages-wrapper.nix @@ -36,8 +36,9 @@ let isHaLVM = ghc.isHaLVM or false; ghc761OrLater = isGhcjs || isHaLVM || lib.versionOlder "7.6.1" ghc.version; packageDBFlag = if ghc761OrLater then "--global-package-db" else "--global-conf"; - ghcCommand' = if isGhcjs then "ghcjs" else "ghc"; - ghcCommand = "${ghc.prefix}${ghcCommand'}"; + ghcCommand' = if isGhcjs then "ghcjs" else "ghc"; + crossPrefix = if (ghc.cross or null) != null then "${ghc.cross.config}-" else ""; + ghcCommand = "${crossPrefix}${ghcCommand'}"; ghcCommandCaps= lib.toUpper ghcCommand'; libDir = if isHaLVM then "$out/lib/HaLVM-${ghc.version}" else "$out/lib/${ghcCommand}-${ghc.version}"; docDir = "$out/share/doc/ghc/html"; diff --git a/pkgs/os-specific/darwin/ghc-standalone-archive/default.nix b/pkgs/os-specific/darwin/ghc-standalone-archive/default.nix index 227a8c59985..d23328d362e 100644 --- a/pkgs/os-specific/darwin/ghc-standalone-archive/default.nix +++ b/pkgs/os-specific/darwin/ghc-standalone-archive/default.nix @@ -2,7 +2,8 @@ { haskellPackages, src, deps ? p : [], name }: let inherit (haskellPackages) ghc ghcWithPackages; with-env = ghcWithPackages deps; - ghcName = "${ghc.prefix}ghc"; + crossPrefix = if (ghc.cross or null) != null then "${ghc.cross.config}-" else ""; + ghcName = "${crossPrefix}ghc"; in runCommand name { buildInputs = [ with-env cctools ]; } '' mkdir -p $out/lib mkdir -p $out/include