Merge pull request #116096 from NixOS/haskell-updates

Update Haskell package set to Stackage Nightly 2021-03-17 (plus other fixes)
This commit is contained in:
Peter Simons 2021-03-19 21:24:10 +01:00 committed by GitHub
commit a839c811a5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 2819 additions and 4780 deletions

View file

@ -1,6 +1,6 @@
{ fetchurl }:
fetchurl {
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/c0fe8e827d5ec71141700f5d5a90a6f6616ecbc5.tar.gz";
sha256 = "16is1cipkfiabbh01i247vqfviwzjpfhgf6pkli61wwlhnk0q95s";
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/fd3fefef13b49cbcd9a08b46c2aa4ceb204de5e0.tar.gz";
sha256 = "1dr4bqsisizw3qn9qxjpbk0rjri6s0gv9g9717cwfcixy940af2s";
}

View file

@ -1,5 +1,5 @@
{ lib, stdenv, pkgs
, haskell, nodejs
, haskell, haskellPackages, nodejs
, fetchurl, fetchpatch, makeWrapper, writeScriptBin
# Rust dependecies
, rustPlatform, openssl, pkg-config, Security
@ -7,7 +7,7 @@
let
fetchElmDeps = import ./fetchElmDeps.nix { inherit stdenv lib fetchurl; };
hsPkgs = haskell.packages.ghc8103.override {
hsPkgs = haskellPackages.override {
overrides = self: super: with haskell.lib; with lib;
let elmPkgs = rec {
elm = overrideCabal (self.callPackage ./packages/elm.nix { }) (drv: {

View file

@ -1,268 +0,0 @@
{ lib, stdenv, pkgsBuildTarget, targetPackages
# build-tools
, bootPkgs
, autoconf, automake, coreutils, fetchurl, perl, python3, m4, sphinx
, bash
, libiconv ? null, ncurses
, # GHC can be built with system libffi or a bundled one.
libffi ? null
, useLLVM ? !stdenv.targetPlatform.isx86
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
# build-time dependency too.
buildLlvmPackages, llvmPackages
, # If enabled, GHC will be built with the GPL-free but slower integer-simple
# library instead of the faster but GPLed integer-gmp library.
enableIntegerSimple ? !(lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
, # If enabled, use -fPIC when compiling static libs.
enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
# aarch64 outputs otherwise exceed 2GB limit
, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64
, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt
, # Whether to build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows
, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
(if useLLVM then "perf-cross" else "perf-cross-ncg")
, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
}:
assert !enableIntegerSimple -> gmp != null;
let
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
inherit (bootPkgs) ghc;
# TODO(@Ericson2314) Make unconditional
targetPrefix = lib.optionalString
(targetPlatform != hostPlatform)
"${targetPlatform.config}-";
buildMK = dontStrip: ''
BuildFlavour = ${ghcFlavour}
ifneq \"\$(BuildFlavour)\" \"\"
include mk/flavours/\$(BuildFlavour).mk
endif
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
''
# We only need to build stage1 on most cross-compilation because
# we will be running the compiler on the native system. In some
# situations, like native Musl compilation, we need the compiler
# to actually link to our new Libc. The iOS simulator is a special
# exception because we cant actually run simulators binaries
# ourselves.
+ lib.optionalString (targetPlatform != hostPlatform) ''
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
CrossCompilePrefix = ${targetPrefix}
HADDOCK_DOCS = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
'' + lib.optionalString dontStrip ''
STRIP_CMD = :
'' + lib.optionalString (!enableProfiledLibs) ''
GhcLibWays = "v dyn"
'' + lib.optionalString enableRelocatedStaticLibs ''
GhcLibHcOpts += -fPIC
GhcRtsHcOpts += -fPIC
'' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
EXTRA_CC_OPTS += -std=gnu99
'';
# Splicer will pull out correct variations
libDeps = platform: lib.optional enableTerminfo ncurses
++ [libffi]
++ lib.optional (!enableIntegerSimple) gmp
++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
] ++ lib.optional useLLVM buildLlvmPackages.llvm;
targetCC = builtins.head toolsForTarget;
# ld.gold is disabled for musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
# see #84670 and #49071 for more background.
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false) && !targetPlatform.isMusl;
in
stdenv.mkDerivation (rec {
version = "8.10.1";
name = "${targetPrefix}ghc-${version}";
src = fetchurl {
url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "1xgdl6ig5jzli3bg054vfryfkg0y6wggf68g66c32sr67bw0ffsf";
};
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
patches = [
# See upstream patch at
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build
# from source distributions, the auto-generated configure script needs to be
# patched as well, therefore we use an in-tree patch instead of pulling the
# upstream patch. Don't forget to check backport status of the upstream patch
# when adding new GHC releases in nixpkgs.
./respect-ar-path.patch
];
postPatch = "patchShebangs .";
# GHC is a bit confused on its cross terminology.
preConfigure = ''
for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
export "''${env#TARGET_}=''${!env}"
done
# GHC is a bit confused on its cross terminology, as these would normally be
# the *host* tools.
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
echo -n "${buildMK dontStrip}" > mk/build.mk
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
'' + lib.optionalString (!stdenv.isDarwin) ''
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
'' + lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
'' + 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
'' + 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.
configurePlatforms = [ "build" "host" ]
++ lib.optional (targetPlatform != hostPlatform) "target";
# `--with` flags for libraries needed for RTS linker
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ lib.optionals (libffi != null) [
"--with-system-libffi"
"--with-ffi-includes=${targetPackages.libffi.dev}/include"
"--with-ffi-libraries=${targetPackages.libffi.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include"
"--with-gmp-libraries=${targetPackages.gmp.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include"
"--with-iconv-libraries=${libiconv}/lib"
] ++ lib.optionals (targetPlatform != hostPlatform) [
"--enable-bootstrap-with-devel-snapshot"
] ++ lib.optionals useLdGold [
"CFLAGS=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
];
# Make sure we never relax`$PATH` and hooks support for compatibility.
strictDeps = true;
# Dont add -liconv to LDFLAGS automatically so that GHC will add it itself.
dontAddExtraLibs = true;
nativeBuildInputs = [
perl autoconf automake m4 python3 sphinx
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
];
# For building runtime libs
depsBuildTarget = toolsForTarget;
buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
propagatedBuildInputs = [ targetPackages.stdenv.cc ]
++ lib.optional useLLVM llvmPackages.llvm;
depsTargetTarget = map lib.getDev (libDeps targetPlatform);
depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
# required, because otherwise all symbols from HSffi.o are stripped, and
# that in turn causes GHCi to abort
stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
checkTarget = "test";
hardeningDisable = [ "format" ] ++ lib.optional stdenv.targetPlatform.isMusl "pie";
postInstall = ''
# Install the bash completion file.
install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
# Patch scripts to include "readelf" and "cat" in $PATH.
for i in "$out/bin/"*; do
test ! -h $i || continue
egrep --quiet '^#!' <(head -n 1 $i) || continue
sed -i -e '2i export PATH="$PATH:${lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i
done
'';
passthru = {
inherit bootPkgs targetPrefix;
inherit llvmPackages;
inherit enableShared;
# Our Cabal compiler name
haskellCompilerName = "ghc-${version}";
};
meta = {
homepage = "http://haskell.org/ghc";
description = "The Glasgow Haskell Compiler";
maintainers = with lib.maintainers; [ marcweber andres peti ];
timeout = 24 * 3600;
inherit (ghc.meta) license platforms;
};
dontStrip = (targetPlatform.useAndroidPrebuilt || targetPlatform.isWasm);
} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt{
dontPatchELF = true;
noAuditTmpdir = true;
})

View file

@ -1,267 +0,0 @@
{ lib, stdenv, pkgsBuildTarget, targetPackages
# build-tools
, bootPkgs
, autoconf, automake, coreutils, fetchpatch, fetchurl, perl, python3, m4, sphinx
, bash
, libiconv ? null, ncurses
, # GHC can be built with system libffi or a bundled one.
libffi ? null
, useLLVM ? !stdenv.targetPlatform.isx86
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
# build-time dependency too.
buildLlvmPackages, llvmPackages
, # If enabled, GHC will be built with the GPL-free but slower integer-simple
# library instead of the faster but GPLed integer-gmp library.
enableIntegerSimple ? !(lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
, # If enabled, use -fPIC when compiling static libs.
enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
# aarch64 outputs otherwise exceed 2GB limit
, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64
, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt
, # Whether to build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows
, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
(if useLLVM then "perf-cross" else "perf-cross-ncg")
, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
}:
assert !enableIntegerSimple -> gmp != null;
let
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
inherit (bootPkgs) ghc;
# TODO(@Ericson2314) Make unconditional
targetPrefix = lib.optionalString
(targetPlatform != hostPlatform)
"${targetPlatform.config}-";
buildMK = ''
BuildFlavour = ${ghcFlavour}
ifneq \"\$(BuildFlavour)\" \"\"
include mk/flavours/\$(BuildFlavour).mk
endif
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
'' + lib.optionalString (targetPlatform != hostPlatform) ''
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
CrossCompilePrefix = ${targetPrefix}
HADDOCK_DOCS = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
'' + lib.optionalString (!enableProfiledLibs) ''
GhcLibWays = "v dyn"
'' + lib.optionalString enableRelocatedStaticLibs ''
GhcLibHcOpts += -fPIC
GhcRtsHcOpts += -fPIC
'' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
EXTRA_CC_OPTS += -std=gnu99
'';
# Splicer will pull out correct variations
libDeps = platform: lib.optional enableTerminfo ncurses
++ [libffi]
++ lib.optional (!enableIntegerSimple) gmp
++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
] ++ lib.optional useLLVM buildLlvmPackages.llvm;
targetCC = builtins.head toolsForTarget;
# ld.gold is disabled for musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
# see #84670 and #49071 for more background.
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false) && !targetPlatform.isMusl;
in
stdenv.mkDerivation (rec {
version = "8.10.2";
name = "${targetPrefix}ghc-${version}";
src = fetchurl {
url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "02w8n085bw38vyp694j0lfk5wcnwkdaj7hhp0saj71x74533lmww";
};
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
patches = [
# See upstream patch at
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build
# from source distributions, the auto-generated configure script needs to be
# patched as well, therefore we use an in-tree patch instead of pulling the
# upstream patch. Don't forget to check backport status of the upstream patch
# when adding new GHC releases in nixpkgs.
./respect-ar-path.patch
# https://gitlab.haskell.org/ghc/ghc/-/issues/18549
./issue-18549.patch
] ++ lib.optionals stdenv.isDarwin [
# Make Block.h compile with c++ compilers. Remove with the next release
(fetchpatch {
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/97d0b0a367e4c6a52a17c3299439ac7de129da24.patch";
sha256 = "0r4zjj0bv1x1m2dgxp3adsf2xkr94fjnyj1igsivd9ilbs5ja0b5";
})
];
postPatch = "patchShebangs .";
# GHC is a bit confused on its cross terminology.
preConfigure = ''
for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
export "''${env#TARGET_}=''${!env}"
done
# GHC is a bit confused on its cross terminology, as these would normally be
# the *host* tools.
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
echo -n "${buildMK}" > mk/build.mk
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
'' + lib.optionalString (!stdenv.isDarwin) ''
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
'' + lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
'' + 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
'' + 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.
configurePlatforms = [ "build" "host" ]
++ lib.optional (targetPlatform != hostPlatform) "target";
# `--with` flags for libraries needed for RTS linker
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ lib.optionals (libffi != null) [
"--with-system-libffi"
"--with-ffi-includes=${targetPackages.libffi.dev}/include"
"--with-ffi-libraries=${targetPackages.libffi.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include"
"--with-gmp-libraries=${targetPackages.gmp.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include"
"--with-iconv-libraries=${libiconv}/lib"
] ++ lib.optionals (targetPlatform != hostPlatform) [
"--enable-bootstrap-with-devel-snapshot"
] ++ lib.optionals useLdGold [
"CFLAGS=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
];
# Make sure we never relax`$PATH` and hooks support for compatibility.
strictDeps = true;
# Dont add -liconv to LDFLAGS automatically so that GHC will add it itself.
dontAddExtraLibs = true;
nativeBuildInputs = [
perl autoconf automake m4 python3 sphinx
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
];
# For building runtime libs
depsBuildTarget = toolsForTarget;
buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
propagatedBuildInputs = [ targetPackages.stdenv.cc ]
++ lib.optional useLLVM llvmPackages.llvm;
depsTargetTarget = map lib.getDev (libDeps targetPlatform);
depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
# required, because otherwise all symbols from HSffi.o are stripped, and
# that in turn causes GHCi to abort
stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
checkTarget = "test";
hardeningDisable = [ "format" ] ++ lib.optional stdenv.targetPlatform.isMusl "pie";
postInstall = ''
# Install the bash completion file.
install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
# Patch scripts to include "readelf" and "cat" in $PATH.
for i in "$out/bin/"*; do
test ! -h $i || continue
egrep --quiet '^#!' <(head -n 1 $i) || continue
sed -i -e '2i export PATH="$PATH:${lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i
done
'';
passthru = {
inherit bootPkgs targetPrefix;
inherit llvmPackages;
inherit enableShared;
# Our Cabal compiler name
haskellCompilerName = "ghc-${version}";
};
meta = {
homepage = "http://haskell.org/ghc";
description = "The Glasgow Haskell Compiler";
maintainers = with lib.maintainers; [ marcweber andres peti ];
timeout = 24 * 3600;
inherit (ghc.meta) license platforms;
};
} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
dontStrip = true;
dontPatchELF = true;
noAuditTmpdir = true;
})

View file

@ -1,264 +0,0 @@
{ lib, stdenv, pkgsBuildTarget, targetPackages
# build-tools
, bootPkgs
, autoconf, automake, coreutils, fetchpatch, fetchurl, perl, python3, m4, sphinx
, bash
, libiconv ? null, ncurses
, # GHC can be built with system libffi or a bundled one.
libffi ? null
, useLLVM ? !stdenv.targetPlatform.isx86
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
# build-time dependency too.
buildLlvmPackages, llvmPackages
, # If enabled, GHC will be built with the GPL-free but slower integer-simple
# library instead of the faster but GPLed integer-gmp library.
enableIntegerSimple ? !(lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
, # If enabled, use -fPIC when compiling static libs.
enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
# aarch64 outputs otherwise exceed 2GB limit
, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64
, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt
, # Whether to build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows
, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
(if useLLVM then "perf-cross" else "perf-cross-ncg")
, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
}:
assert !enableIntegerSimple -> gmp != null;
let
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
inherit (bootPkgs) ghc;
# TODO(@Ericson2314) Make unconditional
targetPrefix = lib.optionalString
(targetPlatform != hostPlatform)
"${targetPlatform.config}-";
buildMK = ''
BuildFlavour = ${ghcFlavour}
ifneq \"\$(BuildFlavour)\" \"\"
include mk/flavours/\$(BuildFlavour).mk
endif
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
'' + lib.optionalString (targetPlatform != hostPlatform) ''
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
CrossCompilePrefix = ${targetPrefix}
HADDOCK_DOCS = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
'' + lib.optionalString (!enableProfiledLibs) ''
GhcLibWays = "v dyn"
'' + lib.optionalString enableRelocatedStaticLibs ''
GhcLibHcOpts += -fPIC
GhcRtsHcOpts += -fPIC
'' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
EXTRA_CC_OPTS += -std=gnu99
'';
# Splicer will pull out correct variations
libDeps = platform: lib.optional enableTerminfo ncurses
++ [libffi]
++ lib.optional (!enableIntegerSimple) gmp
++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
] ++ lib.optional useLLVM buildLlvmPackages.llvm;
targetCC = builtins.head toolsForTarget;
# ld.gold is disabled for musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
# see #84670 and #49071 for more background.
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false) && !targetPlatform.isMusl;
in
stdenv.mkDerivation (rec {
version = "8.10.3";
name = "${targetPrefix}ghc-${version}";
src = fetchurl {
url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "0cdrdvs5qnqr93cr9zvrlfjv2xr671kjjghnsw4afa4hahcq7p6c";
};
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
patches = [
# See upstream patch at
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build
# from source distributions, the auto-generated configure script needs to be
# patched as well, therefore we use an in-tree patch instead of pulling the
# upstream patch. Don't forget to check backport status of the upstream patch
# when adding new GHC releases in nixpkgs.
./respect-ar-path.patch
] ++ lib.optionals stdenv.isDarwin [
# Make Block.h compile with c++ compilers. Remove with the next release
(fetchpatch {
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/97d0b0a367e4c6a52a17c3299439ac7de129da24.patch";
sha256 = "0r4zjj0bv1x1m2dgxp3adsf2xkr94fjnyj1igsivd9ilbs5ja0b5";
})
];
postPatch = "patchShebangs .";
# GHC is a bit confused on its cross terminology.
preConfigure = ''
for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
export "''${env#TARGET_}=''${!env}"
done
# GHC is a bit confused on its cross terminology, as these would normally be
# the *host* tools.
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
echo -n "${buildMK}" > mk/build.mk
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
'' + lib.optionalString (!stdenv.isDarwin) ''
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
'' + lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
'' + 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
'' + 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.
configurePlatforms = [ "build" "host" ]
++ lib.optional (targetPlatform != hostPlatform) "target";
# `--with` flags for libraries needed for RTS linker
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ lib.optionals (libffi != null) [
"--with-system-libffi"
"--with-ffi-includes=${targetPackages.libffi.dev}/include"
"--with-ffi-libraries=${targetPackages.libffi.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include"
"--with-gmp-libraries=${targetPackages.gmp.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include"
"--with-iconv-libraries=${libiconv}/lib"
] ++ lib.optionals (targetPlatform != hostPlatform) [
"--enable-bootstrap-with-devel-snapshot"
] ++ lib.optionals useLdGold [
"CFLAGS=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
];
# Make sure we never relax`$PATH` and hooks support for compatibility.
strictDeps = true;
# Dont add -liconv to LDFLAGS automatically so that GHC will add it itself.
dontAddExtraLibs = true;
nativeBuildInputs = [
perl autoconf automake m4 python3 sphinx
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
];
# For building runtime libs
depsBuildTarget = toolsForTarget;
buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
propagatedBuildInputs = [ targetPackages.stdenv.cc ]
++ lib.optional useLLVM llvmPackages.llvm;
depsTargetTarget = map lib.getDev (libDeps targetPlatform);
depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
# required, because otherwise all symbols from HSffi.o are stripped, and
# that in turn causes GHCi to abort
stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
checkTarget = "test";
hardeningDisable = [ "format" ] ++ lib.optional stdenv.targetPlatform.isMusl "pie";
postInstall = ''
# Install the bash completion file.
install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
# Patch scripts to include "readelf" and "cat" in $PATH.
for i in "$out/bin/"*; do
test ! -h $i || continue
egrep --quiet '^#!' <(head -n 1 $i) || continue
sed -i -e '2i export PATH="$PATH:${lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i
done
'';
passthru = {
inherit bootPkgs targetPrefix;
inherit llvmPackages;
inherit enableShared;
# Our Cabal compiler name
haskellCompilerName = "ghc-${version}";
};
meta = {
homepage = "http://haskell.org/ghc";
description = "The Glasgow Haskell Compiler";
maintainers = with lib.maintainers; [ marcweber andres peti ];
timeout = 24 * 3600;
inherit (ghc.meta) license platforms;
};
} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
dontStrip = true;
dontPatchELF = true;
noAuditTmpdir = true;
})

View file

@ -1,191 +0,0 @@
{ lib, stdenv, substituteAll
, fetchurl, perl, gcc, llvm
, ncurses5, gmp, glibc, libiconv
, llvmPackages
}:
# Prebuilt only does native
assert stdenv.targetPlatform == stdenv.hostPlatform;
let
useLLVM = !stdenv.targetPlatform.isx86;
libPath = lib.makeLibraryPath ([
ncurses5 gmp
] ++ lib.optional (stdenv.hostPlatform.isDarwin) libiconv);
libEnvVar = lib.optionalString stdenv.hostPlatform.isDarwin "DY"
+ "LD_LIBRARY_PATH";
glibcDynLinker = assert stdenv.isLinux;
if stdenv.hostPlatform.libc == "glibc" then
# Could be stdenv.cc.bintools.dynamicLinker, keeping as-is to avoid rebuild.
''"$(cat $NIX_CC/nix-support/dynamic-linker)"''
else
"${lib.getLib glibc}/lib/ld-linux*";
in
stdenv.mkDerivation rec {
version = "8.2.2";
name = "ghc-${version}-binary";
src = fetchurl ({
i686-linux = {
url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-i386-deb8-linux.tar.xz";
sha256 = "08w2ik55dp3n95qikmrflc91lsiq01xp53ki3jlhnbj8fqnxfrwy";
};
x86_64-linux = {
url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-deb8-linux.tar.xz";
sha256 = "0ahv26304pqi3dm7i78si4pxwvg5f5dc2jwsfgvcrhcx5g30bqj8";
};
armv7l-linux = {
url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-armv7-deb8-linux.tar.xz";
sha256 = "1jmv8qmnh5bn324fivbwdcaj55kvw7cb2zq9pafmlmv3qwwx7s46";
};
aarch64-linux = {
url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-aarch64-deb8-linux.tar.xz";
sha256 = "1k2amylcp1ad67c75h1pqf7czf9m0zj1i7hdc45ghjklnfq9hrk7";
};
x86_64-darwin = {
url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-apple-darwin.tar.xz";
sha256 = "09swx71gh5habzbx55shz2xykgr96xkcy09nzinnm4z0yxicy3zr";
};
}.${stdenv.hostPlatform.system}
or (throw "cannot bootstrap GHC on this platform"));
nativeBuildInputs = [ perl ];
propagatedBuildInputs = lib.optionals useLLVM [ llvmPackages.llvm ];
# Cannot patchelf beforehand due to relative RPATHs that anticipate
# the final install location/
${libEnvVar} = libPath;
postUnpack =
# GHC has dtrace probes, which causes ld to try to open /usr/lib/libdtrace.dylib
# during linking
lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
# not enough room in the object files for the full path to libiconv :(
for exe in $(find . -type f -executable); do
isScript $exe && continue
ln -fs ${libiconv}/lib/libiconv.dylib $(dirname $exe)/libiconv.dylib
install_name_tool -change /usr/lib/libiconv.2.dylib @executable_path/libiconv.dylib -change /usr/local/lib/gcc/6/libgcc_s.1.dylib ${gcc.cc.lib}/lib/libgcc_s.1.dylib $exe
done
'' +
# Some scripts used during the build need to have their shebangs patched
''
patchShebangs ghc-${version}/utils/
patchShebangs ghc-${version}/configure
'' +
# Strip is harmful, see also below. It's important that this happens
# first. The GHC Cabal build system makes use of strip by default and
# has hardcoded paths to /usr/bin/strip in many places. We replace
# those below, making them point to our dummy script.
''
mkdir "$TMP/bin"
for i in strip; do
echo '#! ${stdenv.shell}' > "$TMP/bin/$i"
chmod +x "$TMP/bin/$i"
done
PATH="$TMP/bin:$PATH"
'' +
# We have to patch the GMP paths for the integer-gmp package.
''
find . -name integer-gmp.buildinfo \
-exec sed -i "s@extra-lib-dirs: @extra-lib-dirs: ${gmp.out}/lib@" {} \;
'' + lib.optionalString stdenv.isDarwin ''
find . -name base.buildinfo \
-exec sed -i "s@extra-lib-dirs: @extra-lib-dirs: ${libiconv}/lib@" {} \;
'' +
# Rename needed libraries and binaries, fix interpreter
lib.optionalString stdenv.isLinux ''
find . -type f -perm -0100 -exec patchelf \
--replace-needed libncurses${lib.optionalString stdenv.is64bit "w"}.so.5 libncurses.so \
--replace-needed libtinfo.so libtinfo.so.5 \
--interpreter ${glibcDynLinker} {} \;
sed -i "s|/usr/bin/perl|perl\x00 |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2
sed -i "s|/usr/bin/gcc|gcc\x00 |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2
'' +
# We're kludging a glibc bindist into working with non-glibc...
# Here we patch up the use of `__strdup` (part of glibc binary ABI)
# to instead use `strdup` since musl doesn't provide __strdup
# (`__strdup` is defined to be an alias of `strdup` anyway[1]).
# [1] http://refspecs.linuxbase.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/baselib---strdup-1.html
# Use objcopy magic to make the change:
lib.optionalString stdenv.hostPlatform.isMusl ''
find ./ghc-${version}/rts -name "libHSrts*.a" -exec ''${OBJCOPY:-objcopy} --redefine-sym __strdup=strdup {} \;
'';
configurePlatforms = [ ];
configureFlags =
let
gcc-clang-wrapper = substituteAll {
inherit (stdenv) shell;
isExecutable = true;
src = ./gcc-clang-wrapper.sh;
};
in
[ "--with-gmp-libraries=${lib.getLib gmp}/lib"
"--with-gmp-includes=${lib.getDev gmp}/include"
] ++ lib.optional stdenv.isDarwin "--with-gcc=${gcc-clang-wrapper}"
++ lib.optional stdenv.hostPlatform.isMusl "--disable-ld-override";
# Stripping combined with patchelf breaks the executables (they die
# with a segfault or the kernel even refuses the execve). (NIXPKGS-85)
dontStrip = true;
# No building is necessary, but calling make without flags ironically
# calls install-strip ...
dontBuild = true;
# On Linux, use patchelf to modify the executables so that they can
# find editline/gmp.
preFixup = lib.optionalString stdenv.isLinux ''
for p in $(find "$out" -type f -executable); do
if isELF "$p"; then
echo "Patchelfing $p"
patchelf --set-rpath "${libPath}:$(patchelf --print-rpath $p)" $p
fi
done
'' + lib.optionalString stdenv.isDarwin ''
# not enough room in the object files for the full path to libiconv :(
for exe in $(find "$out" -type f -executable); do
isScript $exe && continue
ln -fs ${libiconv}/lib/libiconv.dylib $(dirname $exe)/libiconv.dylib
install_name_tool -change /usr/lib/libiconv.2.dylib @executable_path/libiconv.dylib -change /usr/local/lib/gcc/6/libgcc_s.1.dylib ${gcc.cc.lib}/lib/libgcc_s.1.dylib $exe
done
for file in $(find "$out" -name setup-config); do
substituteInPlace $file --replace /usr/bin/ranlib "$(type -P ranlib)"
done
'';
doInstallCheck = true;
installCheckPhase = ''
unset ${libEnvVar}
# Sanity check, can ghc create executables?
cd $TMP
mkdir test-ghc; cd test-ghc
cat > main.hs << EOF
{-# LANGUAGE TemplateHaskell #-}
module Main where
main = putStrLn \$([|"yes"|])
EOF
$out/bin/ghc --make main.hs || exit 1
echo compilation ok
[ $(./main) == "yes" ]
'';
passthru = {
targetPrefix = "";
enableShared = true;
};
meta.license = lib.licenses.bsd3;
meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin" "armv7l-linux" "aarch64-linux"];
}

View file

@ -1,275 +0,0 @@
{ lib, stdenv, pkgsBuildTarget, targetPackages
# build-tools
, bootPkgs
, autoconf, automake, coreutils, fetchurl, fetchpatch, perl, python3, m4, sphinx
, bash
, libiconv ? null, ncurses
, # GHC can be built with system libffi or a bundled one.
libffi ? null
, useLLVM ? !stdenv.targetPlatform.isx86 || stdenv.targetPlatform.isiOS
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
# build-time dependency too.
buildLlvmPackages, llvmPackages
, # If enabled, GHC will be built with the GPL-free but slower integer-simple
# library instead of the faster but GPLed integer-gmp library.
enableIntegerSimple ? !(lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
, # If enabled, use -fPIC when compiling static libs.
enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt
, # Whether to build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows
, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
(if useLLVM then "perf-cross" else "perf-cross-ncg")
, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
}:
assert !enableIntegerSimple -> gmp != null;
let
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
inherit (bootPkgs) ghc;
# TODO(@Ericson2314) Make unconditional
targetPrefix = lib.optionalString
(targetPlatform != hostPlatform)
"${targetPlatform.config}-";
buildMK = ''
BuildFlavour = ${ghcFlavour}
ifneq \"\$(BuildFlavour)\" \"\"
include mk/flavours/\$(BuildFlavour).mk
endif
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
''
# We only need to build stage1 on most cross-compilation because
# we will be running the compiler on the native system. In some
# situations, like native Musl compilation, we need the compiler
# to actually link to our new Libc. The iOS simulator is a special
# exception because we cant actually run simulators binaries
# ourselves.
+ lib.optionalString (targetPlatform != hostPlatform) ''
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
CrossCompilePrefix = ${targetPrefix}
HADDOCK_DOCS = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
'' + lib.optionalString enableRelocatedStaticLibs ''
GhcLibHcOpts += -fPIC
GhcRtsHcOpts += -fPIC
'' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
EXTRA_CC_OPTS += -std=gnu99
'';
# Splicer will pull out correct variations
libDeps = platform: lib.optional enableTerminfo ncurses
++ [libffi]
++ lib.optional (!enableIntegerSimple) gmp
++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
] ++ lib.optional useLLVM buildLlvmPackages.llvm;
targetCC = builtins.head toolsForTarget;
# ld.gold is disabled for musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
# see #84670 and #49071 for more background.
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false) && !targetPlatform.isMusl;
in
stdenv.mkDerivation (rec {
version = "8.6.5";
name = "${targetPrefix}ghc-${version}";
src = fetchurl {
url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "0qg3zsmbk4rkwkc3jpas3zs74qaxmw4sp4v1mhsbj0a0dzls2jjd";
};
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
patches = [
# See upstream patch at
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build
# from source distributions, the auto-generated configure script needs to be
# patched as well, therefore we use an in-tree patch instead of pulling the
# upstream patch. Don't forget to check backport status of the upstream patch
# when adding new GHC releases in nixpkgs.
./respect-ar-path.patch
(fetchpatch { # https://phabricator.haskell.org/D5123
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/13ff0b7ced097286e0d7b054f050871effe07f86.diff";
name = "D5123.diff";
sha256 = "140lmnqxra7xkwy370c5pyf8dgdwgmbpcrs1dapnwr2dh8bavn8c";
})
(fetchpatch { # https://github.com/haskell/haddock/issues/900
url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/983.diff";
name = "loadpluginsinmodules.diff";
sha256 = "0bvvv0zsfq2581zsir97zfkggc1kkircbbajc2fz3b169ycpbha1";
extraPrefix = "utils/haddock/";
stripLen = 1;
})
];
postPatch = "patchShebangs .";
# GHC is a bit confused on its cross terminology.
preConfigure = ''
for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
export "''${env#TARGET_}=''${!env}"
done
# GHC is a bit confused on its cross terminology, as these would normally be
# the *host* tools.
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
echo -n "${buildMK}" > mk/build.mk
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
'' + lib.optionalString (!stdenv.isDarwin) ''
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
'' + lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
'' + 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
'' + 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.
configurePlatforms = [ "build" "host" ]
++ lib.optional (targetPlatform != hostPlatform) "target";
# `--with` flags for libraries needed for RTS linker
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ lib.optionals (libffi != null) ["--with-system-libffi" "--with-ffi-includes=${targetPackages.libffi.dev}/include" "--with-ffi-libraries=${targetPackages.libffi.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
] ++ lib.optionals (targetPlatform != hostPlatform) [
"--enable-bootstrap-with-devel-snapshot"
] ++ lib.optionals useLdGold [
"CFLAGS=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
];
# Make sure we never relax`$PATH` and hooks support for compatibility.
strictDeps = true;
# Dont add -liconv to LDFLAGS automatically so that GHC will add it itself.
dontAddExtraLibs = true;
nativeBuildInputs = [
perl autoconf automake m4 python3 sphinx
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
];
# For building runtime libs
depsBuildTarget = toolsForTarget;
buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
propagatedBuildInputs = [ targetPackages.stdenv.cc ]
++ lib.optional useLLVM llvmPackages.llvm;
depsTargetTarget = map lib.getDev (libDeps targetPlatform);
depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
# required, because otherwise all symbols from HSffi.o are stripped, and
# that in turn causes GHCi to abort
stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
# See #63511 - the only unstripped file is the debug rts which isn't meant to
# be stripped.
dontStrip = true;
checkTarget = "test";
hardeningDisable = [ "format" ] ++ lib.optional stdenv.targetPlatform.isMusl "pie";
postInstall = ''
# Install the bash completion file.
install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
# Patch scripts to include "readelf" and "cat" in $PATH.
for i in "$out/bin/"*; do
test ! -h $i || continue
egrep --quiet '^#!' <(head -n 1 $i) || continue
sed -i -e '2i export PATH="$PATH:${lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i
done
''
# Temporary work-around for https://github.com/NixOS/nixpkgs/issues/66277
+ lib.optionalString hostPlatform.isAarch64 ''
rm -rf "$doc/share/doc/ghc/html/libraries"
'';
passthru = {
inherit bootPkgs targetPrefix;
inherit llvmPackages;
inherit enableShared;
# Our Cabal compiler name
haskellCompilerName = "ghc-${version}";
};
meta = {
homepage = "http://haskell.org/ghc";
description = "The Glasgow Haskell Compiler";
maintainers = with lib.maintainers; [ marcweber andres peti ];
timeout = 24 * 3600;
inherit (ghc.meta) license platforms;
};
} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
dontStrip = true;
dontPatchELF = true;
noAuditTmpdir = true;
})

