forked from mirrors/nixpkgs
5f94d85e5e
The approach taken to add this package was to port over the definitions currently existing for HEAD, and making the necessesary changes to get this building. The Haskell package set associated with this compiler doesn't yet guarantee that all or most of the packages successfully build with this new compiler, but that will improve over time after this GHC 8.2.1 is officially released and the ecosystem catches up.
214 lines
8.6 KiB
Nix
214 lines
8.6 KiB
Nix
{ pkgs, callPackage, stdenv, buildPlatform, targetPlatform }:
|
|
|
|
let # These are attributes in compiler and packages that don't support integer-simple.
|
|
integerSimpleExcludes = [
|
|
"ghc6102Binary"
|
|
"ghc704Binary"
|
|
"ghc742Binary"
|
|
"ghc6104"
|
|
"ghc6123"
|
|
"ghc704"
|
|
"ghc763"
|
|
"ghcjs"
|
|
"ghcjsHEAD"
|
|
"ghcCross"
|
|
"jhc"
|
|
"uhc"
|
|
"integer-simple"
|
|
];
|
|
in rec {
|
|
|
|
lib = import ../development/haskell-modules/lib.nix { inherit pkgs; };
|
|
|
|
compiler = {
|
|
|
|
ghc6102Binary = callPackage ../development/compilers/ghc/6.10.2-binary.nix { gmp = pkgs.gmp4; };
|
|
ghc704Binary = callPackage ../development/compilers/ghc/7.0.4-binary.nix {
|
|
gmp = pkgs.gmp4;
|
|
};
|
|
ghc742Binary = callPackage ../development/compilers/ghc/7.4.2-binary.nix {
|
|
gmp = pkgs.gmp4;
|
|
};
|
|
|
|
ghc6104 = callPackage ../development/compilers/ghc/6.10.4.nix { ghc = compiler.ghc6102Binary; };
|
|
ghc6123 = callPackage ../development/compilers/ghc/6.12.3.nix { ghc = compiler.ghc6102Binary; };
|
|
ghc704 = callPackage ../development/compilers/ghc/7.0.4.nix {
|
|
ghc = compiler.ghc704Binary;
|
|
};
|
|
ghc722 = callPackage ../development/compilers/ghc/7.2.2.nix {
|
|
ghc = compiler.ghc704Binary;
|
|
};
|
|
ghc742 = callPackage ../development/compilers/ghc/7.4.2.nix {
|
|
ghc = compiler.ghc704Binary;
|
|
};
|
|
ghc763 = callPackage ../development/compilers/ghc/7.6.3.nix {
|
|
ghc = compiler.ghc704Binary;
|
|
};
|
|
ghc783 = callPackage ../development/compilers/ghc/7.8.3.nix {
|
|
ghc = compiler.ghc742Binary;
|
|
};
|
|
ghc784 = callPackage ../development/compilers/ghc/7.8.4.nix {
|
|
ghc = compiler.ghc742Binary;
|
|
};
|
|
ghc7102 = callPackage ../development/compilers/ghc/7.10.2.nix rec {
|
|
bootPkgs = packages.ghc784;
|
|
inherit (bootPkgs) hscolour;
|
|
};
|
|
ghc7103 = callPackage ../development/compilers/ghc/7.10.3.nix rec {
|
|
bootPkgs = packages.ghc784;
|
|
inherit (bootPkgs) hscolour;
|
|
};
|
|
ghc801 = callPackage ../development/compilers/ghc/8.0.1.nix rec {
|
|
bootPkgs = packages.ghc7103;
|
|
inherit (bootPkgs) hscolour;
|
|
sphinx = pkgs.python27Packages.sphinx;
|
|
};
|
|
ghc802 = callPackage ../development/compilers/ghc/8.0.2.nix rec {
|
|
bootPkgs = packages.ghc7103;
|
|
inherit (bootPkgs) hscolour;
|
|
sphinx = pkgs.python27Packages.sphinx;
|
|
};
|
|
ghc821 = callPackage ../development/compilers/ghc/8.2.1.nix rec {
|
|
bootPkgs = packages.ghc802;
|
|
inherit (bootPkgs) hscolour alex happy;
|
|
inherit buildPlatform targetPlatform;
|
|
sphinx = pkgs.python3Packages.sphinx;
|
|
selfPkgs = packages.ghc821;
|
|
};
|
|
ghcHEAD = callPackage ../development/compilers/ghc/head.nix rec {
|
|
bootPkgs = packages.ghc7103;
|
|
inherit (bootPkgs) alex happy;
|
|
inherit buildPlatform targetPlatform;
|
|
selfPkgs = packages.ghcHEAD;
|
|
};
|
|
ghcjs = packages.ghc7103.callPackage ../development/compilers/ghcjs {
|
|
bootPkgs = packages.ghc7103;
|
|
};
|
|
ghcjsHEAD = packages.ghc802.callPackage ../development/compilers/ghcjs/head.nix {
|
|
bootPkgs = packages.ghc802;
|
|
};
|
|
ghcHaLVM240 = callPackage ../development/compilers/halvm/2.4.0.nix rec {
|
|
bootPkgs = packages.ghc802;
|
|
inherit (bootPkgs) hscolour alex happy;
|
|
};
|
|
|
|
jhc = callPackage ../development/compilers/jhc {
|
|
inherit (packages.ghc763) ghcWithPackages;
|
|
};
|
|
|
|
uhc = callPackage ../development/compilers/uhc/default.nix ({
|
|
stdenv = pkgs.clangStdenv;
|
|
inherit (pkgs.haskellPackages) ghcWithPackages;
|
|
});
|
|
|
|
# The integer-simple attribute set contains all the GHC compilers
|
|
# build with integer-simple instead of integer-gmp.
|
|
integer-simple =
|
|
let integerSimpleGhcNames =
|
|
pkgs.lib.filter (name: ! builtins.elem name integerSimpleExcludes)
|
|
(pkgs.lib.attrNames compiler);
|
|
integerSimpleGhcs = pkgs.lib.genAttrs integerSimpleGhcNames
|
|
(name: compiler."${name}".override { enableIntegerSimple = true; });
|
|
in pkgs.recurseIntoAttrs (integerSimpleGhcs // {
|
|
ghcHEAD = integerSimpleGhcs.ghcHEAD.override { selfPkgs = packages.integer-simple.ghcHEAD; };
|
|
});
|
|
|
|
};
|
|
|
|
packages = {
|
|
|
|
# Support for this compiler is broken, because it can't deal with directory-based package databases.
|
|
# ghc6104 = callPackage ../development/haskell-modules { ghc = compiler.ghc6104; };
|
|
ghc6123 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc6123;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-6.12.x.nix { };
|
|
};
|
|
ghc704 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc704;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.0.x.nix { };
|
|
};
|
|
ghc722 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc722;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.2.x.nix { };
|
|
};
|
|
ghc742 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc742;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.4.x.nix { };
|
|
};
|
|
ghc763 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc763;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.6.x.nix { };
|
|
};
|
|
ghc783 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc783;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.8.x.nix { };
|
|
};
|
|
ghc784 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc784;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.8.x.nix { };
|
|
};
|
|
ghc7102 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc7102;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.10.x.nix { };
|
|
};
|
|
ghc7103 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc7103;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.10.x.nix { };
|
|
};
|
|
ghc801 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc801;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.0.x.nix { };
|
|
};
|
|
ghc802 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc802;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.0.x.nix { };
|
|
};
|
|
ghc821 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc821;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.x.nix { };
|
|
};
|
|
ghcHEAD = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghcHEAD;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-head.nix { };
|
|
};
|
|
# TODO Support for multiple variants here
|
|
ghcCross = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghcHEAD.crossCompiler;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-head.nix { };
|
|
};
|
|
ghcCross821 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghc821.crossCompiler;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.x.nix { };
|
|
};
|
|
ghcjs = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghcjs;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.10.x.nix { };
|
|
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
|
|
};
|
|
ghcjsHEAD = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghcjsHEAD;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.0.x.nix { };
|
|
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
|
|
};
|
|
ghcHaLVM240 = callPackage ../development/haskell-modules {
|
|
ghc = compiler.ghcHaLVM240;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-halvm-2.4.0.nix { };
|
|
};
|
|
|
|
# The integer-simple attribute set contains package sets for all the GHC compilers
|
|
# using integer-simple instead of integer-gmp.
|
|
integer-simple =
|
|
let integerSimpleGhcNames =
|
|
pkgs.lib.filter (name: ! builtins.elem name integerSimpleExcludes)
|
|
(pkgs.lib.attrNames packages);
|
|
in pkgs.lib.genAttrs integerSimpleGhcNames (name: packages."${name}".override {
|
|
ghc = compiler.integer-simple."${name}";
|
|
overrides = _self : _super : {
|
|
integer-simple = null;
|
|
integer-gmp = null;
|
|
};
|
|
});
|
|
|
|
};
|
|
}
|