Skip to content

Commit

Permalink
ghcHEAD: update to 8.7
Browse files Browse the repository at this point in the history
  • Loading branch information
deepfire authored and peti committed Jan 27, 2019
1 parent c92101b commit ea19a8e
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 76 deletions.
45 changes: 30 additions & 15 deletions pkgs/development/compilers/ghc/head.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# build-tools
, bootPkgs
, autoconf, automake, coreutils, fetchgit, perl, python3, m4, sphinx
, autoconf, automake, coreutils, fetchgit, fetchurl, fetchpatch, perl, python3, m4, sphinx

, libiconv ? null, ncurses

Expand All @@ -21,12 +21,12 @@

, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useAndroidPrebuilt
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt

, # Whetherto build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows

, version ? "8.5.20180118"
, version ? "8.7.20190115"
, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
ghcFlavour ? stdenv.lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform) "perf-cross"
Expand Down Expand Up @@ -84,9 +84,9 @@ stdenv.mkDerivation (rec {
name = "${targetPrefix}ghc-${version}";

src = fetchgit {
url = "git://git.haskell.org/ghc.git";
rev = "e1d4140be4d2a1508015093b69e1ef53516e1eb6";
sha256 = "1gdcr10dd968d40qgljdwx9vfkva3yrvjm9a4nis7whaaac3ag58";
url = "https://gitlab.haskell.org/ghc/ghc.git/";
rev = "c9756dbf1ee58b117ea5c4ded45dea88030efd65";
sha256 = "0ja3ivyz4jrqkw6z1mdgsczxaqkjy5vw0nyyqlqr0bqxiw9p8834";
};

enableParallelBuilding = true;
Expand Down Expand Up @@ -122,6 +122,24 @@ stdenv.mkDerivation (rec {
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
'' + stdenv.lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
'' + stdenv.lib.optionalString targetPlatform.useAndroidPrebuilt ''
sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
'' + stdenv.lib.optionalString targetPlatform.isMusl ''
echo "patching llvm-targets for musl targets..."
echo "Cloning these existing '*-linux-gnu*' targets:"
grep linux-gnu llvm-targets | sed 's/^/ /'
echo "(go go gadget sed)"
sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
echo "llvm-targets now contains these '*-linux-musl*' targets:"
grep linux-musl llvm-targets | sed 's/^/ /'
echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
# (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
for x in configure aclocal.m4; do
substituteInPlace $x \
--replace '*-android*|*-gnueabi*)' \
'*-android*|*-gnueabi*|*-musleabi*)'
done
'';

# TODO(@Ericson2314): Always pass "--target" and always prefix.
Expand All @@ -131,8 +149,8 @@ stdenv.mkDerivation (rec {
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && ! enableIntegerSimple) [
"--with-gmp-includes=${gmp.dev}/include" "--with-gmp-libraries=${gmp.out}/lib"
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
Expand All @@ -149,12 +167,9 @@ stdenv.mkDerivation (rec {
# Make sure we never relax`$PATH` and hooks support for compatability.
strictDeps = true;

# Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
dontAddExtraLibs = true;

nativeBuildInputs = [
perl autoconf automake m4 python3
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
perl autoconf automake m4 python3 sphinx
bootPkgs.ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
];

# For building runtime libs
Expand Down Expand Up @@ -195,14 +210,14 @@ stdenv.mkDerivation (rec {
inherit enableShared;

# Our Cabal compiler name
haskellCompilerName = "ghc-8.5";
haskellCompilerName = "ghc-8.7";
};

meta = {
homepage = http://haskell.org/ghc;
description = "The Glasgow Haskell Compiler";
maintainers = with stdenv.lib.maintainers; [ marcweber andres peti ];
inherit (ghc.meta) license platforms;
inherit (bootPkgs.ghc.meta) license platforms;
};

} // stdenv.lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
Expand Down
100 changes: 42 additions & 58 deletions pkgs/development/haskell-modules/configuration-ghc-head.nix
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
##
## Caveat: a copy of configuration-ghc-8.6.x.nix with minor changes:
##
## 1. "8.7" strings
## 2. llvm 6
## 3. disabled library update: parallel
##
{ pkgs, haskellLib }:

with haskellLib;

self: super: {

# This compiler version needs llvm 5.x.
llvmPackages = pkgs.llvmPackages_5;
# This compiler version needs llvm 6.x.
llvmPackages = pkgs.llvmPackages_6;

# Disable GHC 8.7.x core libraries.
array = null;
Expand All @@ -20,12 +27,15 @@ self: super: {
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-prim = null;
ghc-heap = null;
ghci = null;
ghc-prim = null;
haskeline = null;
hpc = null;
integer-gmp = null;
libiserv = null;
mtl = null;
parallel = null;
parsec = null;
pretty = null;
process = null;
Expand All @@ -39,60 +49,34 @@ self: super: {
unix = null;
xhtml = null;

# jailbreak-cabal can use the native Cabal library.
jailbreak-cabal = super.jailbreak-cabal.override { Cabal = null; };

# haddock: No input file(s).
nats = dontHaddock super.nats;
bytestring-builder = dontHaddock super.bytestring-builder;

# We have time 1.5
aeson = disableCabalFlag super.aeson "old-locale";

# Setup: At least the following dependencies are missing: base <4.8
hspec-expectations = overrideCabal super.hspec-expectations (drv: {
postPatch = "sed -i -e 's|base < 4.8|base|' hspec-expectations.cabal";
});
utf8-string = overrideCabal super.utf8-string (drv: {
postPatch = "sed -i -e 's|base >= 4.3 && < 4.10|base|' utf8-string.cabal";
});

# bos/attoparsec#92
attoparsec = dontCheck super.attoparsec;

# test suite hangs silently for at least 10 minutes
split = dontCheck super.split;

# Test suite fails with some (seemingly harmless) error.
# https://code.google.com/p/scrapyourboilerplate/issues/detail?id=24
syb = dontCheck super.syb;

# Test suite has stricter version bounds
retry = dontCheck super.retry;

# Test suite fails with time >= 1.5
http-date = dontCheck super.http-date;

# Version 1.19.5 fails its test suite.
happy = dontCheck super.happy;

# Workaround for a workaround, see comment for "ghcjs" flag.
jsaddle = let jsaddle' = disableCabalFlag super.jsaddle "ghcjs";
in addBuildDepends jsaddle' [ self.glib self.gtk3 self.webkitgtk3
self.webkitgtk3-javascriptcore ];

# The compat library is empty in the presence of mtl 2.2.x.
mtl-compat = dontHaddock super.mtl-compat;

# Won't work with LLVM 3.5.
llvm-general = markBrokenVersion "3.4.5.3" super.llvm-general;

# A bunch of jailbreaks due to 'base' bump
old-time = doJailbreak super.old-time;
old-locale = doJailbreak super.old-locale;
primitive = doJailbreak super.primitive;
test-framework = doJailbreak super.test-framework;
atomic-primops = doJailbreak (appendPatch super.atomic-primops ./patches/atomic-primops-Cabal-1.25.patch);
hashable = doJailbreak super.hashable;
# https://github.com/tibbe/unordered-containers/issues/214
unordered-containers = dontCheck super.unordered-containers;

# Test suite does not compile.
cereal = dontCheck super.cereal;
data-clist = doJailbreak super.data-clist; # won't cope with QuickCheck 2.12.x
dates = doJailbreak super.dates; # base >=4.9 && <4.12
Diff = dontCheck super.Diff;
HaTeX = doJailbreak super.HaTeX; # containers >=0.4 && <0.6 is too tight; https://github.com/Daniel-Diaz/HaTeX/issues/126
hpc-coveralls = doJailbreak super.hpc-coveralls; # https://github.com/guillaume-nargeot/hpc-coveralls/issues/82
http-api-data = doJailbreak super.http-api-data;
persistent-sqlite = dontCheck super.persistent-sqlite;
psqueues = dontCheck super.psqueues; # won't cope with QuickCheck 2.12.x
system-fileio = dontCheck super.system-fileio; # avoid dependency on broken "patience"
unicode-transforms = dontCheck super.unicode-transforms;
wl-pprint-extras = doJailbreak super.wl-pprint-extras; # containers >=0.4 && <0.6 is too tight; https://github.com/ekmett/wl-pprint-extras/issues/17
RSA = dontCheck super.RSA; # https://github.com/GaloisInc/RSA/issues/14
monad-par = dontCheck super.monad-par; # https://github.com/simonmar/monad-par/issues/66
github = dontCheck super.github; # hspec upper bound exceeded; https://github.com/phadej/github/pull/341
binary-orphans = dontCheck super.binary-orphans; # tasty upper bound exceeded; https://github.com/phadej/binary-orphans/commit/8ce857226595dd520236ff4c51fa1a45d8387b33

# https://github.com/jgm/skylighting/issues/55
skylighting-core = dontCheck super.skylighting-core;

# Break out of "yaml >=0.10.4.0 && <0.11": https://github.com/commercialhaskell/stack/issues/4485
stack = doJailbreak super.stack;

# Fix build with ghc 8.6.x.
git-annex = appendPatch super.git-annex ./patches/git-annex-fix-ghc-8.6.x-build.patch;

}
6 changes: 3 additions & 3 deletions pkgs/top-level/haskell-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ in {
llvmPackages = pkgs.llvmPackages_6;
};
ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
bootPkgs = packages.ghc822Binary;
bootPkgs = packages.ghc863Binary;
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_5;
llvmPackages = pkgs.llvmPackages_5;
buildLlvmPackages = buildPackages.llvmPackages_6;
llvmPackages = pkgs.llvmPackages_6;
};
ghcjs = compiler.ghcjs84;
ghcjs82 = callPackage ../development/compilers/ghcjs-ng {
Expand Down

0 comments on commit ea19a8e

Please sign in to comment.