View file

@ -1,263 +0,0 @@
{ lib, stdenv, pkgsBuildTarget, targetPackages
# build-tools
, bootPkgs
, autoconf, automake, coreutils, fetchurl, perl, python3, m4, sphinx
, bash
, libiconv ? null, ncurses
, # GHC can be built with system libffi or a bundled one.
libffi ? null
, useLLVM ? !stdenv.targetPlatform.isx86
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
# build-time dependency too.
buildLlvmPackages, llvmPackages
, # If enabled, GHC will be built with the GPL-free but slower integer-simple
# library instead of the faster but GPLed integer-gmp library.
enableIntegerSimple ? !(lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
, # If enabled, use -fPIC when compiling static libs.
enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt
, # Whether to build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows
, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
(if useLLVM then "perf-cross" else "perf-cross-ncg")
, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
}:
assert !enableIntegerSimple -> gmp != null;
let
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
inherit (bootPkgs) ghc;
# TODO(@Ericson2314) Make unconditional
targetPrefix = lib.optionalString
(targetPlatform != hostPlatform)
"${targetPlatform.config}-";
buildMK = dontStrip: ''
BuildFlavour = ${ghcFlavour}
ifneq \"\$(BuildFlavour)\" \"\"
include mk/flavours/\$(BuildFlavour).mk
endif
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
''
# We only need to build stage1 on most cross-compilation because
# we will be running the compiler on the native system. In some
# situations, like native Musl compilation, we need the compiler
# to actually link to our new Libc. The iOS simulator is a special
# exception because we cant actually run simulators binaries
# ourselves.
+ lib.optionalString (targetPlatform != hostPlatform) ''
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
CrossCompilePrefix = ${targetPrefix}
HADDOCK_DOCS = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
'' + lib.optionalString dontStrip ''
STRIP_CMD = :
'' + lib.optionalString enableRelocatedStaticLibs ''
GhcLibHcOpts += -fPIC
GhcRtsHcOpts += -fPIC
'' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
EXTRA_CC_OPTS += -std=gnu99
'';
# Splicer will pull out correct variations
libDeps = platform: lib.optional enableTerminfo ncurses
++ [libffi]
++ lib.optional (!enableIntegerSimple) gmp
++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
] ++ lib.optional useLLVM buildLlvmPackages.llvm;
targetCC = builtins.head toolsForTarget;
# ld.gold is disabled for musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
# see #84670 and #49071 for more background.
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false) && !targetPlatform.isMusl;
in
stdenv.mkDerivation (rec {
version = "8.8.2";
name = "${targetPrefix}ghc-${version}";
src = fetchurl {
url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "02qa6wgjpxgakg7hv4zfdlrx9k7zxa5i02wnr6y9fsv8j16sbkh1";
};
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
patches = [
# See upstream patch at
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build
# from source distributions, the auto-generated configure script needs to be
# patched as well, therefore we use an in-tree patch instead of pulling the
# upstream patch. Don't forget to check backport status of the upstream patch
# when adding new GHC releases in nixpkgs.
./respect-ar-path.patch
];
postPatch = "patchShebangs .";
# GHC is a bit confused on its cross terminology.
preConfigure = ''
for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
export "''${env#TARGET_}=''${!env}"
done
# GHC is a bit confused on its cross terminology, as these would normally be
# the *host* tools.
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
echo -n "${buildMK dontStrip}" > mk/build.mk
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
'' + lib.optionalString (!stdenv.isDarwin) ''
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
'' + lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
'' + 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
'' + 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.
configurePlatforms = [ "build" "host" ]
++ lib.optional (targetPlatform != hostPlatform) "target";
# `--with` flags for libraries needed for RTS linker
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ lib.optionals (libffi != null) [
"--with-system-libffi"
"--with-ffi-includes=${targetPackages.libffi.dev}/include"
"--with-ffi-libraries=${targetPackages.libffi.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include"
"--with-gmp-libraries=${targetPackages.gmp.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include"
"--with-iconv-libraries=${libiconv}/lib"
] ++ lib.optionals (targetPlatform != hostPlatform) [
"--enable-bootstrap-with-devel-snapshot"
] ++ lib.optionals useLdGold [
"CFLAGS=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
];
# Make sure we never relax`$PATH` and hooks support for compatibility.
strictDeps = true;
# Dont add -liconv to LDFLAGS automatically so that GHC will add it itself.
dontAddExtraLibs = true;
nativeBuildInputs = [
perl autoconf automake m4 python3 sphinx
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
];
# For building runtime libs
depsBuildTarget = toolsForTarget;
buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
propagatedBuildInputs = [ targetPackages.stdenv.cc ]
++ lib.optional useLLVM llvmPackages.llvm;
depsTargetTarget = map lib.getDev (libDeps targetPlatform);
depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
# required, because otherwise all symbols from HSffi.o are stripped, and
# that in turn causes GHCi to abort
stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
checkTarget = "test";
hardeningDisable = [ "format" ] ++ lib.optional stdenv.targetPlatform.isMusl "pie";
postInstall = ''
# Install the bash completion file.
install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
# Patch scripts to include "readelf" and "cat" in $PATH.
for i in "$out/bin/"*; do
test ! -h $i || continue
egrep --quiet '^#!' <(head -n 1 $i) || continue
sed -i -e '2i export PATH="$PATH:${lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i
done
'';
passthru = {
inherit bootPkgs targetPrefix;
inherit llvmPackages;
inherit enableShared;
# Our Cabal compiler name
haskellCompilerName = "ghc-${version}";
};
meta = {
homepage = "http://haskell.org/ghc";
description = "The Glasgow Haskell Compiler";
maintainers = with lib.maintainers; [ marcweber andres peti ];
timeout = 24 * 3600;
inherit (ghc.meta) license platforms;
};
dontStrip = (targetPlatform.useAndroidPrebuilt || targetPlatform.isWasm);
} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt{
dontPatchELF = true;
noAuditTmpdir = true;
})

