Merge pull request #79819 from NixOS/haskell-updates
Update Haskell package set to LTS 15.1 (plus other fixes)
This commit is contained in:
commit
df2176f7f3
@ -84,18 +84,18 @@ nix-env -qaP -A nixos.haskellPackages
|
|||||||
nix-env -iA nixos.haskellPackages.cabal-install
|
nix-env -iA nixos.haskellPackages.cabal-install
|
||||||
```
|
```
|
||||||
|
|
||||||
Our current default compiler is GHC 8.6.x and the `haskellPackages` set
|
Our current default compiler is GHC 8.8.x and the `haskellPackages` set
|
||||||
contains packages built with that particular version. Nixpkgs contains the last
|
contains packages built with that particular version. Nixpkgs contains the last
|
||||||
three major releases of GHC and there is a whole family of package sets
|
three major releases of GHC and there is a whole family of package sets
|
||||||
available that defines Hackage packages built with each of those compilers,
|
available that defines Hackage packages built with each of those compilers,
|
||||||
too:
|
too:
|
||||||
```shell
|
```shell
|
||||||
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc844
|
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc865
|
||||||
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc882
|
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc8101
|
||||||
```
|
```
|
||||||
|
|
||||||
The name `haskellPackages` is really just a synonym for
|
The name `haskellPackages` is really just a synonym for
|
||||||
`haskell.packages.ghc865`, because we prefer that package set internally and
|
`haskell.packages.ghc882`, because we prefer that package set internally and
|
||||||
recommend it to our users as their default choice, but ultimately you are free
|
recommend it to our users as their default choice, but ultimately you are free
|
||||||
to compile your Haskell packages with any GHC version you please. The following
|
to compile your Haskell packages with any GHC version you please. The following
|
||||||
command displays the complete list of available compilers:
|
command displays the complete list of available compilers:
|
||||||
@ -112,8 +112,10 @@ haskell.compiler.ghc865 ghc-8.6.5
|
|||||||
haskell.compiler.integer-simple.ghc865 ghc-8.6.5
|
haskell.compiler.integer-simple.ghc865 ghc-8.6.5
|
||||||
haskell.compiler.ghc881 ghc-8.8.1
|
haskell.compiler.ghc881 ghc-8.8.1
|
||||||
haskell.compiler.integer-simple.ghc881 ghc-8.8.1
|
haskell.compiler.integer-simple.ghc881 ghc-8.8.1
|
||||||
haskell.compiler.ghc882 ghc-8.8.1.20191211
|
haskell.compiler.ghc882 ghc-8.8.2
|
||||||
haskell.compiler.integer-simple.ghc882 ghc-8.8.1.20191211
|
haskell.compiler.integer-simple.ghc882 ghc-8.8.2
|
||||||
|
haskell.compiler.ghc883 ghc-8.8.3
|
||||||
|
haskell.compiler.integer-simple.ghc883 ghc-8.8.3
|
||||||
haskell.compiler.ghcjs ghcjs-8.6.0.1
|
haskell.compiler.ghcjs ghcjs-8.6.0.1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ fetchurl }:
|
{ fetchurl }:
|
||||||
|
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/10e6ea0c54a4aa41de51d1d7e2314115bb2e172a.tar.gz";
|
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/3ff0be5c9ee1ead33e07158b9a4a579fa2fb7a7f.tar.gz";
|
||||||
sha256 = "0kjy1dxa2kra4j02ni8lpg74jy7fl361yiha330c52spvd2v8i8h";
|
sha256 = "15jqdjxyzcmg50zvl7szv6s2zi4k82as5wi6mkiwwpbdricg50pl";
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,8 @@ let
|
|||||||
|
|
||||||
targetCC = builtins.head toolsForTarget;
|
targetCC = builtins.head toolsForTarget;
|
||||||
|
|
||||||
|
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false);
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
version = "8.10.0.20200123";
|
version = "8.10.0.20200123";
|
||||||
@ -110,7 +112,7 @@ stdenv.mkDerivation (rec {
|
|||||||
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
||||||
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
||||||
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
||||||
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString (targetPlatform.isLinux && !(targetPlatform.useLLVM or false)) ".gold"}"
|
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString useLdGold ".gold"}"
|
||||||
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
||||||
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
||||||
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
||||||
@ -158,7 +160,7 @@ stdenv.mkDerivation (rec {
|
|||||||
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
||||||
"--enable-bootstrap-with-devel-snapshot"
|
"--enable-bootstrap-with-devel-snapshot"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
|
] ++ stdenv.lib.optionals useLdGold [
|
||||||
"CFLAGS=-fuse-ld=gold"
|
"CFLAGS=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
||||||
|
@ -79,6 +79,8 @@ let
|
|||||||
|
|
||||||
targetCC = builtins.head toolsForTarget;
|
targetCC = builtins.head toolsForTarget;
|
||||||
|
|
||||||
|
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false);
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
version = "8.4.4";
|
version = "8.4.4";
|
||||||
@ -126,7 +128,7 @@ stdenv.mkDerivation (rec {
|
|||||||
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
||||||
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
||||||
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
||||||
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString (targetPlatform.isLinux && !(targetPlatform.useLLVM or false)) ".gold"}"
|
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString useLdGold ".gold"}"
|
||||||
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
||||||
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
||||||
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
||||||
@ -173,7 +175,7 @@ stdenv.mkDerivation (rec {
|
|||||||
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
||||||
"--enable-bootstrap-with-devel-snapshot"
|
"--enable-bootstrap-with-devel-snapshot"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
|
] ++ stdenv.lib.optionals useLdGold [
|
||||||
"CFLAGS=-fuse-ld=gold"
|
"CFLAGS=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
||||||
|
@ -84,6 +84,8 @@ let
|
|||||||
|
|
||||||
targetCC = builtins.head toolsForTarget;
|
targetCC = builtins.head toolsForTarget;
|
||||||
|
|
||||||
|
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false);
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
version = "8.6.5";
|
version = "8.6.5";
|
||||||
@ -125,7 +127,7 @@ stdenv.mkDerivation (rec {
|
|||||||
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
||||||
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
||||||
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
||||||
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString (targetPlatform.isLinux && !(targetPlatform.useLLVM or false)) ".gold"}"
|
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString useLdGold ".gold"}"
|
||||||
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
||||||
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
||||||
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
||||||
@ -173,7 +175,7 @@ stdenv.mkDerivation (rec {
|
|||||||
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
||||||
"--enable-bootstrap-with-devel-snapshot"
|
"--enable-bootstrap-with-devel-snapshot"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
|
] ++ stdenv.lib.optionals useLdGold [
|
||||||
"CFLAGS=-fuse-ld=gold"
|
"CFLAGS=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
||||||
|
@ -84,6 +84,8 @@ let
|
|||||||
|
|
||||||
targetCC = builtins.head toolsForTarget;
|
targetCC = builtins.head toolsForTarget;
|
||||||
|
|
||||||
|
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false);
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
version = "8.8.1";
|
version = "8.8.1";
|
||||||
@ -110,7 +112,7 @@ stdenv.mkDerivation (rec {
|
|||||||
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
||||||
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
||||||
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
||||||
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString (targetPlatform.isLinux && !(targetPlatform.useLLVM or false)) ".gold"}"
|
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString useLdGold ".gold"}"
|
||||||
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
||||||
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
||||||
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
||||||
@ -158,7 +160,7 @@ stdenv.mkDerivation (rec {
|
|||||||
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
||||||
"--enable-bootstrap-with-devel-snapshot"
|
"--enable-bootstrap-with-devel-snapshot"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
|
] ++ stdenv.lib.optionals useLdGold [
|
||||||
"CFLAGS=-fuse-ld=gold"
|
"CFLAGS=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
||||||
|
@ -84,6 +84,8 @@ let
|
|||||||
|
|
||||||
targetCC = builtins.head toolsForTarget;
|
targetCC = builtins.head toolsForTarget;
|
||||||
|
|
||||||
|
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false);
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
version = "8.8.2";
|
version = "8.8.2";
|
||||||
@ -110,7 +112,7 @@ stdenv.mkDerivation (rec {
|
|||||||
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
|
||||||
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
||||||
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
||||||
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString (targetPlatform.isLinux && !(targetPlatform.useLLVM or false)) ".gold"}"
|
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString useLdGold ".gold"}"
|
||||||
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
||||||
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
||||||
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
||||||
@ -147,18 +149,24 @@ stdenv.mkDerivation (rec {
|
|||||||
# TODO(@Ericson2314): Always pass "--target" and always prefix.
|
# TODO(@Ericson2314): Always pass "--target" and always prefix.
|
||||||
configurePlatforms = [ "build" "host" ]
|
configurePlatforms = [ "build" "host" ]
|
||||||
++ stdenv.lib.optional (targetPlatform != hostPlatform) "target";
|
++ stdenv.lib.optional (targetPlatform != hostPlatform) "target";
|
||||||
|
|
||||||
# `--with` flags for libraries needed for RTS linker
|
# `--with` flags for libraries needed for RTS linker
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--datadir=$doc/share/doc/ghc"
|
"--datadir=$doc/share/doc/ghc"
|
||||||
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
|
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
|
||||||
] ++ stdenv.lib.optionals (libffi != null) ["--with-system-libffi" "--with-ffi-includes=${targetPackages.libffi.dev}/include" "--with-ffi-libraries=${targetPackages.libffi.out}/lib"
|
] ++ stdenv.lib.optionals (libffi != null) [
|
||||||
|
"--with-system-libffi"
|
||||||
|
"--with-ffi-includes=${targetPackages.libffi.dev}/include"
|
||||||
|
"--with-ffi-libraries=${targetPackages.libffi.out}/lib"
|
||||||
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [
|
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [
|
||||||
"--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
|
"--with-gmp-includes=${targetPackages.gmp.dev}/include"
|
||||||
|
"--with-gmp-libraries=${targetPackages.gmp.out}/lib"
|
||||||
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
|
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
|
||||||
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
"--with-iconv-includes=${libiconv}/include"
|
||||||
|
"--with-iconv-libraries=${libiconv}/lib"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
||||||
"--enable-bootstrap-with-devel-snapshot"
|
"--enable-bootstrap-with-devel-snapshot"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
|
] ++ stdenv.lib.optionals useLdGold [
|
||||||
"CFLAGS=-fuse-ld=gold"
|
"CFLAGS=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
||||||
|
232
pkgs/development/compilers/ghc/8.8.3.nix
Normal file
232
pkgs/development/compilers/ghc/8.8.3.nix
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
{ 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 ? !(stdenv.lib.any (stdenv.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
|
||||||
|
|
||||||
|
, # Whetherto 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 ? stdenv.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 = stdenv.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"}
|
||||||
|
'' + stdenv.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
|
||||||
|
'' + stdenv.lib.optionalString enableRelocatedStaticLibs ''
|
||||||
|
GhcLibHcOpts += -fPIC
|
||||||
|
GhcRtsHcOpts += -fPIC
|
||||||
|
'' + stdenv.lib.optionalString targetPlatform.useAndroidPrebuilt ''
|
||||||
|
EXTRA_CC_OPTS += -std=gnu99
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Splicer will pull out correct variations
|
||||||
|
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
|
||||||
|
++ [libffi]
|
||||||
|
++ stdenv.lib.optional (!enableIntegerSimple) gmp
|
||||||
|
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
|
||||||
|
|
||||||
|
toolsForTarget = [
|
||||||
|
pkgsBuildTarget.targetPackages.stdenv.cc
|
||||||
|
] ++ stdenv.lib.optional useLLVM buildLlvmPackages.llvm;
|
||||||
|
|
||||||
|
targetCC = builtins.head toolsForTarget;
|
||||||
|
|
||||||
|
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" ];
|
||||||
|
|
||||||
|
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${stdenv.lib.optionalString (targetPlatform.isLinux && !(targetPlatform.useLLVM or false)) ".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
|
||||||
|
'' + stdenv.lib.optionalString (!stdenv.isDarwin) ''
|
||||||
|
export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
|
||||||
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||||
|
export NIX_LDFLAGS+=" -no_dtrace_dof"
|
||||||
|
'' + stdenv.lib.optionalString targetPlatform.useAndroidPrebuilt ''
|
||||||
|
sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
|
||||||
|
'' + stdenv.lib.optionalString targetPlatform.isMusl ''
|
||||||
|
echo "patching llvm-targets for musl targets..."
|
||||||
|
echo "Cloning these existing '*-linux-gnu*' targets:"
|
||||||
|
grep linux-gnu llvm-targets | sed 's/^/ /'
|
||||||
|
echo "(go go gadget sed)"
|
||||||
|
sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
|
||||||
|
echo "llvm-targets now contains these '*-linux-musl*' targets:"
|
||||||
|
grep linux-musl llvm-targets | sed 's/^/ /'
|
||||||
|
|
||||||
|
echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
|
||||||
|
# (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
|
||||||
|
for x in configure aclocal.m4; do
|
||||||
|
substituteInPlace $x \
|
||||||
|
--replace '*-android*|*-gnueabi*)' \
|
||||||
|
'*-android*|*-gnueabi*|*-musleabi*)'
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
# TODO(@Ericson2314): Always pass "--target" and always prefix.
|
||||||
|
configurePlatforms = [ "build" "host" ]
|
||||||
|
++ stdenv.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"
|
||||||
|
] ++ stdenv.lib.optionals (libffi != null) ["--with-system-libffi" "--with-ffi-includes=${targetPackages.libffi.dev}/include" "--with-ffi-libraries=${targetPackages.libffi.out}/lib"
|
||||||
|
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [
|
||||||
|
"--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
|
||||||
|
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
|
||||||
|
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
||||||
|
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
||||||
|
"--enable-bootstrap-with-devel-snapshot"
|
||||||
|
] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
|
||||||
|
"CFLAGS=-fuse-ld=gold"
|
||||||
|
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
||||||
|
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
||||||
|
] ++ stdenv.lib.optionals (disableLargeAddressSpace) [
|
||||||
|
"--disable-large-address-space"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Make sure we never relax`$PATH` and hooks support for compatability.
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
# Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
|
||||||
|
dontAddExtraLibs = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
perl autoconf automake m4 python3 sphinx
|
||||||
|
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
|
||||||
|
];
|
||||||
|
|
||||||
|
# For building runtime libs
|
||||||
|
depsBuildTarget = toolsForTarget;
|
||||||
|
|
||||||
|
buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ targetPackages.stdenv.cc ]
|
||||||
|
++ stdenv.lib.optional useLLVM llvmPackages.llvm;
|
||||||
|
|
||||||
|
depsTargetTarget = map stdenv.lib.getDev (libDeps targetPlatform);
|
||||||
|
depsTargetTargetPropagated = map (stdenv.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" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
|
||||||
|
|
||||||
|
checkTarget = "test";
|
||||||
|
|
||||||
|
hardeningDisable = [ "format" ] ++ stdenv.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:${stdenv.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 stdenv.lib.maintainers; [ marcweber andres peti ];
|
||||||
|
inherit (ghc.meta) license platforms;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // stdenv.lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
|
||||||
|
dontStrip = true;
|
||||||
|
dontPatchELF = true;
|
||||||
|
noAuditTmpdir = true;
|
||||||
|
})
|
@ -85,6 +85,8 @@ let
|
|||||||
|
|
||||||
targetCC = builtins.head toolsForTarget;
|
targetCC = builtins.head toolsForTarget;
|
||||||
|
|
||||||
|
useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false);
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
inherit version;
|
inherit version;
|
||||||
@ -117,7 +119,7 @@ stdenv.mkDerivation (rec {
|
|||||||
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx"
|
||||||
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
# Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
||||||
# and more generally have a faster linker.
|
# and more generally have a faster linker.
|
||||||
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString (targetPlatform.isLinux && !(targetPlatform.useLLVM or false)) ".gold"}"
|
export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString useLdGold ".gold"}"
|
||||||
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
|
||||||
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
|
||||||
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
|
||||||
@ -167,7 +169,7 @@ stdenv.mkDerivation (rec {
|
|||||||
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
"--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [
|
||||||
"--enable-bootstrap-with-devel-snapshot"
|
"--enable-bootstrap-with-devel-snapshot"
|
||||||
] ++ stdenv.lib.optionals (targetPlatform.isAarch32) [
|
] ++ stdenv.lib.optionals useLdGold [
|
||||||
"CFLAGS=-fuse-ld=gold"
|
"CFLAGS=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
|
||||||
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
|
||||||
|
@ -69,12 +69,12 @@ self: super: {
|
|||||||
|
|
||||||
# The Hackage tarball is purposefully broken, because it's not intended to be, like, useful.
|
# The Hackage tarball is purposefully broken, because it's not intended to be, like, useful.
|
||||||
# https://git-annex.branchable.com/bugs/bash_completion_file_is_missing_in_the_6.20160527_tarball_on_hackage/
|
# https://git-annex.branchable.com/bugs/bash_completion_file_is_missing_in_the_6.20160527_tarball_on_hackage/
|
||||||
git-annex = (overrideSrc super.git-annex {
|
git-annex = (overrideSrc (appendPatch super.git-annex ./patches/git-annex-fix-build-with-ghc-8.8.x.patch) {
|
||||||
src = pkgs.fetchgit {
|
src = pkgs.fetchgit {
|
||||||
name = "git-annex-${super.git-annex.version}-src";
|
name = "git-annex-${super.git-annex.version}-src";
|
||||||
url = "git://git-annex.branchable.com/";
|
url = "git://git-annex.branchable.com/";
|
||||||
rev = "refs/tags/" + super.git-annex.version;
|
rev = "refs/tags/" + super.git-annex.version;
|
||||||
sha256 = "1shb1jgm78bx88rbsr1nmimjzzfqw96qdr38mcrr1c2qz5ky820v";
|
sha256 = "0pl0yip7zp4i78cj9jqkmm33wqaaaxjq3ggnfmv95y79yijd6yh4";
|
||||||
};
|
};
|
||||||
}).override {
|
}).override {
|
||||||
dbus = if pkgs.stdenv.isLinux then self.dbus else null;
|
dbus = if pkgs.stdenv.isLinux then self.dbus else null;
|
||||||
@ -394,11 +394,6 @@ self: super: {
|
|||||||
Random123 = dontCheck super.Random123;
|
Random123 = dontCheck super.Random123;
|
||||||
systemd = dontCheck super.systemd;
|
systemd = dontCheck super.systemd;
|
||||||
|
|
||||||
# use the correct version of network
|
|
||||||
systemd_2_2_0 = dontCheck (super.systemd_2_2_0.override {
|
|
||||||
network = self.network_3_1_1_1;
|
|
||||||
});
|
|
||||||
|
|
||||||
# https://github.com/eli-frey/cmdtheline/issues/28
|
# https://github.com/eli-frey/cmdtheline/issues/28
|
||||||
cmdtheline = dontCheck super.cmdtheline;
|
cmdtheline = dontCheck super.cmdtheline;
|
||||||
|
|
||||||
@ -526,7 +521,9 @@ self: super: {
|
|||||||
|
|
||||||
# Won't compile with recent versions of QuickCheck.
|
# Won't compile with recent versions of QuickCheck.
|
||||||
inilist = dontCheck super.inilist;
|
inilist = dontCheck super.inilist;
|
||||||
MissingH = dontCheck super.MissingH;
|
|
||||||
|
# Doesn't accept recent versions of 'base' or QuickCheck.
|
||||||
|
MissingH = dontCheck (doJailbreak super.MissingH);
|
||||||
|
|
||||||
# https://github.com/yaccz/saturnin/issues/3
|
# https://github.com/yaccz/saturnin/issues/3
|
||||||
Saturnin = dontCheck super.Saturnin;
|
Saturnin = dontCheck super.Saturnin;
|
||||||
@ -688,15 +685,6 @@ self: super: {
|
|||||||
# https://github.com/goldfirere/singletons/issues/122
|
# https://github.com/goldfirere/singletons/issues/122
|
||||||
singletons = dontCheck super.singletons;
|
singletons = dontCheck super.singletons;
|
||||||
|
|
||||||
# Fix an aarch64 issue with cryptonite-0.25:
|
|
||||||
# https://github.com/haskell-crypto/cryptonite/issues/234
|
|
||||||
# This has been committed upstream, but there is, as of yet, no new release.
|
|
||||||
# Also, disable the test suite to avoid https://github.com/haskell-crypto/cryptonite/issues/260.
|
|
||||||
cryptonite = appendPatch (dontCheck super.cryptonite) (pkgs.fetchpatch {
|
|
||||||
url = https://github.com/haskell-crypto/cryptonite/commit/4622e5fc8ece82f4cf31358e31cd02cf020e558e.patch;
|
|
||||||
sha256 = "1m2d47ni4jbrpvxry50imj91qahr3r7zkqm157clrzlmw6gzpgnq";
|
|
||||||
});
|
|
||||||
|
|
||||||
# Djinn's last release was 2014, incompatible with Semigroup-Monoid Proposal
|
# Djinn's last release was 2014, incompatible with Semigroup-Monoid Proposal
|
||||||
# https://github.com/augustss/djinn/pull/8
|
# https://github.com/augustss/djinn/pull/8
|
||||||
djinn = appendPatch super.djinn (pkgs.fetchpatch {
|
djinn = appendPatch super.djinn (pkgs.fetchpatch {
|
||||||
@ -1042,34 +1030,7 @@ self: super: {
|
|||||||
vector-algorithms = dontCheck super.vector-algorithms;
|
vector-algorithms = dontCheck super.vector-algorithms;
|
||||||
|
|
||||||
# The test suite attempts to use the network.
|
# The test suite attempts to use the network.
|
||||||
dhall =
|
dhall = generateOptparseApplicativeCompletion "dhall" (dontCheck super.dhall);
|
||||||
generateOptparseApplicativeCompletion "dhall" (
|
|
||||||
dontCheck super.dhall
|
|
||||||
);
|
|
||||||
# https://github.com/dhall-lang/dhall-haskell/commit/dedd5e0ea6fd12f87d887af3d2220eebc61ee8af
|
|
||||||
# This raises the lower bound on prettyprinter to 1.5.1 since
|
|
||||||
# `removeTrailingWhitespace` is buggy in earlier versions.
|
|
||||||
# This will probably be able to be removed when we update to LTS-15.
|
|
||||||
dhall_1_29_0 =
|
|
||||||
dontCheck (super.dhall_1_29_0.override {
|
|
||||||
prettyprinter = self.prettyprinter_1_6_0;
|
|
||||||
prettyprinter-ansi-terminal =
|
|
||||||
self.prettyprinter-ansi-terminal.override {
|
|
||||||
prettyprinter = self.prettyprinter_1_6_0;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
dhall-bash_1_0_27 = super.dhall-bash_1_0_27.override { dhall = self.dhall_1_29_0; };
|
|
||||||
dhall-json_1_6_1 = super.dhall-json_1_6_1.override {
|
|
||||||
dhall = self.dhall_1_29_0;
|
|
||||||
prettyprinter = self.prettyprinter_1_6_0;
|
|
||||||
prettyprinter-ansi-terminal =
|
|
||||||
self.prettyprinter-ansi-terminal.override {
|
|
||||||
prettyprinter = self.prettyprinter_1_6_0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Tests for dhall access the network.
|
|
||||||
dhall_1_27_0 = dontCheck super.dhall_1_27_0;
|
|
||||||
|
|
||||||
# Missing test files in source distribution, fixed once 1.4.0 is bumped
|
# Missing test files in source distribution, fixed once 1.4.0 is bumped
|
||||||
# https://github.com/dhall-lang/dhall-haskell/pull/997
|
# https://github.com/dhall-lang/dhall-haskell/pull/997
|
||||||
@ -1096,7 +1057,6 @@ self: super: {
|
|||||||
|
|
||||||
# The test suite is broken. Break out of "base-compat >=0.9.3 && <0.10, hspec >=2.4.4 && <2.5".
|
# The test suite is broken. Break out of "base-compat >=0.9.3 && <0.10, hspec >=2.4.4 && <2.5".
|
||||||
haddock-library = doJailbreak (dontCheck super.haddock-library);
|
haddock-library = doJailbreak (dontCheck super.haddock-library);
|
||||||
haddock-library_1_8_0 = doJailbreak super.haddock-library_1_8_0;
|
|
||||||
|
|
||||||
# Generate shell completion.
|
# Generate shell completion.
|
||||||
cabal2nix = generateOptparseApplicativeCompletion "cabal2nix" super.cabal2nix;
|
cabal2nix = generateOptparseApplicativeCompletion "cabal2nix" super.cabal2nix;
|
||||||
@ -1205,12 +1165,6 @@ self: super: {
|
|||||||
# Fix build with attr-2.4.48 (see #53716)
|
# Fix build with attr-2.4.48 (see #53716)
|
||||||
xattr = appendPatch super.xattr ./patches/xattr-fix-build.patch;
|
xattr = appendPatch super.xattr ./patches/xattr-fix-build.patch;
|
||||||
|
|
||||||
# These packages needs network 3.x, which is not in LTS-13.x.
|
|
||||||
network-bsd_2_8_1_0 = super.network-bsd_2_8_1_0.override { network = self.network_3_0_1_1; };
|
|
||||||
lambdabot-core = super.lambdabot-core.overrideScope (self: super: { network = self.network_3_0_1_1; hslogger = self.hslogger_1_3_0_0; });
|
|
||||||
lambdabot-reference-plugins = super.lambdabot-reference-plugins.overrideScope (self: super: { network = self.network_3_0_1_1; hslogger = self.hslogger_1_3_0_0; });
|
|
||||||
lambdabot-haskell-plugins = super.lambdabot-haskell-plugins.overrideScope (self: super: { network = self.network_3_0_1_1; });
|
|
||||||
|
|
||||||
# Some tests depend on a postgresql instance
|
# Some tests depend on a postgresql instance
|
||||||
# Haddock failure: https://github.com/haskell/haddock/issues/979
|
# Haddock failure: https://github.com/haskell/haddock/issues/979
|
||||||
esqueleto = dontHaddock (dontCheck super.esqueleto);
|
esqueleto = dontHaddock (dontCheck super.esqueleto);
|
||||||
@ -1235,12 +1189,6 @@ self: super: {
|
|||||||
# Test suite won't link for no apparent reason.
|
# Test suite won't link for no apparent reason.
|
||||||
constraints-deriving = dontCheck super.constraints-deriving;
|
constraints-deriving = dontCheck super.constraints-deriving;
|
||||||
|
|
||||||
# Use a matching version of ghc-lib-parser.
|
|
||||||
ghc-lib-parser-ex = super.ghc-lib-parser-ex.override { ghc-lib-parser = self.ghc-lib-parser_8_8_2_20200205; };
|
|
||||||
|
|
||||||
# https://github.com/sol/hpack/issues/366
|
|
||||||
hpack = self.hpack_0_33_0;
|
|
||||||
|
|
||||||
# QuickCheck >=2.3 && <2.13, hspec >=2.1 && <2.7
|
# QuickCheck >=2.3 && <2.13, hspec >=2.1 && <2.7
|
||||||
graphviz = dontCheck super.graphviz;
|
graphviz = dontCheck super.graphviz;
|
||||||
|
|
||||||
@ -1256,10 +1204,6 @@ self: super: {
|
|||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
||||||
# The LTS-14.x version of their dependencies are too old.
|
|
||||||
cabal-plan = super.cabal-plan.overrideScope (self: super: { optparse-applicative = self.optparse-applicative_0_15_1_0; ansi-terminal = self.ansi-terminal_0_10_2; base-compat = self.base-compat_0_11_1; semialign = self.semialign_1_1; time-compat = doJailbreak super.time-compat; });
|
|
||||||
hoogle = super.hoogle.override { haskell-src-exts = self.haskell-src-exts_1_23_0; };
|
|
||||||
|
|
||||||
# Version bounds for http-client are too strict:
|
# Version bounds for http-client are too strict:
|
||||||
# https://github.com/bitnomial/prometheus/issues/34
|
# https://github.com/bitnomial/prometheus/issues/34
|
||||||
prometheus = doJailbreak super.prometheus;
|
prometheus = doJailbreak super.prometheus;
|
||||||
@ -1296,10 +1240,6 @@ self: super: {
|
|||||||
# upstream issue: https://github.com/vmchale/atspkg/issues/12
|
# upstream issue: https://github.com/vmchale/atspkg/issues/12
|
||||||
language-ats = dontCheck super.language-ats;
|
language-ats = dontCheck super.language-ats;
|
||||||
|
|
||||||
# polysemy-plugin requires polysemy >= 1.2.0.0
|
|
||||||
polysemy = self.polysemy_1_2_3_0;
|
|
||||||
polysemy-zoo = self.polysemy-zoo_0_6_0_1;
|
|
||||||
|
|
||||||
# https://github.com/Happstack/web-routes-th/pull/3
|
# https://github.com/Happstack/web-routes-th/pull/3
|
||||||
web-routes-th = doJailbreak super.web-routes-th;
|
web-routes-th = doJailbreak super.web-routes-th;
|
||||||
|
|
||||||
@ -1330,32 +1270,8 @@ self: super: {
|
|||||||
# https://github.com/kazu-yamamoto/dns/issues/150
|
# https://github.com/kazu-yamamoto/dns/issues/150
|
||||||
dns = dontCheck super.dns;
|
dns = dontCheck super.dns;
|
||||||
|
|
||||||
# needs newer version of the systemd package
|
# Support recent versions of fast-logger.
|
||||||
spacecookie = super.spacecookie.override { systemd = self.systemd_2_2_0; };
|
spacecookie = doJailbreak super.spacecookie;
|
||||||
|
|
||||||
# 2019-12-19 - glirc wants regex-tdfa >=1.3 which results in errors with regex-base which errors more
|
|
||||||
# hoping to make a proper derivation with plugins enabled and more reliable building -- kiwi
|
|
||||||
# 2020-01-17 - as of recently the basic doJailbreak is not enough and have to override regex-tdfa which needs an override for regex-base
|
|
||||||
|
|
||||||
glirc = doJailbreak (super.glirc.override {
|
|
||||||
regex-tdfa = self.regex-tdfa_1_3_1_0;
|
|
||||||
});
|
|
||||||
|
|
||||||
regex-tdfa_1_3_1_0 = doJailbreak (super.regex-tdfa_1_3_1_0.override {
|
|
||||||
regex-base = self.regex-base_0_94_0_0;
|
|
||||||
});
|
|
||||||
|
|
||||||
# 2020-01-19 - there were conflicting versions of brick, vty, and brick-skylighting;
|
|
||||||
# multiple versions of them were being pulled in by the others which is not allowed.
|
|
||||||
# There are more complicated ways of doing this but I was able to make it fairly simple -- kiwi
|
|
||||||
matterhorn = doJailbreak (super.matterhorn.override {
|
|
||||||
brick-skylighting = self.brick-skylighting.override {
|
|
||||||
brick = self.brick_0_51;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
# 2020-01-19 - because of QuickCheck bounds | was broken anyway and is needed for matterhorn -- kiwi
|
|
||||||
Unique = doJailbreak super.Unique;
|
|
||||||
|
|
||||||
# apply patches from https://github.com/snapframework/snap-server/pull/126
|
# apply patches from https://github.com/snapframework/snap-server/pull/126
|
||||||
# manually until they are accepted upstream
|
# manually until they are accepted upstream
|
||||||
@ -1380,17 +1296,97 @@ self: super: {
|
|||||||
|
|
||||||
# Needs ghc-lib-parser 8.8.1 (does not build with 8.8.0)
|
# Needs ghc-lib-parser 8.8.1 (does not build with 8.8.0)
|
||||||
ormolu = doJailbreak (super.ormolu.override {
|
ormolu = doJailbreak (super.ormolu.override {
|
||||||
ghc-lib-parser = self.ghc-lib-parser_8_8_2_20200205;
|
ghc-lib-parser = self.ghc-lib-parser_8_8_3_20200224;
|
||||||
});
|
});
|
||||||
|
|
||||||
# krank-0.1.0 does not accept PyF-0.9.0.0.
|
# krank-0.1.0 does not accept PyF-0.9.0.0.
|
||||||
krank = doJailbreak super.krank;
|
krank = doJailbreak super.krank;
|
||||||
|
|
||||||
# prettyprinter-1.6.0 fails its doctest suite.
|
|
||||||
prettyprinter_1_6_0 = dontCheck super.prettyprinter_1_6_0;
|
|
||||||
|
|
||||||
# the test suite has an overly tight restriction on doctest
|
# the test suite has an overly tight restriction on doctest
|
||||||
# See https://github.com/ekmett/perhaps/pull/5
|
# See https://github.com/ekmett/perhaps/pull/5
|
||||||
perhaps = doJailbreak super.perhaps;
|
perhaps = doJailbreak super.perhaps;
|
||||||
|
|
||||||
|
# it wants to build a statically linked binary by default
|
||||||
|
hledger-flow = overrideCabal super.hledger-flow ( drv: {
|
||||||
|
postPatch = (drv.postPatch or "") + ''
|
||||||
|
substituteInPlace hledger-flow.cabal --replace "-static" ""
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
# cabal-fmt requires Cabal3
|
||||||
|
cabal-fmt = super.cabal-fmt.override { Cabal = self.Cabal_3_0_0_0; };
|
||||||
|
|
||||||
|
# Several gtk2hs-provided packages at v0.13.8.0 fail to build on Darwin
|
||||||
|
# until we pick up https://github.com/gtk2hs/gtk2hs/pull/293 so apply that
|
||||||
|
# patch here. That single patch is for the gtk2hs super-repo, out of which
|
||||||
|
# we extract the patch for each indvidiual project (glib/gio/pango/gtk/gtk3).
|
||||||
|
glib = appendPatch super.glib (pkgs.fetchpatch {
|
||||||
|
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
|
||||||
|
includes = [ "glib.cabal" ];
|
||||||
|
stripLen = 1;
|
||||||
|
sha256 = "1zdss1xgsbijs3kx8dp5a81qryrfc1zm1xrd20whna3dqakf8b7g";
|
||||||
|
});
|
||||||
|
gio = appendPatch super.gio (pkgs.fetchpatch {
|
||||||
|
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
|
||||||
|
includes = [ "gio.cabal" ];
|
||||||
|
stripLen = 1;
|
||||||
|
sha256 = "0d72k6gqvgax9jcqi3gz1gqnar7jg8p5065z3mw2fcwvdw46s2zv";
|
||||||
|
});
|
||||||
|
pango = appendPatch super.pango (pkgs.fetchpatch {
|
||||||
|
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
|
||||||
|
includes = [ "pango.cabal" ];
|
||||||
|
stripLen = 1;
|
||||||
|
sha256 = "0dc221wlmyhc24h6ybfhbkxmcx4i6bvkbr1zgqidbnj3yp6w0l5w";
|
||||||
|
});
|
||||||
|
# gtk/gtk3 have an additional complication: independent of the above
|
||||||
|
# 0.13.8.0-specific fix, they need to be told on Darwin to use the Quartz
|
||||||
|
# rather than X11 backend (see eg https://github.com/gtk2hs/gtk2hs/issues/249).
|
||||||
|
gtk3 =
|
||||||
|
let
|
||||||
|
patchedGtk3 = appendPatch super.gtk3 (pkgs.fetchpatch {
|
||||||
|
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
|
||||||
|
includes = [ "gtk3.cabal" ];
|
||||||
|
stripLen = 1;
|
||||||
|
sha256 = "0zvj0dzfwf9bksfhi0m4v0h5aij236gd0qhyr1adpdcjrkd8zbkd";
|
||||||
|
});
|
||||||
|
in
|
||||||
|
# The appendConfigureFlags should remain even after we can drop patchedGtk3.
|
||||||
|
appendConfigureFlags patchedGtk3 (pkgs.lib.optional pkgs.stdenv.isDarwin "-f have-quartz-gtk");
|
||||||
|
gtk =
|
||||||
|
let
|
||||||
|
patchedGtk = appendPatch super.gtk (pkgs.fetchpatch {
|
||||||
|
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
|
||||||
|
includes = [ "gtk.cabal-renamed" ];
|
||||||
|
stripLen = 1;
|
||||||
|
sha256 = "0wb0scvmhg8b42hxpns9m6zak3r8b25a2z7wg6vl56n17nb635l7";
|
||||||
|
# One final complication: the gtk cabal file in the source repo (as seen
|
||||||
|
# by the patch) is `gtk.cabal-renamed`, but this gets changed to the usual
|
||||||
|
# `gtk.cabal` before uploading to Hackage by a script.
|
||||||
|
postFetch = ''
|
||||||
|
substituteInPlace $out --replace "-renamed" ""
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
in
|
||||||
|
# The appendConfigureFlags should remain even after we can drop patchedGtk.
|
||||||
|
appendConfigureFlags patchedGtk (pkgs.lib.optional pkgs.stdenv.isDarwin "-f have-quartz-gtk");
|
||||||
|
|
||||||
|
# Chart-tests needs and compiles some modules from Chart itself
|
||||||
|
Chart-tests = (addExtraLibrary super.Chart-tests self.QuickCheck).overrideAttrs (old: {
|
||||||
|
preCheck = old.postPatch or "" + ''
|
||||||
|
tar --one-top-level=../chart --strip-components=1 -xf ${self.Chart.src}
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
# Unnecessary upper bound on vector <0.12.1
|
||||||
|
bitwise-enum = doJailbreak super.bitwise-enum;
|
||||||
|
|
||||||
|
# This breaks because of version bounds, but compiles and runs fine.
|
||||||
|
# Last commit is 5 years ago, so we likely won't get upstream fixed soon.
|
||||||
|
# https://bitbucket.org/rvlm/hakyll-contrib-hyphenation/src/master/
|
||||||
|
# Therefore we jailbreak it.
|
||||||
|
hakyll-contrib-hyphenation = doJailbreak super.hakyll-contrib-hyphenation;
|
||||||
|
|
||||||
|
# https://github.com/bergmark/feed/issues/43
|
||||||
|
feed = dontCheck super.feed;
|
||||||
|
|
||||||
} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
|
} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
|
||||||
|
@ -44,27 +44,21 @@ self: super: {
|
|||||||
|
|
||||||
# Jailbreak to fix the build.
|
# Jailbreak to fix the build.
|
||||||
async = doJailbreak super.async;
|
async = doJailbreak super.async;
|
||||||
|
ChasingBottoms = doJailbreak super.ChasingBottoms;
|
||||||
hashable = doJailbreak super.hashable;
|
hashable = doJailbreak super.hashable;
|
||||||
primitive_0_7_0_0 = doJailbreak (dontCheck super.primitive_0_7_0_0); # evaluating the test suite gives an infinite recursion
|
parallel = doJailbreak super.parallel;
|
||||||
regex-base_0_94_0_0 = doJailbreak super.regex-base_0_94_0_0;
|
regex-base = doJailbreak super.regex-base;
|
||||||
regex-compat_0_95_2_0 = doJailbreak super.regex-compat_0_95_2_0;
|
regex-compat = doJailbreak super.regex-compat;
|
||||||
regex-posix_0_96_0_0 = doJailbreak super.regex-posix_0_96_0_0;
|
regex-pcre-builtin = doJailbreak super.regex-pcre-builtin;
|
||||||
|
regex-posix = doJailbreak super.regex-posix;
|
||||||
|
regex-tdfa = doJailbreak super.regex-tdfa;
|
||||||
|
split = doJailbreak super.split;
|
||||||
tar = doJailbreak super.tar;
|
tar = doJailbreak super.tar;
|
||||||
tasty-expected-failure = doJailbreak super.tasty-expected-failure;
|
tasty-expected-failure = doJailbreak super.tasty-expected-failure;
|
||||||
unliftio-core = doJailbreak super.unliftio-core;
|
unliftio-core = doJailbreak super.unliftio-core;
|
||||||
vector = doJailbreak super.vector;
|
vector = doJailbreak super.vector;
|
||||||
zlib = doJailbreak super.zlib;
|
zlib = doJailbreak super.zlib;
|
||||||
parallel = doJailbreak super.parallel;
|
|
||||||
split = doJailbreak super.split;
|
|
||||||
|
|
||||||
# Use the latest version to fix the build.
|
# Use the latest version to fix the build.
|
||||||
generic-deriving = self.generic-deriving_1_13_1;
|
|
||||||
optparse-applicative = self.optparse-applicative_0_15_1_0;
|
|
||||||
primitive = self.primitive_0_7_0_0;
|
|
||||||
regex-base = self.regex-base_0_94_0_0;
|
|
||||||
regex-compat = self.regex-compat_0_95_2_0;
|
|
||||||
regex-pcre-builtin = self.regex-pcre-builtin_0_95_1_1_8_43;
|
|
||||||
regex-posix = self.regex-posix_0_96_0_0;
|
|
||||||
regex-tdfa = self.regex-tdfa_1_3_1_0;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -68,86 +68,26 @@ self: super: {
|
|||||||
io-streams-haproxy = doJailbreak super.io-streams-haproxy; # base >=4.5 && <4.13
|
io-streams-haproxy = doJailbreak super.io-streams-haproxy; # base >=4.5 && <4.13
|
||||||
snap-server = doJailbreak super.snap-server;
|
snap-server = doJailbreak super.snap-server;
|
||||||
xmobar = doJailbreak super.xmobar;
|
xmobar = doJailbreak super.xmobar;
|
||||||
|
|
||||||
# use latest version to fix the build
|
|
||||||
brick = self.brick_0_51;
|
|
||||||
dbus = self.dbus_1_2_11;
|
|
||||||
doctemplates = self.doctemplates_0_8;
|
|
||||||
exact-pi = doJailbreak super.exact-pi;
|
exact-pi = doJailbreak super.exact-pi;
|
||||||
generics-sop = self.generics-sop_0_5_0_0;
|
time-compat = doJailbreak super.time-compat;
|
||||||
hackage-db = self.hackage-db_2_1_0;
|
http-media = doJailbreak super.http-media;
|
||||||
haddock-library = self.haddock-library_1_8_0;
|
servant-server = doJailbreak super.servant-server;
|
||||||
haskell-src-meta = self.haskell-src-meta_0_8_5;
|
|
||||||
haskell-src-meta_0_8_5 = dontCheck super.haskell-src-meta_0_8_5;
|
|
||||||
HaTeX = self.HaTeX_3_22_0_0;
|
|
||||||
HsYAML = self.HsYAML_0_2_1_0;
|
|
||||||
json-autotype = doJailbreak super.json-autotype;
|
|
||||||
lens = self.lens_4_19;
|
|
||||||
memory = self.memory_0_15_0;
|
|
||||||
microlens = self.microlens_0_4_11_2;
|
|
||||||
microlens-ghc = self.microlens-ghc_0_4_12;
|
|
||||||
microlens-mtl = self.microlens-mtl_0_2_0_1;
|
|
||||||
microlens-platform = self.microlens-platform_0_4_1;
|
|
||||||
microlens-th = self.microlens-th_0_4_3_4;
|
|
||||||
network = self.network_3_1_1_1;
|
|
||||||
optparse-applicative = self.optparse-applicative_0_15_1_0;
|
|
||||||
pandoc = dontCheck super.pandoc_2_9_1_1; # https://github.com/jgm/pandoc/issues/6086
|
|
||||||
pandoc-types = self.pandoc-types_1_20;
|
|
||||||
prettyprinter = self.prettyprinter_1_6_0;
|
|
||||||
primitive = dontCheck super.primitive_0_7_0_0; # evaluating the test suite gives an infinite recursion
|
|
||||||
regex-base = self.regex-base_0_94_0_0;
|
|
||||||
regex-compat = self.regex-compat_0_95_2_0;
|
|
||||||
regex-pcre-builtin = self.regex-pcre-builtin_0_95_1_1_8_43;
|
|
||||||
regex-posix = self.regex-posix_0_96_0_0;
|
|
||||||
regex-tdfa = self.regex-tdfa_1_3_1_0;
|
|
||||||
shelly = self.shelly_1_9_0;
|
|
||||||
singletons = self.singletons_2_6;
|
|
||||||
skylighting = self.skylighting_0_8_3_2;
|
|
||||||
skylighting-core = self.skylighting-core_0_8_3_2;
|
|
||||||
sop-core = self.sop-core_0_5_0_0;
|
|
||||||
texmath = self.texmath_0_12;
|
|
||||||
th-desugar = self.th-desugar_1_10;
|
|
||||||
tls = self.tls_1_5_3;
|
|
||||||
trifecta = self.trifecta_2_1;
|
|
||||||
vty = self.vty_5_26;
|
|
||||||
xml-conduit = overrideCabal super.xml-conduit (drv: { version = "1.9.0.0"; sha256 = "1p57v127882rxvvmwjmvnqdmk3x2wg1z4d8y03849h0xaz1vid0w"; });
|
|
||||||
xmonad-contrib = self.xmonad-contrib_0_16;
|
|
||||||
|
|
||||||
# These packages don't work and need patching and/or an update.
|
# These packages don't work and need patching and/or an update.
|
||||||
hackage-security = appendPatch (doJailbreak super.hackage-security) (pkgs.fetchpatch {
|
hackage-security = appendPatch (doJailbreak super.hackage-security) (pkgs.fetchpatch {
|
||||||
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/hackage-security-0.5.3.0.patch";
|
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/hackage-security-0.5.3.0.patch";
|
||||||
sha256 = "0l8x0pbsn18fj5ak5q0g5rva4xw1s9yc4d86a1pfyaz467b9i5a4";
|
sha256 = "0l8x0pbsn18fj5ak5q0g5rva4xw1s9yc4d86a1pfyaz467b9i5a4";
|
||||||
});
|
});
|
||||||
polyparse = appendPatch (doJailbreak super.polyparse) (pkgs.fetchpatch {
|
|
||||||
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/polyparse-1.12.1.patch";
|
|
||||||
sha256 = "01b2gnsq0x4fd9na8zpk6pajym55mbz64hgzawlwxdw0y6681kr5";
|
|
||||||
});
|
|
||||||
foundation = dontCheck super.foundation;
|
foundation = dontCheck super.foundation;
|
||||||
vault = dontHaddock super.vault;
|
vault = dontHaddock super.vault;
|
||||||
|
|
||||||
# https://github.com/snapframework/snap-core/issues/288
|
# https://github.com/snapframework/snap-core/issues/288
|
||||||
snap-core = overrideCabal super.snap-core (drv: { prePatch = "substituteInPlace src/Snap/Internal/Core.hs --replace 'fail = Fail.fail' ''"; });
|
snap-core = overrideCabal super.snap-core (drv: { prePatch = "substituteInPlace src/Snap/Internal/Core.hs --replace 'fail = Fail.fail' ''"; });
|
||||||
# needs a release
|
|
||||||
json = overrideCabal super.json (drv: { prePatch = "substituteInPlace json.cabal --replace '4.13' '4.14'"; patches = [(
|
|
||||||
pkgs.fetchpatch {
|
|
||||||
url = "https://github.com/GaloisInc/json/commit/9d36ca5d865be7e4b2126b68a444b901941d2492.patch";
|
|
||||||
sha256 = "0vyi5nbivkqg6zngq7rb3wwcj9043m4hmyk155nrcddl8j2smfzv";
|
|
||||||
}
|
|
||||||
)]; });
|
|
||||||
|
|
||||||
# Upstream ships a broken Setup.hs file.
|
# Upstream ships a broken Setup.hs file.
|
||||||
csv = overrideCabal super.csv (drv: { prePatch = "rm Setup.hs"; });
|
csv = overrideCabal super.csv (drv: { prePatch = "rm Setup.hs"; });
|
||||||
|
|
||||||
# mark broken packages
|
|
||||||
bencode = markBrokenVersion "0.6.0.0" super.bencode;
|
|
||||||
easytest = markBroken super.easytest;
|
|
||||||
easytest_0_3 = markBroken super.easytest_0_3;
|
|
||||||
haskell-src = markBrokenVersion "1.0.3.0" super.haskell-src;
|
|
||||||
|
|
||||||
# The LTS-14.x version of the dependencies are too old.
|
|
||||||
policeman = super.policeman.overrideScope (self: super: { ansi-terminal = self.ansi-terminal_0_10_2; relude = self.relude_0_6_0_0; });
|
|
||||||
|
|
||||||
# https://github.com/kowainik/relude/issues/241
|
# https://github.com/kowainik/relude/issues/241
|
||||||
relude_0_6_0_0 = dontCheck super.relude_0_6_0_0;
|
relude = dontCheck super.relude;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -640,18 +640,22 @@ self: super: builtins.intersectAttrs super {
|
|||||||
# we can safely jailbreak spago and use the older directory package from
|
# we can safely jailbreak spago and use the older directory package from
|
||||||
# LTS-14.
|
# LTS-14.
|
||||||
spagoWithOverrides = doJailbreak (super.spago.override {
|
spagoWithOverrides = doJailbreak (super.spago.override {
|
||||||
# spago requires dhall_1_27_0.
|
# spago requires dhall-1.29.0.
|
||||||
dhall = self.dhall_1_27_0;
|
dhall = self.dhall_1_29_0;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# This defines the version of the purescript-docs-search release we are using.
|
||||||
|
# This is defined in the src/Spago/Prelude.hs file in the spago source.
|
||||||
|
docsSearchVersion = "v0.0.8";
|
||||||
|
|
||||||
docsSearchAppJsFile = pkgs.fetchurl {
|
docsSearchAppJsFile = pkgs.fetchurl {
|
||||||
url = "https://github.com/spacchetti/purescript-docs-search/releases/download/v0.0.5/docs-search-app.js";
|
url = "https://github.com/spacchetti/purescript-docs-search/releases/download/${docsSearchVersion}/docs-search-app.js";
|
||||||
sha256 = "11721x455qzh40vzfmralaynn9v8b5wix86r107hhs08vhryjib2";
|
sha256 = "00pzi7pgjicpa0mg0al80gh2q1q2lqiyb3kjarpydlmn8dfjny7v";
|
||||||
};
|
};
|
||||||
|
|
||||||
purescriptDocsSearchFile = pkgs.fetchurl {
|
purescriptDocsSearchFile = pkgs.fetchurl {
|
||||||
url = "https://github.com/spacchetti/purescript-docs-search/releases/download/v0.0.5/purescript-docs-search";
|
url = "https://github.com/spacchetti/purescript-docs-search/releases/download/${docsSearchVersion}/purescript-docs-search";
|
||||||
sha256 = "16p1fmdvpwz1yswav8qjsd26c9airb22xncqw1rjnbd8lcpqx0p5";
|
sha256 = "1hsi1hc4p1z2xbw82w2jxmmczw6mravli1r89vrkivb72sqdjya7";
|
||||||
};
|
};
|
||||||
|
|
||||||
spagoFixHpack = overrideCabal spagoWithOverrides (drv: {
|
spagoFixHpack = overrideCabal spagoWithOverrides (drv: {
|
||||||
@ -676,6 +680,11 @@ self: super: builtins.intersectAttrs super {
|
|||||||
# https://github.com/spacchetti/spago/issues/510
|
# https://github.com/spacchetti/spago/issues/510
|
||||||
cp ${docsSearchAppJsFile} "$sourceRoot/templates/docs-search-app.js"
|
cp ${docsSearchAppJsFile} "$sourceRoot/templates/docs-search-app.js"
|
||||||
cp ${purescriptDocsSearchFile} "$sourceRoot/templates/purescript-docs-search"
|
cp ${purescriptDocsSearchFile} "$sourceRoot/templates/purescript-docs-search"
|
||||||
|
|
||||||
|
# For some weird reason, on Darwin, the open(2) call to embed these files
|
||||||
|
# requires write permissions. The easiest resolution is just to permit that
|
||||||
|
# (doesn't cause any harm on other systems).
|
||||||
|
chmod u+w "$sourceRoot/templates/docs-search-app.js" "$sourceRoot/templates/purescript-docs-search"
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -688,4 +697,17 @@ self: super: builtins.intersectAttrs super {
|
|||||||
# checks SQL statements at compile time, and so requires a running PostgreSQL
|
# checks SQL statements at compile time, and so requires a running PostgreSQL
|
||||||
# database to run it's test suite
|
# database to run it's test suite
|
||||||
postgresql-typed = dontCheck super.postgresql-typed;
|
postgresql-typed = dontCheck super.postgresql-typed;
|
||||||
|
|
||||||
|
# mplayer-spot uses mplayer at runtime.
|
||||||
|
mplayer-spot =
|
||||||
|
let path = pkgs.stdenv.lib.makeBinPath [ pkgs.mplayer ];
|
||||||
|
in overrideCabal (addBuildTool super.mplayer-spot pkgs.makeWrapper) (oldAttrs: {
|
||||||
|
postInstall = ''
|
||||||
|
wrapProgram $out/bin/mplayer-spot --prefix PATH : "${path}"
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
# break infinite recursion with base-orphans
|
||||||
|
primitive = dontCheck super.primitive;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
14223
pkgs/development/haskell-modules/hackage-packages.nix
generated
14223
pkgs/development/haskell-modules/hackage-packages.nix
generated
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,125 @@
|
|||||||
|
From f8d8959e43abd88c5e977079f0948e45cf4c0b0c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Simons <simons@cryp.to>
|
||||||
|
Date: Fri, 28 Feb 2020 11:56:48 +0100
|
||||||
|
Subject: [PATCH] Fix build with ghc-8.8.x.
|
||||||
|
|
||||||
|
The 'fail' method has been moved to the 'MonadFail' class. I made the changes
|
||||||
|
so that the code still compiles with previous versions of 'base' that don't
|
||||||
|
have the new MonadFail class exported by Prelude yet.
|
||||||
|
---
|
||||||
|
CmdLine/GitAnnex/Options.hs | 5 +++--
|
||||||
|
Command/Expire.hs | 5 +++--
|
||||||
|
Command/Init.hs | 7 ++++---
|
||||||
|
Utility/HumanTime.hs | 5 +++--
|
||||||
|
4 files changed, 13 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CmdLine/GitAnnex/Options.hs b/CmdLine/GitAnnex/Options.hs
|
||||||
|
index 030c83dd5..a9a36d76f 100644
|
||||||
|
--- a/CmdLine/GitAnnex/Options.hs
|
||||||
|
+++ b/CmdLine/GitAnnex/Options.hs
|
||||||
|
@@ -9,6 +9,7 @@
|
||||||
|
|
||||||
|
module CmdLine.GitAnnex.Options where
|
||||||
|
|
||||||
|
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||||
|
import Options.Applicative
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
|
@@ -215,8 +216,8 @@ parseAllOption = flag' WantAllKeys
|
||||||
|
<> help "operate on all versions of all files"
|
||||||
|
)
|
||||||
|
|
||||||
|
-parseKey :: Monad m => String -> m Key
|
||||||
|
-parseKey = maybe (fail "invalid key") return . deserializeKey
|
||||||
|
+parseKey :: MonadFail m => String -> m Key
|
||||||
|
+parseKey = maybe (Fail.fail "invalid key") return . deserializeKey
|
||||||
|
|
||||||
|
-- Options to match properties of annexed files.
|
||||||
|
annexedMatchingOptions :: [GlobalOption]
|
||||||
|
diff --git a/Command/Expire.hs b/Command/Expire.hs
|
||||||
|
index 83c38e569..37dc33883 100644
|
||||||
|
--- a/Command/Expire.hs
|
||||||
|
+++ b/Command/Expire.hs
|
||||||
|
@@ -17,6 +17,7 @@ import Annex.VectorClock
|
||||||
|
import qualified Remote
|
||||||
|
import Utility.HumanTime
|
||||||
|
|
||||||
|
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||||
|
import Data.Time.Clock.POSIX
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
|
@@ -105,9 +106,9 @@ parseExpire ps = do
|
||||||
|
Nothing -> giveup $ "bad expire time: " ++ s
|
||||||
|
Just d -> Just (now - durationToPOSIXTime d)
|
||||||
|
|
||||||
|
-parseActivity :: Monad m => String -> m Activity
|
||||||
|
+parseActivity :: MonadFail m => String -> m Activity
|
||||||
|
parseActivity s = case readish s of
|
||||||
|
- Nothing -> fail $ "Unknown activity. Choose from: " ++
|
||||||
|
+ Nothing -> Fail.fail $ "Unknown activity. Choose from: " ++
|
||||||
|
unwords (map show [minBound..maxBound :: Activity])
|
||||||
|
Just v -> return v
|
||||||
|
|
||||||
|
diff --git a/Command/Init.hs b/Command/Init.hs
|
||||||
|
index db6cb14fb..879a1110f 100644
|
||||||
|
--- a/Command/Init.hs
|
||||||
|
+++ b/Command/Init.hs
|
||||||
|
@@ -13,6 +13,7 @@ import Annex.Version
|
||||||
|
import Types.RepoVersion
|
||||||
|
import qualified Annex.SpecialRemote
|
||||||
|
|
||||||
|
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
|
cmd :: Command
|
||||||
|
@@ -33,14 +34,14 @@ optParser desc = InitOptions
|
||||||
|
<> help "Override default annex.version"
|
||||||
|
))
|
||||||
|
|
||||||
|
-parseRepoVersion :: Monad m => String -> m RepoVersion
|
||||||
|
+parseRepoVersion :: MonadFail m => String -> m RepoVersion
|
||||||
|
parseRepoVersion s = case RepoVersion <$> readish s of
|
||||||
|
- Nothing -> fail $ "version parse error"
|
||||||
|
+ Nothing -> Fail.fail $ "version parse error"
|
||||||
|
Just v
|
||||||
|
| v `elem` supportedVersions -> return v
|
||||||
|
| otherwise -> case M.lookup v autoUpgradeableVersions of
|
||||||
|
Just v' -> return v'
|
||||||
|
- Nothing -> fail $ s ++ " is not a currently supported repository version"
|
||||||
|
+ Nothing -> Fail.fail $ s ++ " is not a currently supported repository version"
|
||||||
|
|
||||||
|
seek :: InitOptions -> CommandSeek
|
||||||
|
seek = commandAction . start
|
||||||
|
diff --git a/Utility/HumanTime.hs b/Utility/HumanTime.hs
|
||||||
|
index 01fbeacfb..d2e70f332 100644
|
||||||
|
--- a/Utility/HumanTime.hs
|
||||||
|
+++ b/Utility/HumanTime.hs
|
||||||
|
@@ -19,6 +19,7 @@ module Utility.HumanTime (
|
||||||
|
import Utility.PartialPrelude
|
||||||
|
import Utility.QuickCheck
|
||||||
|
|
||||||
|
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||||
|
import qualified Data.Map as M
|
||||||
|
import Data.Time.Clock
|
||||||
|
import Data.Time.Clock.POSIX (POSIXTime)
|
||||||
|
@@ -44,7 +45,7 @@ daysToDuration :: Integer -> Duration
|
||||||
|
daysToDuration i = Duration $ i * dsecs
|
||||||
|
|
||||||
|
{- Parses a human-input time duration, of the form "5h", "1m", "5h1m", etc -}
|
||||||
|
-parseDuration :: Monad m => String -> m Duration
|
||||||
|
+parseDuration :: MonadFail m => String -> m Duration
|
||||||
|
parseDuration = maybe parsefail (return . Duration) . go 0
|
||||||
|
where
|
||||||
|
go n [] = return n
|
||||||
|
@@ -55,7 +56,7 @@ parseDuration = maybe parsefail (return . Duration) . go 0
|
||||||
|
u <- M.lookup c unitmap
|
||||||
|
go (n + num * u) rest
|
||||||
|
_ -> return $ n + num
|
||||||
|
- parsefail = fail "duration parse error; expected eg \"5m\" or \"1h5m\""
|
||||||
|
+ parsefail = Fail.fail "duration parse error; expected eg \"5m\" or \"1h5m\""
|
||||||
|
|
||||||
|
fromDuration :: Duration -> String
|
||||||
|
fromDuration Duration { durationSeconds = d }
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -1,14 +1,53 @@
|
|||||||
{ haskellPackages
|
{ haskell
|
||||||
, haskell
|
, haskellPackages
|
||||||
, lib
|
, lib
|
||||||
|
, nodejs
|
||||||
|
, purescript
|
||||||
|
, runCommand
|
||||||
}:
|
}:
|
||||||
|
|
||||||
haskell.lib.justStaticExecutables (haskell.lib.overrideCabal haskellPackages.spago (oldAttrs: {
|
let
|
||||||
maintainers = (oldAttrs.maintainers or []) ++ [
|
spago =
|
||||||
lib.maintainers.cdepillabout
|
haskell.lib.justStaticExecutables
|
||||||
];
|
(haskell.lib.overrideCabal haskellPackages.spago (oldAttrs: {
|
||||||
|
maintainers = (oldAttrs.maintainers or []) ++ [
|
||||||
|
lib.maintainers.cdepillabout
|
||||||
|
];
|
||||||
|
}));
|
||||||
|
in
|
||||||
|
|
||||||
|
spago.overrideAttrs (oldAttrs: {
|
||||||
passthru = (oldAttrs.passthru or {}) // {
|
passthru = (oldAttrs.passthru or {}) // {
|
||||||
updateScript = ./update.sh;
|
updateScript = ./update.sh;
|
||||||
|
|
||||||
|
# These tests can be run with the following command. The tests access the
|
||||||
|
# network, so they cannot be run in the nix sandbox. sudo is needed in
|
||||||
|
# order to change the sandbox option.
|
||||||
|
#
|
||||||
|
# $ sudo nix-build -A spago.passthru.tests --option sandbox relaxed
|
||||||
|
#
|
||||||
|
tests =
|
||||||
|
runCommand
|
||||||
|
"spago-tests"
|
||||||
|
{
|
||||||
|
__noChroot = true;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
nodejs
|
||||||
|
purescript
|
||||||
|
spago
|
||||||
|
];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
# spago expects HOME to be set because it creates a cache file under
|
||||||
|
# home.
|
||||||
|
HOME=$(pwd)
|
||||||
|
|
||||||
|
spago --verbose init
|
||||||
|
spago --verbose build
|
||||||
|
spago --verbose test
|
||||||
|
|
||||||
|
touch $out
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}))
|
})
|
||||||
|
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
pname = "spago";
|
pname = "spago";
|
||||||
version = "0.13.1";
|
version = "0.14.0";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://github.com/spacchetti/spago.git";
|
url = "https://github.com/purescript/spago.git";
|
||||||
sha256 = "0l6sy1hz5dbnrjkvb2f44afhd48nwqx5kx1h29ns93xbbd57hci8";
|
sha256 = "12i1430prqspy73nwfxc17zf51yprhrxxcnhw4rks6jhkgwxf4a4";
|
||||||
rev = "b87858609c671d8f3dc78f858ce1d8c492bd1062";
|
rev = "7a99343e4876a465600eaa64b0697a9f0b2a49a9";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
isLibrary = true;
|
isLibrary = true;
|
||||||
@ -42,6 +42,7 @@ mkDerivation {
|
|||||||
];
|
];
|
||||||
testToolDepends = [ hspec-discover ];
|
testToolDepends = [ hspec-discover ];
|
||||||
prePatch = "hpack";
|
prePatch = "hpack";
|
||||||
homepage = "https://github.com/spacchetti/spago#readme";
|
homepage = "https://github.com/purescript/spago#readme";
|
||||||
license = stdenv.lib.licenses.bsd3;
|
license = stdenv.lib.licenses.bsd3;
|
||||||
|
broken = true; # Build is broken in lts-15.x.
|
||||||
}
|
}
|
||||||
|
@ -20,11 +20,14 @@ spago_derivation_file="${script_dir}/spago.nix"
|
|||||||
old_version="$(sed -En 's/.*\bversion = "(.*?)".*/\1/p' "$spago_derivation_file")"
|
old_version="$(sed -En 's/.*\bversion = "(.*?)".*/\1/p' "$spago_derivation_file")"
|
||||||
|
|
||||||
# This is the latest release version of spago on GitHub.
|
# This is the latest release version of spago on GitHub.
|
||||||
new_version=$(curl --silent "https://api.github.com/repos/spacchetti/spago/releases" | jq '.[0].tag_name' --raw-output)
|
new_version=$(curl --silent "https://api.github.com/repos/purescript/spago/releases" | jq '.[0].tag_name' --raw-output)
|
||||||
|
|
||||||
echo "Updating spago from old version $old_version to new version $new_version."
|
echo "Updating spago from old version $old_version to new version $new_version."
|
||||||
echo "Running cabal2nix and outputting to ${spago_derivation_file}..."
|
echo "Running cabal2nix and outputting to ${spago_derivation_file}..."
|
||||||
|
|
||||||
cabal2nix --revision "$new_version" "https://github.com/spacchetti/spago.git" > "$spago_derivation_file"
|
cabal2nix --revision "$new_version" "https://github.com/purescript/spago.git" > "$spago_derivation_file"
|
||||||
|
|
||||||
|
# TODO: This should ideally also automatically update the docsSearchVersion
|
||||||
|
# from pkgs/development/haskell/configuration-nix.nix.
|
||||||
|
|
||||||
echo "Finished."
|
echo "Finished."
|
||||||
|
@ -8284,7 +8284,7 @@ in
|
|||||||
|
|
||||||
# Please update doc/languages-frameworks/haskell.section.md, “Our
|
# Please update doc/languages-frameworks/haskell.section.md, “Our
|
||||||
# current default compiler is”, if you bump this:
|
# current default compiler is”, if you bump this:
|
||||||
haskellPackages = dontRecurseIntoAttrs haskell.packages.ghc865;
|
haskellPackages = dontRecurseIntoAttrs haskell.packages.ghc882;
|
||||||
|
|
||||||
inherit (haskellPackages) ghc;
|
inherit (haskellPackages) ghc;
|
||||||
|
|
||||||
|
@ -68,6 +68,12 @@ in {
|
|||||||
buildLlvmPackages = buildPackages.llvmPackages_7;
|
buildLlvmPackages = buildPackages.llvmPackages_7;
|
||||||
llvmPackages = pkgs.llvmPackages_7;
|
llvmPackages = pkgs.llvmPackages_7;
|
||||||
};
|
};
|
||||||
|
ghc883 = callPackage ../development/compilers/ghc/8.8.3.nix {
|
||||||
|
bootPkgs = packages.ghc863Binary;
|
||||||
|
inherit (buildPackages.python3Packages) sphinx;
|
||||||
|
buildLlvmPackages = buildPackages.llvmPackages_7;
|
||||||
|
llvmPackages = pkgs.llvmPackages_7;
|
||||||
|
};
|
||||||
ghc8101 = callPackage ../development/compilers/ghc/8.10.1.nix {
|
ghc8101 = callPackage ../development/compilers/ghc/8.10.1.nix {
|
||||||
bootPkgs = packages.ghc863Binary;
|
bootPkgs = packages.ghc863Binary;
|
||||||
inherit (buildPackages.python3Packages) sphinx;
|
inherit (buildPackages.python3Packages) sphinx;
|
||||||
@ -137,6 +143,11 @@ in {
|
|||||||
ghc = bh.compiler.ghc882;
|
ghc = bh.compiler.ghc882;
|
||||||
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.8.x.nix { };
|
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 { };
|
||||||
|
};
|
||||||
ghc8101 = callPackage ../development/haskell-modules {
|
ghc8101 = callPackage ../development/haskell-modules {
|
||||||
buildHaskellPackages = bh.packages.ghc8101;
|
buildHaskellPackages = bh.packages.ghc8101;
|
||||||
ghc = bh.compiler.ghc8101;
|
ghc = bh.compiler.ghc8101;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user