diff --git a/doc/languages-frameworks/haskell.section.md b/doc/languages-frameworks/haskell.section.md index 54ba8e4786d54..b727f2fb634b3 100644 --- a/doc/languages-frameworks/haskell.section.md +++ b/doc/languages-frameworks/haskell.section.md @@ -101,17 +101,15 @@ to compile your Haskell packages with any GHC version you please. The following command displays the complete list of available compilers: ``` $ nix-env -f "" -qaP -A haskell.compiler -haskell.compiler.ghc8101 ghc-8.10.0.20191210 -haskell.compiler.integer-simple.ghc8101 ghc-8.10.0.20191210 -haskell.compiler.ghcHEAD ghc-8.10.20191119 -haskell.compiler.integer-simple.ghcHEAD ghc-8.10.20191119 +haskell.compiler.ghc8101 ghc-8.10.1 +haskell.compiler.integer-simple.ghc8101 ghc-8.10.1 +haskell.compiler.ghcHEAD ghc-8.11.20200403 +haskell.compiler.integer-simple.ghcHEAD ghc-8.11.20200403 haskell.compiler.ghc822Binary ghc-8.2.2-binary haskell.compiler.ghc844 ghc-8.4.4 haskell.compiler.ghc863Binary ghc-8.6.3-binary haskell.compiler.ghc865 ghc-8.6.5 haskell.compiler.integer-simple.ghc865 ghc-8.6.5 -haskell.compiler.ghc881 ghc-8.8.1 -haskell.compiler.integer-simple.ghc881 ghc-8.8.1 haskell.compiler.ghc882 ghc-8.8.2 haskell.compiler.integer-simple.ghc882 ghc-8.8.2 haskell.compiler.ghc883 ghc-8.8.3 diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix index 3e2d3ce2ad2f8..49825ab199456 100644 --- a/pkgs/development/compilers/elm/default.nix +++ b/pkgs/development/compilers/elm/default.nix @@ -4,7 +4,7 @@ let fetchElmDeps = import ./fetchElmDeps.nix { inherit stdenv lib fetchurl; }; - hsPkgs = haskell.packages.ghc881.override { + hsPkgs = haskell.packages.ghc883.override { overrides = self: super: with haskell.lib; let elmPkgs = rec { elm = overrideCabal (self.callPackage ./packages/elm.nix { }) (drv: { @@ -28,7 +28,7 @@ let `package/nix/build.sh` */ elm-format = justStaticExecutables (overrideCabal (self.callPackage ./packages/elm-format.nix {}) (drv: { - # GHC 8.8.1 support + # GHC 8.8.3 support # https://github.com/avh4/elm-format/pull/640 patches = [( fetchpatch { @@ -39,7 +39,7 @@ let # Tests are failing after upgrade to ghc881. # Cause is probably just a minor change in stdout output # see https://github.com/avh4/elm-format/pull/640 - doCheck = false; + # doCheck = false; jailbreak = true; })); diff --git a/pkgs/development/compilers/ghc/8.10.1.nix b/pkgs/development/compilers/ghc/8.10.1.nix index 01e10b04d2709..cacff5bfcfdfa 100644 --- a/pkgs/development/compilers/ghc/8.10.1.nix +++ b/pkgs/development/compilers/ghc/8.10.1.nix @@ -73,7 +73,7 @@ let ''; # Splicer will pull out correct variations - libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ] + libDeps = platform: stdenv.lib.optional enableTerminfo ncurses ++ [libffi] ++ stdenv.lib.optional (!enableIntegerSimple) gmp ++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv; @@ -160,10 +160,10 @@ stdenv.mkDerivation (rec { "--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.optionals (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) [ + ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" ] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [ @@ -176,7 +176,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/pkgs/development/compilers/ghc/8.4.4.nix b/pkgs/development/compilers/ghc/8.4.4.nix index e63f820783092..adfd20531ab0f 100644 --- a/pkgs/development/compilers/ghc/8.4.4.nix +++ b/pkgs/development/compilers/ghc/8.4.4.nix @@ -186,7 +186,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/pkgs/development/compilers/ghc/8.6.5.nix b/pkgs/development/compilers/ghc/8.6.5.nix index e746c6bfcbaea..c01f53aff9e97 100644 --- a/pkgs/development/compilers/ghc/8.6.5.nix +++ b/pkgs/development/compilers/ghc/8.6.5.nix @@ -185,7 +185,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/pkgs/development/compilers/ghc/8.8.1.nix b/pkgs/development/compilers/ghc/8.8.1.nix deleted file mode 100644 index 9ebce6bdd48d5..0000000000000 --- a/pkgs/development/compilers/ghc/8.8.1.nix +++ /dev/null @@ -1,236 +0,0 @@ -{ 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 || 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 ? !(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; - - # 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.1"; - name = "${targetPrefix}ghc-${version}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "06kj4fhvijinjafiy4s873n60qly323rdlz9bmc79nhlp3cq72lh"; - }; - - 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 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 - '' + 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.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [ - "--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib" - ] ++ stdenv.lib.optionals (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 useLdGold [ - "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; -}) diff --git a/pkgs/development/compilers/ghc/8.8.2.nix b/pkgs/development/compilers/ghc/8.8.2.nix index 9039b1fa7467b..4cc41620c2dbe 100644 --- a/pkgs/development/compilers/ghc/8.8.2.nix +++ b/pkgs/development/compilers/ghc/8.8.2.nix @@ -73,7 +73,7 @@ let ''; # Splicer will pull out correct variations - libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ] + libDeps = platform: stdenv.lib.optional enableTerminfo ncurses ++ [libffi] ++ stdenv.lib.optional (!enableIntegerSimple) gmp ++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv; @@ -160,10 +160,10 @@ stdenv.mkDerivation (rec { "--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.optionals (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) [ + ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" ] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [ @@ -176,7 +176,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/pkgs/development/compilers/ghc/8.8.3.nix b/pkgs/development/compilers/ghc/8.8.3.nix index 9462835cbdb3d..30cbb87cce2bd 100644 --- a/pkgs/development/compilers/ghc/8.8.3.nix +++ b/pkgs/development/compilers/ghc/8.8.3.nix @@ -73,7 +73,7 @@ let ''; # Splicer will pull out correct variations - libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ] + libDeps = platform: stdenv.lib.optional enableTerminfo ncurses ++ [libffi] ++ stdenv.lib.optional (!enableIntegerSimple) gmp ++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv; @@ -160,10 +160,10 @@ stdenv.mkDerivation (rec { "--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.optionals (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) [ + ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" ] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [ @@ -176,7 +176,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index be8fd73a6be02..d7fe37d1103f0 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -2,13 +2,17 @@ # build-tools , bootPkgs -, autoconf, autoreconfHook, automake, coreutils, fetchgit, fetchpatch, perl, python3, m4, sphinx +, autoconf, autoreconfHook, automake, coreutils, fetchgit, perl, python3, m4, sphinx , bash , libiconv ? null, ncurses +, # GHC can be built with system libffi or a bundled one. + libffi ? null + , enableDwarf ? !stdenv.targetPlatform.isDarwin && - !stdenv.targetPlatform.isWindows, elfutils # for DWARF support + !stdenv.targetPlatform.isWindows +, elfutils # for DWARF support , useLLVM ? !stdenv.targetPlatform.isx86 || stdenv.targetPlatform.isiOS , # LLVM is conceptually a run-time-only depedendency, but for @@ -18,7 +22,8 @@ , # 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 + 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 @@ -30,7 +35,7 @@ , # Whetherto build terminfo. enableTerminfo ? !stdenv.targetPlatform.isWindows -, version ? "8.10.20191119" +, version ? "8.11.20200403" , # 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) @@ -75,6 +80,7 @@ let # 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 ++ stdenv.lib.optional enableDwarf elfutils; @@ -97,17 +103,14 @@ stdenv.mkDerivation (rec { src = fetchgit { url = "https://gitlab.haskell.org/ghc/ghc.git/"; - rev = "0418c38d55c7a47967187dce2db5ea2ab1021b1e"; - sha256 = "1d8g30ii0w4xh6fh61bxbalsqqyanny99nn3p727fx7favnhgvxi"; + rev = "4291bddaea3148908c55f235ee8978e1d9aa6f20"; + sha256 = "1gs3mxmsdpsgsp7vnawx8mys0qwg4x2zhfrbciy3wv8nv13ar1af"; }; enableParallelBuilding = true; outputs = [ "out" "doc" ]; - patches = [ - ]; - postPatch = "patchShebangs ."; # GHC is a bit confused on its cross terminology. @@ -130,8 +133,8 @@ stdenv.mkDerivation (rec { export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip" echo -n "${buildMK}" > mk/build.mk - echo ${version} >VERSION - echo ${src.rev} >GIT_COMMIT_ID + echo ${version} > VERSION + echo ${src.rev} > GIT_COMMIT_ID ./boot sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure '' + stdenv.lib.optionalString (!stdenv.isDarwin) '' @@ -161,31 +164,40 @@ stdenv.mkDerivation (rec { # 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" + "--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 (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.optionals (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) [ "--enable-bootstrap-with-devel-snapshot" ] ++ stdenv.lib.optionals useLdGold [ "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" - ] ++ stdenv.lib.optionals enableDwarf [ + ] ++ stdenv.lib.optional disableLargeAddressSpace "--disable-large-address-space" + ++ stdenv.lib.optionals enableDwarf [ "--enable-dwarf-unwind" "--with-libdw-includes=${stdenv.lib.getDev elfutils}/include" "--with-libdw-libraries=${stdenv.lib.getLib elfutils}/lib" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; + # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. + dontAddExtraLibs = true; + nativeBuildInputs = [ perl autoconf autoreconfHook automake m4 python3 sphinx ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix index b7ce5ef637783..f5ccca36ed612 100644 --- a/pkgs/development/haskell-modules/hackage-packages.nix +++ b/pkgs/development/haskell-modules/hackage-packages.nix @@ -6752,8 +6752,8 @@ self: { }: mkDerivation { pname = "GPipe"; - version = "2.2.4"; - sha256 = "0l3s3j41fwwcjdc0nymzqmdsd7wlvaqyn1lg7n1wdx65wy4iz6j0"; + version = "2.2.5"; + sha256 = "1k4hxgd5vpdl9fqjk3i81rcyqn53giahcpygb9lm3nyfvxzzwg3z"; enableSeparateDataOutput = true; libraryHaskellDepends = [ base Boolean containers exception-transformers gl hashtables linear @@ -45006,6 +45006,28 @@ self: { license = stdenv.lib.licenses.bsd3; }) {}; + "butcher_1_3_3_0" = callPackage + ({ mkDerivation, base, bifunctors, containers, deque, extra, free + , hspec, microlens, microlens-th, mtl, multistate, pretty + , transformers, unsafe, void + }: + mkDerivation { + pname = "butcher"; + version = "1.3.3.0"; + sha256 = "1zp0j5ydbnk6x3yblhs9c6z2a3bmh9fvprqhx2wk3wyvrgkwsx8h"; + libraryHaskellDepends = [ + base bifunctors containers deque extra free microlens microlens-th + mtl multistate pretty transformers unsafe void + ]; + testHaskellDepends = [ + base containers deque extra free hspec microlens microlens-th mtl + multistate pretty transformers unsafe + ]; + description = "Chops a command or program invocation into digestable pieces"; + license = stdenv.lib.licenses.bsd3; + hydraPlatforms = stdenv.lib.platforms.none; + }) {}; + "butter" = callPackage ({ mkDerivation, aeson, base, bytestring, containers , forkable-monad, free, HUnit, network-simple, stm @@ -73546,6 +73568,23 @@ self: { license = stdenv.lib.licenses.bsd3; }) {}; + "distributive_0_6_2" = callPackage + ({ mkDerivation, base, base-orphans, Cabal, cabal-doctest, doctest + , generic-deriving, hspec, hspec-discover, tagged, transformers + }: + mkDerivation { + pname = "distributive"; + version = "0.6.2"; + sha256 = "1j93zkfffm6s16kgr0j0z87y5ds28rw0r2gyc5ncwcylvrqy4kl2"; + setupHaskellDepends = [ base Cabal cabal-doctest ]; + libraryHaskellDepends = [ base base-orphans tagged transformers ]; + testHaskellDepends = [ base doctest generic-deriving hspec ]; + testToolDepends = [ hspec-discover ]; + description = "Distributive functors -- Dual to Traversable"; + license = stdenv.lib.licenses.bsd3; + hydraPlatforms = stdenv.lib.platforms.none; + }) {}; + "ditto" = callPackage ({ mkDerivation, base, containers, mtl, semigroups, text, torsor }: mkDerivation { @@ -74032,8 +74071,8 @@ self: { }: mkDerivation { pname = "dobutokO2"; - version = "0.26.0.0"; - sha256 = "04nack12bj26z56jlwrms5idx3x4qp7kif1ff40vwwkq5qwxncbc"; + version = "0.27.0.0"; + sha256 = "1z7ljzgg0ddrg14z53yj3ywrdpdkb8ai9lhmr4cghnidk9vp75cq"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -114736,6 +114775,36 @@ self: { license = stdenv.lib.licenses.publicDomain; }) {}; + "haskoin-core_0_12_0" = callPackage + ({ mkDerivation, aeson, array, base, base16-bytestring, bytestring + , cereal, conduit, containers, cryptonite, deepseq, entropy + , hashable, hspec, hspec-discover, HUnit, memory, mtl, murmur3 + , network, QuickCheck, safe, scientific, secp256k1-haskell, split + , string-conversions, text, time, transformers + , unordered-containers, vector + }: + mkDerivation { + pname = "haskoin-core"; + version = "0.12.0"; + sha256 = "0fqwvs5wwqlq21sk1rw4dz5gnvfb9fkxhfbl3g5sd76c9r6fvrwc"; + libraryHaskellDepends = [ + aeson array base base16-bytestring bytestring cereal conduit + containers cryptonite deepseq entropy hashable hspec HUnit memory + mtl murmur3 network QuickCheck safe scientific secp256k1-haskell + split string-conversions text time transformers + unordered-containers vector + ]; + testHaskellDepends = [ + aeson base bytestring cereal containers deepseq hspec HUnit mtl + QuickCheck safe split string-conversions text unordered-containers + vector + ]; + testToolDepends = [ hspec-discover ]; + description = "Bitcoin & Bitcoin Cash library for Haskell"; + license = stdenv.lib.licenses.publicDomain; + hydraPlatforms = stdenv.lib.platforms.none; + }) {}; + "haskoin-crypto" = callPackage ({ mkDerivation, base, binary, byteable, bytestring, containers , cryptohash, haskoin-util, HUnit, mtl, QuickCheck, test-framework @@ -145230,8 +145299,8 @@ self: { }: mkDerivation { pname = "juicy-gcode"; - version = "0.1.0.5.1"; - sha256 = "1xdmlgickzg94asqy48ms895prjzyzcn767276f99f7mx9pqb5jr"; + version = "0.1.0.5.2"; + sha256 = "14pd0gl2an4mkxkhcx2ybvzdfx2izcnm05p7p7kncf5wdgmkn0px"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -214908,15 +214977,15 @@ self: { license = stdenv.lib.licenses.publicDomain; }) {libsecp256k1 = null;}; - "secp256k1-haskell_0_2_0" = callPackage + "secp256k1-haskell_0_2_1" = callPackage ({ mkDerivation, base, base16-bytestring, bytestring, cereal , deepseq, entropy, hashable, hspec, hspec-discover, HUnit , libsecp256k1, mtl, QuickCheck, string-conversions }: mkDerivation { pname = "secp256k1-haskell"; - version = "0.2.0"; - sha256 = "0875vc62r9y5lddnxq5s50xlagz464bnr4j89nz376jyrlg5db7v"; + version = "0.2.1"; + sha256 = "0drqr05zk31061digqzlkylb42lk8m2j9v84k6sfb01gkfrp9cw9"; libraryHaskellDepends = [ base base16-bytestring bytestring cereal deepseq entropy hashable QuickCheck string-conversions diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 052b84f269e6f..ae985f8b75d90 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -56,12 +56,6 @@ in { buildLlvmPackages = buildPackages.llvmPackages_6; llvmPackages = pkgs.llvmPackages_6; }; - ghc881 = callPackage ../development/compilers/ghc/8.8.1.nix { - bootPkgs = packages.ghc865Binary; - inherit (buildPackages.python3Packages) sphinx; - buildLlvmPackages = buildPackages.llvmPackages_7; - llvmPackages = pkgs.llvmPackages_7; - }; ghc882 = callPackage ../development/compilers/ghc/8.8.2.nix { bootPkgs = packages.ghc865Binary; inherit (buildPackages.python3Packages) sphinx; @@ -81,10 +75,11 @@ in { llvmPackages = pkgs.llvmPackages_9; }; ghcHEAD = callPackage ../development/compilers/ghc/head.nix { - bootPkgs = packages.ghc865Binary; + bootPkgs = packages.ghc883; # no binary yet inherit (buildPackages.python3Packages) sphinx; - buildLlvmPackages = buildPackages.llvmPackages_6; - llvmPackages = pkgs.llvmPackages_6; + buildLlvmPackages = buildPackages.llvmPackages_9; + llvmPackages = pkgs.llvmPackages_9; + libffi = pkgs.libffi; }; ghcjs = compiler.ghcjs86; ghcjs86 = callPackage ../development/compilers/ghcjs-ng { @@ -133,11 +128,6 @@ in { ghc = bh.compiler.ghc865; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.6.x.nix { }; }; - ghc881 = callPackage ../development/haskell-modules { - buildHaskellPackages = bh.packages.ghc881; - ghc = bh.compiler.ghc881; - compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.8.x.nix { }; - }; ghc882 = callPackage ../development/haskell-modules { buildHaskellPackages = bh.packages.ghc882; ghc = bh.compiler.ghc882;