View file

@ -1,268 +0,0 @@
{ lib, stdenv, pkgsBuildTarget, targetPackages
# build-tools
, bootPkgs
, autoconf, automake, coreutils, fetchurl, perl, python3, m4, sphinx
, bash
, libiconv ? null, ncurses
, # GHC can be built with system libffi or a bundled one.
libffi ? null
, useLLVM ? !stdenv.targetPlatform.isx86
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
# build-time dependency too.
buildLlvmPackages, llvmPackages
, # If enabled, GHC will be built with the GPL-free but slower integer-simple
# library instead of the faster but GPLed integer-gmp library.
enableIntegerSimple ? !(lib.any (lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp
, # If enabled, use -fPIC when compiling static libs.
enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
# aarch64 outputs otherwise exceed 2GB limit
, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64
, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt
, # Whether to build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows
, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
(if useLLVM then "perf-cross" else "perf-cross-ncg")
, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
}:
assert !enableIntegerSimple -> gmp != null;
let
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
inherit (bootPkgs) ghc;
# TODO(@Ericson2314) Make unconditional
targetPrefix = lib.optionalString
(targetPlatform != hostPlatform)
"${targetPlatform.config}-";
buildMK = dontStrip: ''
BuildFlavour = ${ghcFlavour}
ifneq \"\$(BuildFlavour)\" \"\"
include mk/flavours/\$(BuildFlavour).mk
endif
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
''
# We only need to build stage1 on most cross-compilation because
# we will be running the compiler on the native system. In some
# situations, like native Musl compilation, we need the compiler
# to actually link to our new Libc. The iOS simulator is a special
# exception because we cant actually run simulators binaries
# ourselves.
+ lib.optionalString (targetPlatform != hostPlatform) ''
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
CrossCompilePrefix = ${targetPrefix}
HADDOCK_DOCS = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
'' + lib.optionalString dontStrip ''
STRIP_CMD = :
'' + lib.optionalString (!enableProfiledLibs) ''
GhcLibWays = "v dyn"
'' + lib.optionalString enableRelocatedStaticLibs ''
GhcLibHcOpts += -fPIC
GhcRtsHcOpts += -fPIC
'' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
EXTRA_CC_OPTS += -std=gnu99
'';
# Splicer will pull out correct variations
libDeps = platform: lib.optional enableTerminfo ncurses
++ [libffi]
++ lib.optional (!enableIntegerSimple) gmp
++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
] ++ lib.optional useLLVM buildLlvmPackages.llvm;
targetCC = builtins.head toolsForTarget;
# ld.gold is disabled for musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
# see #84670 and #49071 for more background.
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false) && !targetPlatform.isMusl;
in
stdenv.mkDerivation (rec {
version = "8.8.3";
name = "${targetPrefix}ghc-${version}";
src = fetchurl {
url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "128g932i3wix6ic03v04nh5755vyjiidzri9iybwad72yfmc1p70";
};
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
patches = [
# See upstream patch at
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build
# from source distributions, the auto-generated configure script needs to be
# patched as well, therefore we use an in-tree patch instead of pulling the
# upstream patch. Don't forget to check backport status of the upstream patch
# when adding new GHC releases in nixpkgs.
./respect-ar-path.patch
];
postPatch = "patchShebangs .";
# GHC is a bit confused on its cross terminology.
preConfigure = ''
for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
export "''${env#TARGET_}=''${!env}"
done
# GHC is a bit confused on its cross terminology, as these would normally be
# the *host* tools.
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip"
echo -n "${buildMK dontStrip}" > mk/build.mk
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
'' + lib.optionalString (!stdenv.isDarwin) ''
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
'' + lib.optionalString stdenv.isDarwin ''
export NIX_LDFLAGS+=" -no_dtrace_dof"
'' + 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
'' + 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.
configurePlatforms = [ "build" "host" ]
++ lib.optional (targetPlatform != hostPlatform) "target";
# `--with` flags for libraries needed for RTS linker
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ lib.optionals (libffi != null) [
"--with-system-libffi"
"--with-ffi-includes=${targetPackages.libffi.dev}/include"
"--with-ffi-libraries=${targetPackages.libffi.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include"
"--with-gmp-libraries=${targetPackages.gmp.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include"
"--with-iconv-libraries=${libiconv}/lib"
] ++ lib.optionals (targetPlatform != hostPlatform) [
"--enable-bootstrap-with-devel-snapshot"
] ++ lib.optionals useLdGold [
"CFLAGS=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
];
# Make sure we never relax`$PATH` and hooks support for compatibility.
strictDeps = true;
# Dont add -liconv to LDFLAGS automatically so that GHC will add it itself.
dontAddExtraLibs = true;
nativeBuildInputs = [
perl autoconf automake m4 python3 sphinx
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
];
# For building runtime libs
depsBuildTarget = toolsForTarget;
buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
propagatedBuildInputs = [ targetPackages.stdenv.cc ]
++ lib.optional useLLVM llvmPackages.llvm;
depsTargetTarget = map lib.getDev (libDeps targetPlatform);
depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
# required, because otherwise all symbols from HSffi.o are stripped, and
# that in turn causes GHCi to abort
stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
checkTarget = "test";
hardeningDisable = [ "format" ] ++ lib.optional stdenv.targetPlatform.isMusl "pie";
postInstall = ''
# Install the bash completion file.
install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
# Patch scripts to include "readelf" and "cat" in $PATH.
for i in "$out/bin/"*; do
test ! -h $i || continue
egrep --quiet '^#!' <(head -n 1 $i) || continue
sed -i -e '2i export PATH="$PATH:${lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i
done
'';
passthru = {
inherit bootPkgs targetPrefix;
inherit llvmPackages;
inherit enableShared;
# Our Cabal compiler name
haskellCompilerName = "ghc-${version}";
};
meta = {
homepage = "http://haskell.org/ghc";
description = "The Glasgow Haskell Compiler";
maintainers = with lib.maintainers; [ marcweber andres peti ];
timeout = 24 * 3600;
inherit (ghc.meta) license platforms;
};
dontStrip = (targetPlatform.useAndroidPrebuilt || targetPlatform.isWasm);
} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt{
dontPatchELF = true;
noAuditTmpdir = true;
})

View file

@ -72,15 +72,6 @@ self: super: {
hinotify = if pkgs.stdenv.isLinux then self.hinotify else self.fsnotify;
};
# Backport fix for bash: compgen: command not found
# which happens in nix-shell when a non-interactive bash is on PATH
# PR to master: https://github.com/pcapriotti/optparse-applicative/pull/408
optparse-applicative = appendPatch super.optparse-applicative (pkgs.fetchpatch {
name = "optparse-applicative-0.15.1-hercules-ci-compgen.diff";
url = "https://github.com/hercules-ci/optparse-applicative/compare/0.15.1...hercules-ci:0.15.1-nixpkgs-compgen.diff";
sha256 = "1bcp6b7gvc8pqbn1n1ybhizkkl5if7hk9ipgl746vk08v0d3xxql";
});
# Fix test trying to access /home directory
shell-conduit = overrideCabal super.shell-conduit (drv: {
postPatch = "sed -i s/home/tmp/ test/Spec.hs";
@ -93,33 +84,26 @@ self: super: {
# https://github.com/froozen/kademlia/issues/2
kademlia = dontCheck super.kademlia;
# Tests require older tasty
# Tests require older versions of tasty.
cborg = (doJailbreak super.cborg).override { base16-bytestring = self.base16-bytestring_0_1_1_7; };
hzk = dontCheck super.hzk;
resolv = doJailbreak super.resolv;
tdigest = doJailbreak super.tdigest;
text-short = doJailbreak super.text-short;
tree-diff = doJailbreak super.tree-diff;
# Tests require a Kafka broker running locally
haskakafka = dontCheck super.haskakafka;
# Depends on broken "lss" package.
snaplet-lss = dontDistribute super.snaplet-lss;
# Depends on broken "NewBinary" package.
ASN1 = dontDistribute super.ASN1;
# Depends on broken "frame" package.
frame-markdown = dontDistribute super.frame-markdown;
# Depends on broken "Elm" package.
hakyll-elm = dontDistribute super.hakyll-elm;
haskelm = dontDistribute super.haskelm;
snap-elm = dontDistribute super.snap-elm;
# Depends on broken "hails" package.
hails-bin = dontDistribute super.hails-bin;
bindings-levmar = overrideCabal super.bindings-levmar (drv: {
extraLibraries = [ pkgs.blas ];
});
# Requires wrapQtAppsHook
qtah-cpp-qt5 = overrideCabal super.qtah-cpp-qt5 (drv: {
buildDepends = [ pkgs.qt5.wrapQtAppsHook ];
});
# The Haddock phase fails for one reason or another.
deepseq-magic = dontHaddock super.deepseq-magic;
feldspar-signal = dontHaddock super.feldspar-signal; # https://github.com/markus-git/feldspar-signal/issues/1
@ -215,9 +199,6 @@ self: super: {
# 2020-06-05: HACK: does not pass own build suite - `dontCheck`
hnix = generateOptparseApplicativeCompletion "hnix" (dontCheck super.hnix);
# https://github.com/haskell-nix/hnix-store/issues/127
hnix-store-core = addTestToolDepend super.hnix-store-core self.tasty-discover;
# Fails for non-obvious reasons while attempting to use doctest.
search = dontCheck super.search;
@ -235,13 +216,7 @@ self: super: {
angel = dontCheck super.angel;
apache-md5 = dontCheck super.apache-md5; # http://hydra.cryp.to/build/498709/nixlog/1/raw
app-settings = dontCheck super.app-settings; # http://hydra.cryp.to/build/497327/log/raw
aws = appendPatch (dontCheck super.aws) # needs aws credentials
(pkgs.fetchpatch {
# https://github.com/aristidb/aws/pull/271
# bump a version bound
url = https://github.com/aristidb/aws/commit/3639262ccd6761dea76f052692ac3aefbd254723.patch;
sha256 = "0nxaspldgayqjnidda8w7wps5gdpr2wz6vynl7vkaw8kzxks9bci";
});
aws = doJailbreak (dontCheck super.aws); # needs aws credentials, jailbreak for base16-bytestring
aws-kinesis = dontCheck super.aws-kinesis; # needs aws credentials for testing
binary-protocol = dontCheck super.binary-protocol; # http://hydra.cryp.to/build/499749/log/raw
binary-search = dontCheck super.binary-search;
@ -339,6 +314,7 @@ self: super: {
nats-queue = dontCheck super.nats-queue;
netpbm = dontCheck super.netpbm;
network = dontCheck super.network;
network_2_6_3_1 = dontCheck super.network_2_6_3_1; # package is missing files for test
network-dbus = dontCheck super.network-dbus;
notcpp = dontCheck super.notcpp;
ntp-control = dontCheck super.ntp-control;
@ -462,9 +438,6 @@ self: super: {
# https://github.com/afcowie/locators/issues/1
locators = dontCheck super.locators;
# Test suite won't compile against tasty-hunit 0.9.x.
zlib = dontCheck super.zlib;
# Test suite won't compile against tasty-hunit 0.10.x.
binary-parser = dontCheck super.binary-parser;
binary-parsers = dontCheck super.binary-parsers;
@ -554,9 +527,6 @@ self: super: {
# https://github.com/liyang/thyme/issues/36
thyme = dontCheck super.thyme;
# https://github.com/k0ral/hbro-contrib/issues/1
hbro-contrib = dontDistribute super.hbro-contrib;
# Elm is no longer actively maintained on Hackage: https://github.com/NixOS/nixpkgs/pull/9233.
Elm = markBroken super.Elm;
elm-build-lib = markBroken super.elm-build-lib;
@ -828,9 +798,12 @@ self: super: {
# Jailbreak is necessary to break out of tasty < 1.x dependency.
cryptohash-sha256 = markUnbroken (doJailbreak super.cryptohash-sha256);
# The test suite has all kinds of out-dated dependencies, so it feels easier
# to just disable it.
cryptohash-sha1 = dontCheck super.cryptohash-sha1;
cryptohash-md5 = dontCheck super.cryptohash-md5;
# Needs tasty-quickcheck ==0.8.*, which we don't have.
cryptohash-sha1 = doJailbreak super.cryptohash-sha1;
cryptohash-md5 = doJailbreak super.cryptohash-md5;
gitHUD = dontCheck super.gitHUD;
githud = dontCheck super.githud;
@ -1336,7 +1309,7 @@ self: super: {
commonmark-extensions = dontCheck super.commonmark-extensions;
# Testsuite trying to run `which haskeline-examples-Test`
haskeline_0_8_1_1 = dontCheck super.haskeline_0_8_1_1;
haskeline_0_8_1_2 = dontCheck super.haskeline_0_8_1_2;
# Tests for list-t, superbuffer, and stm-containers
# depend on HTF and it is broken, 2020-08-23
@ -1403,10 +1376,7 @@ self: super: {
# PATH.
update-nix-fetchgit = let deps = [ pkgs.git pkgs.nix pkgs.nix-prefetch-git ];
in generateOptparseApplicativeCompletion "update-nix-fetchgit" (overrideCabal
(addTestToolDepends (super.update-nix-fetchgit.overrideScope (self: super: {
optparse-generic = self.optparse-generic_1_4_4;
optparse-applicative = self.optparse-applicative_0_16_1_0;
})) deps) (drv: {
(addTestToolDepends super.update-nix-fetchgit deps) (drv: {
buildTools = drv.buildTools or [ ] ++ [ pkgs.makeWrapper ];
postInstall = drv.postInstall or "" + ''
wrapProgram "$out/bin/update-nix-fetchgit" --prefix 'PATH' ':' "${
@ -1424,6 +1394,16 @@ self: super: {
# https://github.com/haskell/haskell-language-server/issues/611
haskell-language-server = dontCheck super.haskell-language-server;
# 2021-03-19: Too restrictive upper bound on optparse-applicative
stylish-haskell = doJailbreak super.stylish-haskell;
# 2021-03-19: https://github.com/facebookincubator/retrie/issues/24
retrie = doJailbreak super.retrie;
# Jailbreak because of restrictive upper bound on base16-bytestring
# 2021-03-19: https://github.com/Avi-D-coder/implicit-hie-cradle/pull/8
implicit-hie-cradle = doJailbreak super.implicit-hie-cradle;
# 2021-03-09: Overrides because nightly is to old for hls 1.0.0
lsp-test = doDistribute (dontCheck self.lsp-test_0_13_0_0);
@ -1433,7 +1413,8 @@ self: super: {
# 2021-03-21 Test hangs
# https://github.com/haskell/haskell-language-server/issues/1562
ghcide = dontCheck super.ghcide;
# Jailbreak because of: https://github.com/haskell/haskell-language-server/pull/1595
ghcide = doJailbreak (dontCheck super.ghcide);
# 2020-03-09: Tests broken in hackage release
# fixed on upstream, but not released in hiedb 0.3.0.1
@ -1510,7 +1491,7 @@ self: super: {
# 2020-11-19: Jailbreaking until: https://github.com/snapframework/heist/pull/124
heist = doJailbreak super.heist;
hinit = generateOptparseApplicativeCompletion "hi" (super.hinit.override { haskeline = self.haskeline_0_8_1_1; });
hinit = generateOptparseApplicativeCompletion "hi" (super.hinit.override { haskeline = self.haskeline_0_8_1_2; });
# 2020-11-19: Jailbreaking until: https://github.com/snapframework/snap/pull/219
snap = doJailbreak super.snap;
@ -1661,4 +1642,34 @@ self: super: {
# Test suite does not compile.
feed = dontCheck super.feed;
spacecookie = overrideCabal super.spacecookie (old: {
buildTools = (old.buildTools or []) ++ [ pkgs.installShellFiles ];
# let testsuite discover the resulting binary
preCheck = ''
export SPACECOOKIE_TEST_BIN=./dist/build/spacecookie/spacecookie
'' + (old.preCheck or "");
# install man pages shipped in the sdist
postInstall = ''
installManPage docs/man/*
'' + (old.postInstall or "");
});
# Patch and jailbreak can be removed at next release, chatter > 0.9.1.0
# * Remove dependency on regex-tdfa-text
# * Jailbreak as bounds on cereal are too strict
# * Disable test suite which doesn't compile
# https://github.com/creswick/chatter/issues/38
chatter = appendPatch
(dontCheck (doJailbreak (super.chatter.override { regex-tdfa-text = null; })))
(pkgs.fetchpatch {
url = "https://github.com/creswick/chatter/commit/e8c15a848130d7d27b8eb5e73e8a0db1366b2e62.patch";
sha256 = "1dzak8d12h54vss5fxnrclygz0fz9ygbqvxd5aifz5n3vrwwpj3g";
});
# test suite doesn't compile anymore due to changed hunit/tasty APIs
fullstop = dontCheck super.fullstop;
# https://github.com/jgm/pandoc/issues/7163
pandoc = dontCheck super.pandoc;
} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super

View file

@ -42,19 +42,17 @@ self: super: {
unix = null;
xhtml = null;
cabal-install = super.cabal-install.override {
Cabal = super.Cabal_3_4_0_0;
hackage-security = super.hackage-security.override { Cabal = super.Cabal_3_4_0_0; };
# Usung dontCheck to break test dependency cycles
edit-distance = dontCheck (super.edit-distance.override { random = super.random_1_2_0; });
random = super.random_1_2_0;
};
# cabal-install needs more recent versions of Cabal and random, but an older
# version of base16-bytestring.
cabal-install = super.cabal-install.overrideScope (self: super: {
Cabal = self.Cabal_3_4_0_0;
base16-bytestring = self.base16-bytestring_0_1_1_7;
random = dontCheck super.random_1_2_0; # break infinite recursion
hashable = doJailbreak super.hashable; # allow random 1.2.x
});
# cabal-install-parsers is written for Cabal 3.4
cabal-install-parsers = super.cabal-install-parsers.override {
Cabal = super.Cabal_3_4_0_0;
base16-bytestring = super.base16-bytestring_1_0_1_0;
};
cabal-install-parsers = super.cabal-install-parsers.override { Cabal = super.Cabal_3_4_0_0; };
# Jailbreak to fix the build.
base-noprelude = doJailbreak super.base-noprelude;
@ -91,4 +89,5 @@ self: super: {
# Break out of "Cabal < 3.2" constraint.
stylish-haskell = doJailbreak super.stylish-haskell;
}

View file

@ -1,97 +0,0 @@
{ pkgs, haskellLib }:
with haskellLib;
self: super: {
# Suitable LLVM version.
llvmPackages = pkgs.llvmPackages;
# Disable GHC 8.2.x core libraries.
array = null;
base = null;
binary = null;
bytestring = null;
Cabal = null;
containers = null;
deepseq = null;
directory = null;
filepath = null;
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-heap = null;
ghc-prim = null;
ghci = null;
haskeline = null;
hoopl = null;
hpc = null;
integer-gmp = null;
pretty = null;
process = null;
rts = null;
template-haskell = null;
terminfo = null;
time = null;
transformers = null;
unix = null;
xhtml = null;
# These are now core libraries in GHC 8.4.x.
mtl = self.mtl_2_2_2;
parsec = self.parsec_3_1_14_0;
stm = self.stm_2_5_0_0;
text = self.text_1_2_4_0;
# Needs Cabal 3.0.x.
jailbreak-cabal = super.jailbreak-cabal.override { Cabal = self.Cabal_3_2_1_0; };
# https://github.com/bmillwood/applicative-quoters/issues/6
applicative-quoters = appendPatch super.applicative-quoters (pkgs.fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/bmillwood/applicative-quoters/pull/7.patch";
sha256 = "026vv2k3ks73jngwifszv8l59clg88pcdr4mz0wr0gamivkfa1zy";
});
# https://github.com/nominolo/ghc-syb/issues/20
ghc-syb-utils = dontCheck super.ghc-syb-utils;
# Upstream failed to distribute the testsuite for 8.2
# https://github.com/alanz/ghc-exactprint/pull/60
ghc-exactprint = dontCheck super.ghc-exactprint;
# Reduction stack overflow; size = 38
# https://github.com/jystic/hadoop-tools/issues/31
hadoop-rpc =
let patch = pkgs.fetchpatch
{ url = "https://github.com/shlevy/hadoop-tools/commit/f03a46cd15ce3796932c3382e48bcbb04a6ee102.patch";
sha256 = "09ls54zy6gx84fmzwgvx18ssgm740cwq6ds70p0p125phi54agcp";
stripLen = 1;
};
in appendPatch super.hadoop-rpc patch;
# Custom Setup.hs breaks with Cabal 2
# https://github.com/NICTA/coordinate/pull/4
coordinate =
let patch = pkgs.fetchpatch
{ url = "https://github.com/NICTA/coordinate/pull/4.patch";
sha256 = "06sfxk5cyd8nqgjyb95jkihxxk8m6dw9m3mlv94sm2qwylj86gqy";
};
in appendPatch super.coordinate patch;
# https://github.com/purescript/purescript/issues/3189
purescript = doJailbreak (super.purescript);
# These packages need Cabal 2.2.x, which is not the default.
cabal2nix = super.cabal2nix.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
cabal2spec = super.cabal2spec.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
distribution-nixpkgs = super.distribution-nixpkgs.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
stack = super.stack.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
# Older GHC versions need these additional dependencies.
ListLike = addBuildDepend super.ListLike self.semigroups;
base-compat-batteries = addBuildDepend super.base-compat-batteries self.contravariant;
# ghc versions prior to 8.8.x needs additional dependency to compile successfully.
ghc-lib-parser-ex = addBuildDepend super.ghc-lib-parser-ex self.ghc-lib-parser;
}

View file

@ -1,93 +0,0 @@
{ pkgs, haskellLib }:
with haskellLib;
self: super: {
# This compiler version needs llvm 5.x.
llvmPackages = pkgs.llvmPackages_5;
# Disable GHC 8.4.x core libraries.
array = null;
base = null;
binary = null;
bytestring = null;
Cabal = null;
containers = null;
deepseq = null;
directory = null;
filepath = null;
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-heap = null;
ghc-prim = null;
ghci = null;
haskeline = null;
hpc = null;
integer-gmp = null;
mtl = null;
parsec = null;
pretty = null;
process = null;
rts = null;
stm = null;
template-haskell = null;
terminfo = null;
text = null;
time = null;
transformers = null;
unix = null;
xhtml = null;
# Needs Cabal 3.2.x.
cabal-install = super.cabal-install.overrideScope (self: super: { Cabal = self.Cabal_3_2_1_0; });
jailbreak-cabal = super.jailbreak-cabal.override { Cabal = self.Cabal_3_2_1_0; };
# Restricts aeson to <1.4
# https://github.com/purescript/purescript/pull/3537
purescript = doJailbreak super.purescript;
# https://github.com/jcristovao/enclosed-exceptions/issues/12
enclosed-exceptions = dontCheck super.enclosed-exceptions;
# https://github.com/jaor/xmobar/issues/356
xmobar = super.xmobar.overrideScope (self: super: { hinotify = self.hinotify_0_3_9; });
hinotify_0_3_9 = dontCheck (doJailbreak super.hinotify_0_3_9); # allow async 2.2.x
# Reduction stack overflow; size = 38
# https://github.com/jystic/hadoop-tools/issues/31
hadoop-rpc =
let patch = pkgs.fetchpatch
{ url = "https://github.com/shlevy/hadoop-tools/commit/f03a46cd15ce3796932c3382e48bcbb04a6ee102.patch";
sha256 = "09ls54zy6gx84fmzwgvx18ssgm740cwq6ds70p0p125phi54agcp";
stripLen = 1;
};
in appendPatch super.hadoop-rpc patch;
# stack-1.9.1 needs Cabal 2.4.x, a recent version of hpack, and a non-recent
# version of yaml. Go figure. We avoid overrideScope here because using it to
# change Cabal would re-compile every single package instead of just those
# that have it as an actual library dependency. The explicit overrides are
# more verbose but friendlier for Hydra.
stack = (doJailbreak super.stack).override {
Cabal = self.Cabal_2_4_1_0;
hpack = self.hpack.override { Cabal = self.Cabal_2_4_1_0; };
hackage-security = self.hackage-security.override { Cabal = self.Cabal_2_4_1_0; };
};
# Older GHC versions need these additional dependencies.
aeson = addBuildDepend super.aeson self.contravariant;
base-compat-batteries = addBuildDepend super.base-compat-batteries self.contravariant;
# Newer versions don't compile.
resolv = self.resolv_0_1_1_2;
# The old Haddock cannot process the newer documentation syntax.
fast-logger = dontHaddock super.fast-logger;
# ghc versions prior to 8.8.x needs additional dependency to compile successfully.
ghc-lib-parser-ex = addBuildDepend super.ghc-lib-parser-ex self.ghc-lib-parser;
hls-hlint-plugin = addBuildDepend super.hls-hlint-plugin self.ghc-lib;
}

View file

@ -52,15 +52,17 @@ self: super: {
haddock = self.haddock_2_23_1;
haddock-api = self.haddock-api_2_23_1;
# These builds need newer versions of Cabal.
# This build needs a newer version of Cabal.
cabal2spec = super.cabal2spec.override { Cabal = self.Cabal_3_2_1_0; };
cabal-install = super.cabal-install.override {
Cabal = super.Cabal_3_4_0_0;
hackage-security = super.hackage-security.override { Cabal = super.Cabal_3_4_0_0; };
# Using dontCheck to break test dependency cycles
edit-distance = dontCheck (super.edit-distance.override { random = super.random_1_2_0; });
random = super.random_1_2_0;
};
# cabal-install needs more recent versions of Cabal and random, but an older
# version of base16-bytestring.
cabal-install = super.cabal-install.overrideScope (self: super: {
Cabal = self.Cabal_3_4_0_0;
base16-bytestring = self.base16-bytestring_0_1_1_7;
random = dontCheck super.random_1_2_0; # break infinite recursion
hashable = doJailbreak super.hashable; # allow random 1.2.x
});
# Ignore overly restrictive upper version bounds.
aeson-diff = doJailbreak super.aeson-diff;

View file

@ -43,12 +43,14 @@ self: super: {
unix = null;
xhtml = null;
# Build cabal-install with the compiler's native Cabal.
cabal-install = (doJailbreak super.cabal-install).override {
# Use dontCheck to break test dependency cycles
edit-distance = dontCheck (super.edit-distance.override { random = super.random_1_2_0; });
random = super.random_1_2_0;
};
# cabal-install needs more recent versions of random, but an older
# version of base16-bytestring.
cabal-install = (doJailbreak super.cabal-install).overrideScope (self: super: {
Cabal = null;
base16-bytestring = self.base16-bytestring_0_1_1_7;
random = dontCheck super.random_1_2_0; # break infinite recursion
hashable = doJailbreak super.hashable; # allow random 1.2.x
});
# Jailbreaks & Version Updates
async = doJailbreak super.async;

View file

@ -1,209 +0,0 @@
# GHCJS package fixes
#
# Please insert new packages *alphabetically*
# in the OTHER PACKAGES section.
{ pkgs, haskellLib }:
let
removeLibraryHaskellDepends = pnames: depends:
builtins.filter (e: !(builtins.elem (e.pname or "") pnames)) depends;
in
with haskellLib;
self: super:
## GENERAL SETUP BASE PACKAGES
let # The stage 1 packages
stage1 = pkgs.lib.genAttrs super.ghc.stage1Packages (pkg: null);
# The stage 2 packages. Regenerate with ../compilers/ghcjs/gen-stage2.rb
stage2 = super.ghc.mkStage2 {
inherit (self) callPackage;
};
in stage1 // stage2 // {
# GHCJS does not ship with the same core packages as GHC.
# https://github.com/ghcjs/ghcjs/issues/676
stm = self.stm_2_5_0_0;
ghc-compact = self.ghc-compact_0_1_0_0;
network = addBuildTools super.network (pkgs.lib.optional pkgs.buildPlatform.isDarwin pkgs.buildPackages.darwin.libiconv);
zlib = addBuildTools super.zlib (pkgs.lib.optional pkgs.buildPlatform.isDarwin pkgs.buildPackages.darwin.libiconv);
unix-compat = addBuildTools super.unix-compat (pkgs.lib.optional pkgs.buildPlatform.isDarwin pkgs.buildPackages.darwin.libiconv);
# LLVM is not supported on this GHC; use the latest one.
inherit (pkgs) llvmPackages;
inherit (self.ghc.bootPkgs)
jailbreak-cabal alex happy gtk2hs-buildtools rehoo hoogle;
# Don't set integer-simple to null!
# GHCJS uses integer-gmp, so any package expression that depends on
# integer-simple is wrong.
#integer-simple = null;
# These packages are core libraries in GHC 8.6..x, but not here.
bin-package-db = null;
haskeline = self.haskeline_0_7_5_0;
hpc = self.hpc_0_6_0_3;
terminfo = self.terminfo_0_4_1_4;
xhtml = self.xhtml_3000_2_2_1;
## OTHER PACKAGES
# haddock throws the error: No input file(s).
fail = dontHaddock super.fail;
cereal = addBuildDepend super.cereal [ self.fail ];
entropy = overrideCabal super.entropy (old: {
postPatch = old.postPatch or "" + ''
# cabal doesnt find ghc in this script, since its in the bootPkgs
sed -e '/Simple.Program/a import Distribution.Simple.Program.Types' \
-e 's|mConf.*=.*$|mConf = Just $ simpleConfiguredProgram "ghc" (FoundOnSystem "${self.ghc.bootPkgs.ghc}/bin/ghc")|g' -i Setup.hs
'';
});
# https://github.com/kazu-yamamoto/logger/issues/97
fast-logger = overrideCabal super.fast-logger (old: {
postPatch = old.postPatch or "" + ''
# remove the Safe extensions, since ghcjs-boot directory
# doesnt provide Trustworthy
sed -ie '/LANGUAGE Safe/d' System/Log/FastLogger/*.hs
cat System/Log/FastLogger/Date.hs
'';
});
# experimental
ghcjs-ffiqq = self.callPackage
({ mkDerivation, base, template-haskell, ghcjs-base, split, containers, text, ghc-prim
}:
mkDerivation {
pname = "ghcjs-ffiqq";
version = "0.1.0.0";
src = pkgs.fetchFromGitHub {
owner = "ghcjs";
repo = "ghcjs-ffiqq";
rev = "b52338c2dcd3b0707bc8aff2e171411614d4aedb";
sha256 = "08zxfm1i6zb7n8vbz3dywdy67vkixfyw48580rwfp48rl1s2z1c7";
};
libraryHaskellDepends = [
base template-haskell ghcjs-base split containers text ghc-prim
];
description = "FFI QuasiQuoter for GHCJS";
license = pkgs.lib.licenses.mit;
}) {};
# experimental
ghcjs-vdom = self.callPackage
({ mkDerivation, base, ghc-prim, ghcjs-ffiqq, ghcjs-base, ghcjs-prim
, containers, split, template-haskell
}:
mkDerivation rec {
pname = "ghcjs-vdom";
version = "0.2.0.0";
src = pkgs.fetchFromGitHub {
owner = "ghcjs";
repo = pname;
rev = "1c1175ba22eca6d7efa96f42a72290ade193c148";
sha256 = "0c6l1dk2anvz94yy5qblrfh2iv495rjq4qmhlycc24dvd02f7n9m";
};
libraryHaskellDepends = [
base ghc-prim ghcjs-ffiqq ghcjs-base ghcjs-prim containers split
template-haskell
];
license = pkgs.lib.licenses.mit;
description = "bindings for https://github.com/Matt-Esch/virtual-dom";
}) {};
ghcjs-dom = overrideCabal super.ghcjs-dom (drv: {
libraryHaskellDepends = with self; [
ghcjs-base ghcjs-dom-jsffi text transformers
];
configureFlags = [ "-fjsffi" "-f-webkit" ];
});
ghcjs-dom-jsffi = overrideCabal super.ghcjs-dom-jsffi (drv: {
libraryHaskellDepends = (drv.libraryHaskellDepends or []) ++ [ self.ghcjs-base self.text ];
isLibrary = true;
});
ghc-paths = overrideCabal super.ghc-paths (drv: {
patches = [ ./patches/ghc-paths-nix-ghcjs.patch ];
});
http2 = addBuildDepends super.http2 [ self.aeson self.aeson-pretty self.hex self.unordered-containers self.vector self.word8 ];
# ghcjsBoot uses async 2.0.1.6, protolude wants 2.1.*
# These are the correct dependencies specified when calling `cabal2nix --compiler ghcjs`
# By default, the `miso` derivation present in hackage-packages.nix
# does not contain dependencies suitable for ghcjs
miso = overrideCabal super.miso (drv: {
libraryHaskellDepends = with self; [
BoundedChan bytestring containers ghcjs-base aeson base
http-api-data http-types network-uri scientific servant text
transformers unordered-containers vector
];
});
pqueue = overrideCabal super.pqueue (drv: {
postPatch = ''
sed -i -e '12s|null|Data.PQueue.Internals.null|' Data/PQueue/Internals.hs
sed -i -e '64s|null|Data.PQueue.Internals.null|' Data/PQueue/Internals.hs
sed -i -e '32s|null|Data.PQueue.Internals.null|' Data/PQueue/Min.hs
sed -i -e '32s|null|Data.PQueue.Max.null|' Data/PQueue/Max.hs
sed -i -e '42s|null|Data.PQueue.Prio.Internals.null|' Data/PQueue/Prio/Min.hs
sed -i -e '42s|null|Data.PQueue.Prio.Max.null|' Data/PQueue/Prio/Max.hs
'';
});
profunctors = overrideCabal super.profunctors (drv: {
preConfigure = ''
sed -i 's/^{-# ANN .* #-}//' src/Data/Profunctor/Unsafe.hs
'';
});
protolude = doJailbreak super.protolude;
# reflex 0.3, made compatible with the newest GHCJS.
reflex = overrideCabal super.reflex (drv: {
src = pkgs.fetchFromGitHub {
owner = "ryantrinkle";
repo = "reflex";
rev = "cc62c11a6cde31412582758c236919d4bb766ada";
sha256 = "1j4vw0636bkl46lj8ry16i04vgpivjc6bs3ls54ppp1wfp63q7w4";
};
});
# reflex-dom 0.2, made compatible with the newest GHCJS.
reflex-dom = overrideCabal super.reflex-dom (drv: {
src = pkgs.fetchFromGitHub {
owner = "ryantrinkle";
repo = "reflex-dom";
rev = "639d9ca13c2def075e83344c9afca6eafaf24219";
sha256 = "0166ihbh3dbfjiym9w561svpgvj0x4i8i8ws70xaafi0cmpsxrar";
};
libraryHaskellDepends =
removeLibraryHaskellDepends [
"glib" "gtk3" "webkitgtk3" "webkitgtk3-javascriptcore" "raw-strings-qq" "unix"
] drv.libraryHaskellDepends;
});
transformers-compat = overrideCabal super.transformers-compat (drv: {
configureFlags = [];
});
# triggers an internal pattern match failure in haddock
# https://github.com/haskell/haddock/issues/553
wai = dontHaddock super.wai;
base-orphans = dontCheck super.base-orphans;
distributive = dontCheck super.distributive;
# https://github.com/glguy/th-abstraction/issues/53
th-abstraction = dontCheck super.th-abstraction;
# https://github.com/dreixel/syb/issues/21
syb = dontCheck super.syb;
# https://github.com/ghcjs/ghcjs/issues/677
hspec-core = dontCheck super.hspec-core;
}

View file

@ -73,8 +73,11 @@ default-package-overrides:
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
# not yet available in Nixpkgs
- gi-gdkx11 < 4
- hlint < 3.3 # We dont have ghc-lib-parser 9.0.X yet.
- ghcide < 1.1 # To stay hls 1.0 compatible
- hls-retrie-plugin < 1.0.0.1 # To stay hls 1.0 compatible
# Stackage Nightly 2021-03-12
# Stackage Nightly 2021-03-17
- abstract-deque ==0.3
- abstract-par ==0.3.3
- AC-Angle ==1.0
@ -88,7 +91,7 @@ default-package-overrides:
- aeson-attoparsec ==0.0.0
- aeson-better-errors ==0.9.1.0
- aeson-casing ==0.2.0.0
- aeson-combinators ==0.0.4.1
- aeson-combinators ==0.0.5.0
- aeson-commit ==1.3
- aeson-compat ==0.3.9
- aeson-default ==0.9.1.0
@ -208,10 +211,10 @@ default-package-overrides:
- amazonka-waf ==1.6.1
- amazonka-workspaces ==1.6.1
- amazonka-xray ==1.6.1
- amqp ==0.21.0
- amqp ==0.22.0
- amqp-utils ==0.6.1.0
- annotated-wl-pprint ==0.7.0
- ansi-terminal ==0.10.3
- ansi-terminal ==0.11
- ansi-wl-pprint ==0.6.9
- ANum ==0.2.0.2
- apecs ==0.9.2
@ -228,7 +231,6 @@ default-package-overrides:
- approximate-equality ==1.1.0.2
- app-settings ==0.2.0.12
- arbor-lru-cache ==0.1.1.1
- arbor-postgres ==0.0.5
- arithmoi ==0.11.0.1
- array-memoize ==0.6.0
- arrow-extras ==0.1.0.1
@ -278,7 +280,7 @@ default-package-overrides:
- bank-holidays-england ==0.2.0.6
- barbies ==2.0.2.0
- base16 ==0.3.0.1
- base16-bytestring ==0.1.1.7
- base16-bytestring ==1.0.1.0
- base16-lens ==0.1.3.2
- base32 ==0.2.0.0
- base32-lens ==0.1.1.1
@ -375,6 +377,7 @@ default-package-overrides:
- bugzilla-redhat ==0.3.1
- burrito ==1.2.0.1
- butcher ==1.3.3.2
- buttplug-hs-core ==0.1.0.0
- bv ==0.5
- bv-little ==1.1.1
- byteable ==0.1.1
@ -412,7 +415,7 @@ default-package-overrides:
- cardano-coin-selection ==1.0.1
- carray ==0.1.6.8
- casa-client ==0.0.1
- casa-types ==0.0.1
- casa-types ==0.0.2
- cased ==0.1.0.0
- case-insensitive ==1.2.1.0
- cases ==0.1.4
@ -457,7 +460,7 @@ default-package-overrides:
- cipher-rc4 ==0.1.4
- circle-packing ==0.1.0.6
- circular ==0.3.1.1
- citeproc ==0.3.0.8
- citeproc ==0.3.0.9
- clash-ghc ==1.2.5
- clash-lib ==1.2.5
- clash-prelude ==1.2.5
@ -477,18 +480,15 @@ default-package-overrides:
- cmark-lucid ==0.1.0.0
- cmdargs ==0.10.21
- codec-beam ==0.2.0
- codec-rpm ==0.2.2
- code-page ==0.2.1
- co-log ==0.4.0.1
- co-log-concurrent ==0.5.0.0
- co-log-core ==0.2.1.1
- Color ==0.3.0
- Color ==0.3.1
- colorful-monoids ==0.2.1.3
- colorize-haskell ==1.0.1
- colour ==2.3.5
- colourista ==0.1.0.0
- combinatorial ==0.1.0.1
- comfort-array ==0.4
- comfort-array ==0.4.1
- comfort-graph ==0.0.3.1
- commonmark ==0.1.1.4
- commonmark-extensions ==0.2.0.4
@ -501,7 +501,7 @@ default-package-overrides:
- compensated ==0.8.3
- compiler-warnings ==0.1.0
- composable-associations ==0.1.0.0
- composable-associations-aeson ==0.1.0.0
- composable-associations-aeson ==0.1.0.1
- composite-aeson ==0.7.4.0
- composite-aeson-path ==0.7.4.0
- composite-aeson-refined ==0.7.4.0
@ -514,7 +514,7 @@ default-package-overrides:
- composition ==1.0.2.1
- composition-extra ==2.0.0
- concise ==0.1.0.1
- concurrency ==1.11.0.0
- concurrency ==1.11.0.1
- concurrent-extra ==0.7.0.12
- concurrent-output ==1.10.12
- concurrent-split ==0.0.1.1
@ -528,7 +528,7 @@ default-package-overrides:
- conduit-parse ==0.2.1.0
- conduit-zstd ==0.0.2.0
- conferer ==1.1.0.0
- conferer-aeson ==1.1.0.0
- conferer-aeson ==1.1.0.1
- conferer-hspec ==1.1.0.0
- conferer-warp ==1.1.0.0
- ConfigFile ==1.1.4
@ -556,7 +556,6 @@ default-package-overrides:
- core-text ==0.3.0.0
- countable ==1.0
- country ==0.2.1
- cpio-conduit ==0.7.0
- cpphs ==1.20.9.1
- cprng-aes ==0.6.1
- cpu ==0.1.2
@ -577,7 +576,7 @@ default-package-overrides:
- cryptohash-sha1 ==0.11.100.1
- cryptohash-sha256 ==0.11.102.0
- cryptohash-sha512 ==0.11.100.1
- cryptonite ==0.27
- cryptonite ==0.28
- cryptonite-conduit ==0.2.2
- cryptonite-openssl ==0.7
- crypto-numbers ==0.2.7
@ -628,7 +627,7 @@ default-package-overrides:
- data-forest ==0.1.0.8
- data-has ==0.4.0.0
- data-hash ==0.2.0.1
- data-interval ==2.0.1
- data-interval ==2.1.0
- data-inttrie ==0.1.4
- data-lens-light ==0.1.2.2
- data-memocombinators ==0.5.1
@ -649,12 +648,12 @@ default-package-overrides:
- debian-build ==0.10.2.0
- debug-trace-var ==0.2.0
- dec ==0.0.4
- Decimal ==0.5.1
- Decimal ==0.5.2
- declarative ==0.5.4
- deepseq-generics ==0.2.0.0
- deepseq-instances ==0.1.0.1
- deferred-folds ==0.9.17
- dejafu ==2.4.0.1
- dejafu ==2.4.0.2
- dense-linear-algebra ==0.1.0.0
- depq ==0.4.1.0
- deque ==0.4.3
@ -691,12 +690,13 @@ default-package-overrides:
- dlist-nonempty ==0.1.1
- dns ==4.0.1
- dockerfile ==0.2.0
- doclayout ==0.3
- doclayout ==0.3.0.2
- doctemplates ==0.9
- doctest ==0.16.3
- doctest-discover ==0.2.0.0
- doctest-driver-gen ==0.3.0.3
- doctest-exitcode-stdio ==0.0
- doctest-extract ==0.1
- doctest-lib ==0.1
- doldol ==0.4.1.2
- do-list ==1.0.1
@ -712,7 +712,7 @@ default-package-overrides:
- dual ==0.1.1.1
- dublincore-xml-conduit ==0.1.0.2
- dunai ==0.7.0
- duration ==0.1.0.0
- duration ==0.2.0.0
- dvorak ==0.1.0.0
- dynamic-state ==0.3.1
- dyre ==0.8.12
@ -794,7 +794,7 @@ default-package-overrides:
- executable-path ==0.0.3.1
- exit-codes ==1.0.0
- exomizer ==1.0.0
- experimenter ==0.1.0.4
- experimenter ==0.1.0.10
- expiring-cache-map ==0.0.6.1
- explicit-exception ==0.1.10
- exp-pairs ==0.2.1.0
@ -844,6 +844,7 @@ default-package-overrides:
- fixed-length ==0.2.2
- fixed-vector ==1.2.0.0
- fixed-vector-hetero ==0.6.0.0
- fix-whitespace ==0.0.5
- flac ==0.2.0
- flac-picture ==0.1.2
- flags-applicative ==0.1.0.2
@ -951,7 +952,7 @@ default-package-overrides:
- ghc-byteorder ==4.11.0.0.10
- ghc-check ==0.5.0.3
- ghc-core ==0.5.6
- ghc-events ==0.15.1
- ghc-events ==0.16.0
- ghc-exactprint ==0.6.4
- ghcid ==0.8.7
- ghci-hexcalc ==0.1.1.0
@ -969,7 +970,7 @@ default-package-overrides:
- ghc-typelits-extra ==0.4.2
- ghc-typelits-knownnat ==0.7.5
- ghc-typelits-natnormalise ==0.7.4
- ghc-typelits-presburger ==0.5.2.0
- ghc-typelits-presburger ==0.6.0.0
- ghost-buster ==0.1.1.0
- gi-atk ==2.0.22
- gi-cairo ==1.0.24
@ -991,8 +992,7 @@ default-package-overrides:
- gingersnap ==0.3.1.0
- gi-pango ==1.0.23
- githash ==0.1.5.0
- github ==0.26
- github-release ==1.3.6
- github-release ==1.3.7
- github-rest ==1.0.3
- github-types ==0.2.1
- github-webhooks ==0.15.0
@ -1016,6 +1016,7 @@ default-package-overrides:
- graphite ==0.10.0.1
- graphql-client ==1.1.0
- graphs ==0.7.1
- graphula ==2.0.0.3
- graphviz ==2999.20.1.0
- graph-wrapper ==0.2.6.0
- gravatar ==0.8.0
@ -1032,7 +1033,6 @@ default-package-overrides:
- hackage-db ==2.1.0
- hackage-security ==0.6.0.1
- haddock-library ==1.9.0
- hadolint ==1.23.0
- hadoop-streaming ==0.2.0.3
- hakyll-convert ==0.3.0.4
- half ==0.3.1
@ -1078,11 +1078,11 @@ default-package-overrides:
- hdaemonize ==0.5.6
- HDBC ==2.4.0.3
- HDBC-session ==0.1.2.0
- headroom ==0.4.0.0
- headroom ==0.4.1.0
- heap ==1.0.4
- heaps ==0.3.6.1
- hebrew-time ==0.1.2
- hedgehog ==1.0.4
- hedgehog ==1.0.5
- hedgehog-corpus ==0.2.0
- hedgehog-fakedata ==0.0.1.4
- hedgehog-fn ==1.0
@ -1095,18 +1095,17 @@ default-package-overrides:
- hexml ==0.3.4
- hexml-lens ==0.2.1
- hexpat ==0.20.13
- hexstring ==0.11.1
- hformat ==0.3.3.1
- hfsevents ==0.1.6
- hgrev ==0.2.6
- hidapi ==0.1.5
- hie-bios ==0.7.4
- hie-bios ==0.7.5
- hi-file-parser ==0.1.0.0
- higher-leveldb ==0.6.0.0
- highlighting-kate ==0.6.4
- hinfo ==0.0.3.0
- hinotify ==0.4.1
- hint ==0.9.0.3
- hint ==0.9.0.4
- hjsmin ==0.2.0.4
- hkd-default ==1.1.0.0
- hkgr ==0.2.7
@ -1152,9 +1151,10 @@ default-package-overrides:
- hsinstall ==2.6
- HSlippyMap ==3.0.1
- hslogger ==1.3.1.0
- hslua ==1.2.0
- hslua ==1.3.0.1
- hslua-aeson ==1.0.3.1
- hslua-module-doclayout ==0.2.0.1
- hslua-module-path ==0.1.0.1
- hslua-module-system ==0.2.2.1
- hslua-module-text ==0.3.0.1
- HsOpenSSL ==0.11.5.1
@ -1180,10 +1180,11 @@ default-package-overrides:
- hspec-parsec ==0
- hspec-smallcheck ==0.5.2
- hspec-tables ==0.0.1
- hspec-wai ==0.10.1
- hspec-wai-json ==0.10.1
- hspec-wai ==0.11.0
- hspec-wai-json ==0.11.0
- hs-php-session ==0.0.9.3
- hsshellscript ==3.4.5
- hsshellscript ==3.5.0
- hs-tags ==0.1.5
- HStringTemplate ==0.8.7
- HSvm ==0.1.1.3.22
- HsYAML ==0.2.1.0
@ -1196,9 +1197,9 @@ default-package-overrides:
- html-entities ==1.1.4.3
- html-entity-map ==0.1.0.0
- htoml ==1.0.0.3
- http2 ==2.0.5
- http2 ==2.0.6
- HTTP ==4000.3.15
- http-api-data ==0.4.1.1
- http-api-data ==0.4.2
- http-client ==0.6.4.1
- http-client-openssl ==0.3.2.0
- http-client-overrides ==0.1.1.0
@ -1209,7 +1210,7 @@ default-package-overrides:
- http-directory ==0.1.8
- http-download ==0.2.0.0
- httpd-shed ==0.4.1.1
- http-link-header ==1.0.3.1
- http-link-header ==1.2.0
- http-media ==0.8.0.0
- http-query ==0.1.0.1
- http-reverse-proxy ==0.6.0
@ -1286,9 +1287,10 @@ default-package-overrides:
- indexed-list-literals ==0.2.1.3
- indexed-profunctors ==0.1
- indexed-traversable ==0.1.1
- indexed-traversable-instances ==0.1
- infer-license ==0.2.0
- inflections ==0.4.0.6
- influxdb ==1.9.1
- influxdb ==1.9.1.1
- ini ==0.4.1
- inj ==1.0
- inline-c ==0.9.1.4
@ -1344,9 +1346,9 @@ default-package-overrides:
- ix-shapable ==0.1.0
- jack ==0.7.1.4
- jalaali ==1.0.0.0
- jira-wiki-markup ==1.3.3
- jira-wiki-markup ==1.3.4
- jose ==0.8.4
- jose-jwt ==0.9.0
- jose-jwt ==0.9.1
- js-chart ==2.9.4.1
- js-dgtable ==0.5.2
- js-flot ==0.8.3
@ -1369,6 +1371,7 @@ default-package-overrides:
- kawhi ==0.3.0
- kazura-queue ==0.1.0.4
- kdt ==0.2.4
- keep-alive ==0.2.0.0
- keycode ==0.2.2
- keys ==3.12.3
- ki ==0.2.0.1
@ -1381,6 +1384,7 @@ default-package-overrides:
- kubernetes-webhook-haskell ==0.2.0.3
- l10n ==0.1.0.1
- labels ==0.3.3
- lackey ==1.0.14
- LambdaHack ==0.9.5.0
- lame ==0.2.0
- language-avro ==0.1.3.1
@ -1396,7 +1400,7 @@ default-package-overrides:
- lapack ==0.3.2
- lapack-carray ==0.0.3
- lapack-comfort-array ==0.0.0.1
- lapack-ffi ==0.0.2
- lapack-ffi ==0.0.3
- lapack-ffi-tools ==0.1.2.1
- largeword ==1.2.5
- latex ==0.1.0.4
@ -1432,7 +1436,6 @@ default-package-overrides:
- liboath-hs ==0.0.1.2
- libyaml ==0.1.2
- LibZip ==1.0.1
- life-sync ==1.1.1.0
- lifted-async ==0.10.1.3
- lifted-base ==0.2.3.12
- lift-generics ==0.2
@ -1450,7 +1453,6 @@ default-package-overrides:
- list-singleton ==1.0.0.5
- list-t ==1.0.4
- ListTree ==0.2.3
- little-logger ==0.3.1
- little-rio ==0.2.2
- llvm-hs ==9.0.1
- llvm-hs-pure ==9.0.0
@ -1523,12 +1525,12 @@ default-package-overrides:
- messagepack ==0.5.4
- metrics ==0.4.1.1
- mfsolve ==0.3.2.0
- microlens ==0.4.11.2
- microlens ==0.4.12.0
- microlens-aeson ==2.3.1
- microlens-contra ==0.1.0.2
- microlens-ghc ==0.4.12
- microlens-ghc ==0.4.13
- microlens-mtl ==0.2.0.1
- microlens-platform ==0.4.1
- microlens-platform ==0.4.2
- microlens-process ==0.2.0.2
- microlens-th ==0.4.3.9
- microspec ==0.2.1.3
@ -1551,7 +1553,7 @@ default-package-overrides:
- mixed-types-num ==0.4.1
- mltool ==0.2.0.1
- mmap ==0.5.9
- mmark ==0.0.7.3
- mmark ==0.0.7.2
- mmark-cli ==0.0.5.0
- mmark-ext ==0.2.1.3
- mmorph ==1.1.5
@ -1625,7 +1627,7 @@ default-package-overrides:
- mwc-random ==0.14.0.0
- mwc-random-monad ==0.7.3.1
- mx-state-codes ==1.0.0.0
- mysql ==0.1.7.3
- mysql ==0.2
- mysql-simple ==0.4.5
- n2o ==0.11.1
- nagios-check ==0.3.2
@ -1668,11 +1670,12 @@ default-package-overrides:
- nix-paths ==1.0.1
- nonce ==1.0.7
- nondeterminism ==1.4
- non-empty ==0.3.2
- non-empty ==0.3.3
- nonempty-containers ==0.3.4.1
- nonemptymap ==0.0.6.0
- non-empty-sequence ==0.2.0.4
- nonempty-vector ==0.2.1.0
- nonempty-zipper ==1.0.0.1
- non-negative ==0.1.2
- not-gloss ==0.7.7.0
- no-value ==1.0.0.0
@ -1684,7 +1687,7 @@ default-package-overrides:
- nsis ==0.3.3
- numbers ==3000.2.0.2
- numeric-extras ==0.1
- numeric-prelude ==0.4.3.2
- numeric-prelude ==0.4.3.3
- numhask ==0.6.0.2
- NumInstances ==1.4
- numtype-dk ==0.5.0.2
@ -1729,8 +1732,8 @@ default-package-overrides:
- optics-vl ==0.2.1
- optional-args ==1.0.2
- options ==1.2.1.1
- optparse-applicative ==0.15.1.0
- optparse-generic ==1.3.1
- optparse-applicative ==0.16.1.0
- optparse-generic ==1.4.4
- optparse-simple ==0.1.1.3
- optparse-text ==0.1.1.0
- ordered-containers ==0.2.2
@ -1741,8 +1744,8 @@ default-package-overrides:
- pager ==0.1.1.0
- pagination ==0.2.2
- pagure-cli ==0.2
- pandoc ==2.11.4
- pandoc-plot ==1.1.0
- pandoc ==2.12
- pandoc-plot ==1.1.1
- pandoc-types ==1.22
- pantry ==0.5.1.4
- parallel ==3.2.2.0
@ -1760,8 +1763,9 @@ default-package-overrides:
- partial-handler ==1.0.3
- partial-isomorphisms ==0.2.2.1
- partial-semigroup ==0.5.1.8
- password ==2.1.1.0
- password-instances ==2.0.0.2
- password ==3.0.0.0
- password-instances ==3.0.0.0
- password-types ==1.0.0.0
- path ==0.7.0
- path-binary-instance ==0.1.0.1
- path-extensions ==0.1.1.0
@ -1892,7 +1896,7 @@ default-package-overrides:
- promises ==0.3
- prompt ==0.1.1.2
- prospect ==0.1.0.0
- proto3-wire ==1.1.0
- proto3-wire ==1.2.0
- protobuf ==0.2.1.3
- protobuf-simple ==0.1.1.0
- protocol-buffers ==2.4.17
@ -1900,7 +1904,6 @@ default-package-overrides:
- protocol-radius ==0.0.1.1
- protocol-radius-test ==0.1.0.1
- proto-lens ==0.7.0.0
- proto-lens-optparse ==0.1.1.7
- proto-lens-protobuf-types ==0.7.0.0
- proto-lens-protoc ==0.7.0.0
- proto-lens-runtime ==0.7.0.0
@ -1958,10 +1961,11 @@ default-package-overrides:
- rank2classes ==1.4.1
- Rasterific ==0.7.5.3
- rasterific-svg ==0.3.3.2
- ratel ==1.0.13
- ratel ==1.0.14
- rate-limit ==1.4.2
- ratel-wai ==1.1.4
- ratel-wai ==1.1.5
- rattle ==0.2
- rattletrap ==11.0.0
- Rattus ==0.5
- rawfilepath ==0.2.4
- rawstring-qm ==0.2.3.0
@ -1997,7 +2001,7 @@ default-package-overrides:
- regex-compat ==0.95.2.1
- regex-compat-tdfa ==0.95.1.4
- regex-pcre ==0.95.0.0
- regex-pcre-builtin ==0.95.1.3.8.43
- regex-pcre-builtin ==0.95.2.3.8.43
- regex-posix ==0.96.0.0
- regex-tdfa ==1.3.1.0
- regex-with-pcre ==1.1.0.0
@ -2017,6 +2021,7 @@ default-package-overrides:
- req ==3.9.0
- req-conduit ==1.0.0
- rerebase ==1.6.1
- rescue ==0.4.2.1
- resistor-cube ==0.0.1.2
- resolv ==0.1.2.0
- resource-pool ==0.2.3.2
@ -2088,7 +2093,7 @@ default-package-overrides:
- selda-postgresql ==0.1.8.1
- selda-sqlite ==0.1.7.1
- selections ==0.3.0.0
- selective ==0.4.1.1
- selective ==0.4.2
- semialign ==1.1.0.1
- semialign-indexed ==1.1
- semialign-optics ==1.1
@ -2116,7 +2121,6 @@ default-package-overrides:
- servant-exceptions ==0.2.1
- servant-exceptions-server ==0.2.1
- servant-foreign ==0.15.3
- servant-github-webhook ==0.4.2.0
- servant-http-streams ==0.18.2
- servant-machines ==0.15.1
- servant-multipart ==0.12
@ -2168,15 +2172,15 @@ default-package-overrides:
- singleton-bool ==0.1.5
- singleton-nats ==0.4.5
- singletons ==2.7
- singletons-presburger ==0.5.0.0
- singletons-presburger ==0.6.0.0
- siphash ==1.0.3
- sitemap-gen ==0.1.0.0
- sized ==1.0.0.0
- skein ==1.0.9.4
- skews ==0.1.0.3
- skip-var ==0.1.1.0
- skylighting ==0.10.4
- skylighting-core ==0.10.4
- skylighting ==0.10.4.1
- skylighting-core ==0.10.4.1
- slack-api ==0.12
- slack-progressbar ==0.1.0.1
- slist ==0.1.1.0
@ -2248,7 +2252,7 @@ default-package-overrides:
- storable-record ==0.0.5
- storable-tuple ==0.0.3.3
- storablevector ==0.2.13.1
- store ==0.7.9
- store ==0.7.10
- store-core ==0.4.4.4
- store-streaming ==0.2.0.3
- stratosphere ==0.59.1
@ -2256,6 +2260,7 @@ default-package-overrides:
- streaming-attoparsec ==1.0.0.1
- streaming-bytestring ==0.2.0
- streaming-commons ==0.2.2.1
- streamly ==0.7.3
- streams ==3.3
- strict ==0.4.0.1
- strict-concurrency ==0.2.4.3
@ -2277,11 +2282,11 @@ default-package-overrides:
- stripe-haskell ==2.6.2
- stripe-http-client ==2.6.2
- stripe-tests ==2.6.2
- strive ==5.0.13
- strive ==5.0.14
- structs ==0.1.5
- structured ==0.1.0.1
- structured-cli ==2.6.0.0
- subcategories ==0.1.0.0
- structured-cli ==2.7.0.1
- subcategories ==0.1.1.0
- sum-type-boilerplate ==0.1.1
- sundown ==0.6
- superbuffer ==0.3.1.1
@ -2320,14 +2325,14 @@ default-package-overrides:
- tar ==0.5.1.1
- tar-conduit ==0.3.2
- tardis ==0.4.3.0
- tasty ==1.2.3
- tasty-ant-xml ==1.1.7
- tasty ==1.4.1
- tasty-ant-xml ==1.1.8
- tasty-bench ==0.2.2
- tasty-dejafu ==2.0.0.7
- tasty-discover ==4.2.2
- tasty-expected-failure ==0.12.3
- tasty-focus ==1.0.1
- tasty-golden ==2.3.3.2
- tasty-golden ==2.3.4
- tasty-hedgehog ==1.0.1.0
- tasty-hspec ==1.1.6
- tasty-hunit ==0.10.0.3
@ -2338,7 +2343,7 @@ default-package-overrides:
- tasty-program ==1.0.5
- tasty-quickcheck ==0.10.1.2
- tasty-rerun ==1.1.18
- tasty-silver ==3.1.15
- tasty-silver ==3.2.1
- tasty-smallcheck ==0.8.2
- tasty-test-reporter ==0.1.1.4
- tasty-th ==0.1.7
@ -2363,7 +2368,7 @@ default-package-overrides:
- test-framework-smallcheck ==0.2
- test-fun ==0.1.0.0
- testing-type-modifiers ==0.1.0.1
- texmath ==0.12.1.1
- texmath ==0.12.2
- text-ansi ==0.1.1
- text-binary ==0.2.1.1
- text-builder ==0.6.6.1
@ -2373,7 +2378,7 @@ default-package-overrides:
- text-latin1 ==0.3.1
- text-ldap ==0.1.1.13
- textlocal ==0.1.0.5
- text-manipulate ==0.2.0.1
- text-manipulate ==0.3.0.0
- text-metrics ==0.3.0
- text-postgresql ==0.0.3.1
- text-printer ==0.5.0.1
@ -2383,11 +2388,11 @@ default-package-overrides:
- text-show ==3.9
- text-show-instances ==3.8.4
- text-zipper ==0.11
- tfp ==1.0.1.1
- tfp ==1.0.2
- tf-random ==0.5
- th-abstraction ==0.4.2.0
- th-bang-compat ==0.0.1.0
- th-compat ==0.1.1
- th-compat ==0.1.2
- th-constraint-compat ==0.0.1.0
- th-data-compat ==0.1.0.0
- th-desugar ==1.11
@ -2396,7 +2401,7 @@ default-package-overrides:
- these-lens ==1.0.1.2
- these-optics ==1.0.1.2
- these-skinny ==0.7.4
- th-expand-syns ==0.4.6.0
- th-expand-syns ==0.4.8.0
- th-extras ==0.0.0.4
- th-lift ==0.8.2
- th-lift-instances ==0.1.18
@ -2447,15 +2452,13 @@ default-package-overrides:
- topograph ==1.0.0.1
- torsor ==0.1
- tostring ==0.2.1.1
- tracing ==0.0.5.2
- tracing-control ==0.0.6
- transaction ==0.1.1.3
- transformers-base ==0.4.5.2
- transformers-bifunctors ==0.1
- transformers-compat ==0.6.6
- transformers-fix ==1.0
- traverse-with-class ==1.0.1.0
- tree-diff ==0.1
- tree-diff ==0.2
- tree-fun ==0.8.1.0
- tree-view ==0.5.1
- trifecta ==2.1.1
@ -2468,7 +2471,7 @@ default-package-overrides:
- tuples-homogenous-h98 ==0.1.1.0
- tuple-sop ==0.3.1.0
- tuple-th ==0.2.5
- turtle ==1.5.20
- turtle ==1.5.21
- typecheck-plugin-nat-simple ==0.1.0.2
- TypeCompose ==0.9.14
- typed-process ==0.2.6.0
@ -2504,6 +2507,7 @@ default-package-overrides:
- unicode ==0.0.1.1
- unicode-show ==0.1.0.4
- unicode-transforms ==0.3.7.1
- unification-fd ==0.11.1
- union-find ==0.2
- unipatterns ==0.0.0.0
- uniplate ==1.6.13
@ -2541,11 +2545,11 @@ default-package-overrides:
- utf8-light ==0.4.2
- utf8-string ==1.0.2
- util ==0.1.17.1
- utility-ht ==0.0.15
- utility-ht ==0.0.16
- uuid ==1.3.14
- uuid-types ==1.0.4
- validation ==1.1.1
- validation-selective ==0.1.0.0
- validation-selective ==0.1.0.1
- validity ==0.11.0.0
- validity-aeson ==0.2.0.4
- validity-bytestring ==0.4.1.1
@ -2595,7 +2599,6 @@ default-package-overrides:
- wai-feature-flags ==0.1.0.1
- wai-handler-launch ==3.0.3.1
- wai-logger ==2.3.6
- wai-middleware-auth ==0.2.3.1
- wai-middleware-caching ==0.1.0.2
- wai-middleware-clacks ==0.1.0.1
- wai-middleware-static ==0.9.0
@ -2629,7 +2632,7 @@ default-package-overrides:
- Win32-notify ==0.3.0.3
- windns ==0.1.0.1
- witch ==0.0.0.5
- witherable-class ==0
- witherable ==0.4.1
- within ==0.2.0.1
- with-location ==0.1.0
- with-utf8 ==1.0.2.2
@ -2695,7 +2698,6 @@ default-package-overrides:
- yesod-gitrev ==0.2.1
- yesod-markdown ==0.12.6.6
- yesod-newsfeed ==1.7.0.0
- yesod-page-cursor ==2.0.0.4
- yesod-paginator ==1.1.1.0
- yesod-persistent ==1.6.0.5
- yesod-sitemap ==1.6.0
@ -2732,6 +2734,7 @@ extra-packages:
- Cabal == 2.2.* # required for jailbreak-cabal etc.
- Cabal == 2.4.* # required for cabal-install etc.
- Cabal == 3.2.* # required for cabal-install etc.
- base16-bytestring < 1 # required for cabal-install etc.
- dhall == 1.29.0 # required for ats-pkg
- dhall == 1.37.1 # required for spago 0.19.0.
- Diff < 0.4 # required by liquidhaskell-0.8.10.2: https://github.com/ucsd-progsys/liquidhaskell/issues/1729
@ -2871,27 +2874,27 @@ unsupported-platforms:
alsa-mixer: [ x86_64-darwin ]
alsa-pcm: [ x86_64-darwin ]
alsa-seq: [ x86_64-darwin ]
AWin32Console: [ i686-linux, x86_64-linux, x86_64-darwin ]
barbly: [ i686-linux, x86_64-linux ]
AWin32Console: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
barbly: [ i686-linux, x86_64-linux, aarch64-linux, armv7l-linux ]
bindings-directfb: [ x86_64-darwin ]
d3d11binding: [ i686-linux, x86_64-linux, x86_64-darwin ]
DirectSound: [ i686-linux, x86_64-linux, x86_64-darwin ]
dx9base: [ i686-linux, x86_64-linux, x86_64-darwin ]
dx9d3d: [ i686-linux, x86_64-linux, x86_64-darwin ]
dx9d3dx: [ i686-linux, x86_64-linux, x86_64-darwin ]
d3d11binding: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
DirectSound: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
dx9base: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
dx9d3d: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
dx9d3dx: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
freenect: [ x86_64-darwin ]
FTGL: [ x86_64-darwin ]
gi-ostree: [ x86_64-darwin ]
gtk-mac-integration: [ i686-linux, x86_64-linux ]
gtk-mac-integration: [ i686-linux, x86_64-linux, aarch64-linux, armv7l-linux ]
hcwiid: [ x86_64-darwin ]
HFuse: [ x86_64-darwin ]
hommage-ds: [ i686-linux, x86_64-linux, x86_64-darwin ]
hommage-ds: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
lio-fs: [ x86_64-darwin ]
midi-alsa: [ x86_64-darwin ]
pam: [ x86_64-darwin ]
PortMidi: [ x86_64-darwin ]
Raincat: [ x86_64-darwin ]
reactivity: [ i686-linux, x86_64-linux, x86_64-darwin ]
reactivity: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
rtlsdr: [ x86_64-darwin ]
rubberband: [ x86_64-darwin ]
sdl2-mixer: [ x86_64-darwin ]
@ -2899,18 +2902,18 @@ unsupported-platforms:
tokyotyrant-haskell: [ x86_64-darwin ]
vulkan: [ i686-linux, armv7l-linux ]
VulkanMemoryAllocator: [ i686-linux, armv7l-linux ]
Win32-console: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-dhcp-server: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-errors: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-extras: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-junction-point: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-notify: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-security: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-services-wrapper: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-services: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32: [ i686-linux, x86_64-linux, x86_64-darwin ]
Win32-console: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-dhcp-server: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-errors: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-extras: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-junction-point: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-notify: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-security: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-services-wrapper: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-services: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
xattr: [ x86_64-darwin ]
XInput: [ i686-linux, x86_64-linux, x86_64-darwin ]
XInput: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
xmobar: [ x86_64-darwin ]
dont-distribute-packages:
@ -3343,6 +3346,7 @@ broken-packages:
- asic
- asil
- asn
- ASN1
- asn1-codec
- asn1-data
- assert
@ -4013,7 +4017,6 @@ broken-packages:
- Chart-tests
- chart-unit
- charter
- chatter
- chatty-text
- chatwork
- cheapskate-terminal
@ -5388,6 +5391,7 @@ broken-packages:
- fractals
- fraction
- frag
- frame-markdown
- Frames-beam
- Frames-dsv
- Frames-map-reduce
@ -5450,7 +5454,6 @@ broken-packages:
- ftree
- ftshell
- full-sessions
- fullstop
- funbot
- funbot-client
- funbot-git-hook
@ -5945,6 +5948,7 @@ broken-packages:
- hahp
- haiji
- hailgun-send
- hails-bin
- hairy
- hakaru
- hakismet
@ -5961,6 +5965,7 @@ broken-packages:
- hakyll-contrib-links
- hakyll-dhall
- hakyll-dir-list
- hakyll-elm
- hakyll-favicon
- hakyll-filestore
- hakyll-images
@ -6127,7 +6132,6 @@ broken-packages:
- haskell-reflect
- haskell-rules
- haskell-spacegoo
- haskell-src
- haskell-src-exts-observe
- haskell-src-exts-prisms
- haskell-src-exts-qq
@ -6189,6 +6193,7 @@ broken-packages:
- haskellscript
- HaskellTorrent
- HaskellTutorials
- haskelm
- haskelzinc
- haskeme
- haskey
@ -6623,10 +6628,6 @@ broken-packages:
- hopencl
- HOpenCV
- hopfield
- hoppy-docs
- hoppy-generator
- hoppy-runtime
- hoppy-std
- hops
- hoq
- horizon
@ -6913,6 +6914,7 @@ broken-packages:
- http-wget
- http2-client-grpc
- http2-grpc-proto-lens
- http2-grpc-proto3-wire
- https-everywhere-rules
- https-everywhere-rules-raw
- httpspec
@ -6960,6 +6962,7 @@ broken-packages:
- hw-kafka-avro
- hw-prim-bits
- hw-simd
- hw-simd-cli
- hw-uri
- hwall-auth-iitk
- hweblib
@ -9180,6 +9183,7 @@ broken-packages:
- proto-lens-combinators
- proto-lens-descriptors
- proto3-suite
- proto3-wire
- protobuf-native
- protocol
- protocol-buffers-descriptor-fork
@ -9254,10 +9258,6 @@ broken-packages:
- qr-imager
- qr-repa
- qsem
- qtah-cpp-qt5
- qtah-examples
- qtah-generator
- qtah-qt5
- QuadEdge
- QuadTree
- quantfin
@ -10005,7 +10005,6 @@ broken-packages:
- sha1
- shade
- shadower
- shake-bench
- shake-bindist
- shake-cabal-build
- shake-dhall
@ -10052,6 +10051,7 @@ broken-packages:
- Shpadoinkle-examples
- Shpadoinkle-html
- Shpadoinkle-router
- Shpadoinkle-template
- Shpadoinkle-widgets
- shpider
- shuffle
@ -10190,6 +10190,7 @@ broken-packages:
- snap-auth-cli
- snap-blaze-clay
- snap-configuration-utilities
- snap-elm
- snap-error-collector
- snap-extras
- snap-routes
@ -10211,6 +10212,7 @@ broken-packages:
- snaplet-hdbc
- snaplet-hslogger
- snaplet-influxdb
- snaplet-lss
- snaplet-mandrill
- snaplet-mongoDB
- snaplet-mongodb-minimalistic
@ -11366,6 +11368,7 @@ broken-packages:
- wai-middleware-route
- wai-middleware-static-caching
- wai-middleware-travisci
- wai-middleware-validation
- wai-rate-limit-redis
- wai-request-spec
- wai-responsible

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
{ lib, supportedGhcVersions ? [ "865" "884" "8104" ], stdenv, haskellPackages
{ lib, supportedGhcVersions ? [ "884" "8104" ], stdenv, haskellPackages
, haskell }:
#
# The recommended way to override this package is

View file

@ -10320,8 +10320,7 @@ in
krank = haskell.lib.justStaticExecutables haskellPackages.krank;
# We use a version built with an older compiler because of https://github.com/pikajude/stylish-cabal/issues/12.
stylish-cabal = haskell.lib.justStaticExecutables haskell.packages.ghc865.stylish-cabal;
stylish-cabal = haskell.lib.justStaticExecutables haskellPackages.stylish-cabal;
all-cabal-hashes = callPackage ../data/misc/hackage { };

View file

@ -3,12 +3,9 @@
let
# These are attributes in compiler and packages that don't support integer-simple.
integerSimpleExcludes = [
"ghc822Binary"
"ghc865Binary"
"ghc8102Binary"
"ghc8102BinaryMinimal"
"ghcjs"
"ghcjs86"
"integer-simple"
"native-bignum"
"ghcHEAD"
@ -47,8 +44,6 @@ in {
compiler = {
ghc822Binary = callPackage ../development/compilers/ghc/8.2.2-binary.nix { };
ghc865Binary = callPackage ../development/compilers/ghc/8.6.5-binary.nix { };
ghc8102Binary = callPackage ../development/compilers/ghc/8.10.2-binary.nix {
@ -60,24 +55,6 @@ in {
minimal = true;
};
ghc865 = callPackage ../development/compilers/ghc/8.6.5.nix {
bootPkgs = packages.ghc822Binary;
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_6;
llvmPackages = pkgs.llvmPackages_6;
};
ghc882 = callPackage ../development/compilers/ghc/8.8.2.nix {
bootPkgs = packages.ghc865Binary;
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_7;
llvmPackages = pkgs.llvmPackages_7;
};
ghc883 = callPackage ../development/compilers/ghc/8.8.3.nix {
bootPkgs = packages.ghc865Binary;
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_7;
llvmPackages = pkgs.llvmPackages_7;
};
ghc884 = callPackage ../development/compilers/ghc/8.8.4.nix {
# aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
bootPkgs = if stdenv.isAarch64 then
@ -88,32 +65,6 @@ in {
buildLlvmPackages = buildPackages.llvmPackages_7;
llvmPackages = pkgs.llvmPackages_7;
};
ghc8101 = callPackage ../development/compilers/ghc/8.10.1.nix {
bootPkgs = packages.ghc865Binary;
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_9;
llvmPackages = pkgs.llvmPackages_9;
};
ghc8102 = callPackage ../development/compilers/ghc/8.10.2.nix {
# aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
bootPkgs = if stdenv.isAarch64 || stdenv.isAarch32 then
packages.ghc8102BinaryMinimal
else
packages.ghc865Binary;
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_9;
llvmPackages = pkgs.llvmPackages_9;
};
ghc8103 = callPackage ../development/compilers/ghc/8.10.3.nix {
# aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
bootPkgs = if stdenv.isAarch64 || stdenv.isAarch32 then
packages.ghc8102BinaryMinimal
else
packages.ghc865Binary;
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_9;
llvmPackages = pkgs.llvmPackages_9;
};
ghc8104 = callPackage ../development/compilers/ghc/8.10.4.nix {
# aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
bootPkgs = if stdenv.isAarch64 || stdenv.isAarch32 then
@ -131,19 +82,12 @@ in {
llvmPackages = pkgs.llvmPackages_10;
};
ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
bootPkgs = packages.ghc883; # no binary yet
bootPkgs = packages.ghc884; # no binary yet
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_10;
llvmPackages = pkgs.llvmPackages_10;
libffi = pkgs.libffi;
};
ghcjs = compiler.ghcjs86;
ghcjs86 = callPackage ../development/compilers/ghcjs-ng {
bootPkgs = packages.ghc865;
ghcjsSrcJson = ../development/compilers/ghcjs-ng/8.6/git.json;
stage0 = ../development/compilers/ghcjs-ng/8.6/stage0.nix;
ghcjsDepOverrides = callPackage ../development/compilers/ghcjs-ng/8.6/dep-overrides.nix {};
};
# The integer-simple attribute set contains all the GHC compilers
# build with integer-simple instead of integer-gmp.
@ -172,12 +116,6 @@ in {
# Always get compilers from `buildPackages`
packages = let bh = buildPackages.haskell; in {
ghc822Binary = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc822Binary;
ghc = bh.compiler.ghc822Binary;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.x.nix { };
packageSetConfig = bootstrapPackageSet;
};
ghc865Binary = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc865Binary;
ghc = bh.compiler.ghc865Binary;
@ -196,41 +134,11 @@ in {
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
packageSetConfig = bootstrapPackageSet;
};
ghc865 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc865;
ghc = bh.compiler.ghc865;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.6.x.nix { };
};
ghc882 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc882;
ghc = bh.compiler.ghc882;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.8.x.nix { };
};
ghc883 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc883;
ghc = bh.compiler.ghc883;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.8.x.nix { };
};
ghc884 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc884;
ghc = bh.compiler.ghc884;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.8.x.nix { };
};
ghc8101 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8101;
ghc = bh.compiler.ghc8101;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
};
ghc8102 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8102;
ghc = bh.compiler.ghc8102;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
};
ghc8103 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8103;
ghc = bh.compiler.ghc8103;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
};
ghc8104 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8104;
ghc = bh.compiler.ghc8104;
@ -246,13 +154,6 @@ in {
ghc = bh.compiler.ghcHEAD;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-head.nix { };
};
ghcjs = packages.ghcjs86;
ghcjs86 = callPackage ../development/haskell-modules rec {
buildHaskellPackages = ghc.bootPkgs;
ghc = bh.compiler.ghcjs86;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.6.x.nix { };
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
};
# The integer-simple attribute set contains package sets for all the GHC compilers
# using integer-simple instead of integer-gmp.