2f0de54ddb
We keep the latest minor release of each one of the last 3 major releases, which currently are GHC versions 8.2.2, 8.4.4, and 8.6.1. We also have ghc-HEAD, but this doesn't count. Dropping these compilers implied that we have to drop the corresponding versions of ghcjs, too. We can also drop a shitload of obsolete compiler patches that newer versions no longer need. At some point, we can probably simplify the generic builder, too.
179 lines
7.0 KiB
Nix
179 lines
7.0 KiB
Nix
{ buildPackages, pkgs
|
|
, newScope
|
|
}:
|
|
|
|
let
|
|
# These are attributes in compiler and packages that don't support integer-simple.
|
|
integerSimpleExcludes = [
|
|
"ghc7103Binary"
|
|
"ghc821Binary"
|
|
"ghcjs"
|
|
"ghcjs82"
|
|
"ghcjs84"
|
|
"integer-simple"
|
|
];
|
|
|
|
haskellLib = import ../development/haskell-modules/lib.nix {
|
|
inherit (pkgs) lib;
|
|
inherit pkgs;
|
|
};
|
|
|
|
callPackage = newScope {
|
|
inherit haskellLib;
|
|
overrides = pkgs.haskell.packageOverrides;
|
|
};
|
|
|
|
bootstrapPackageSet = self: super: {
|
|
mkDerivation = drv: super.mkDerivation (drv // {
|
|
doCheck = false;
|
|
doHaddock = false;
|
|
enableExecutableProfiling = false;
|
|
enableLibraryProfiling = false;
|
|
enableSharedExecutables = false;
|
|
enableSharedLibraries = false;
|
|
});
|
|
};
|
|
|
|
# Use this rather than `rec { ... }` below for sake of overlays.
|
|
inherit (pkgs.haskell) compiler packages;
|
|
|
|
in {
|
|
lib = haskellLib;
|
|
|
|
compiler = {
|
|
|
|
ghc7103Binary = callPackage ../development/compilers/ghc/7.10.3-binary.nix { };
|
|
ghc821Binary = callPackage ../development/compilers/ghc/8.2.1-binary.nix { };
|
|
|
|
ghc822 = callPackage ../development/compilers/ghc/8.2.2.nix {
|
|
bootPkgs = packages.ghc821Binary;
|
|
inherit (buildPackages.python3Packages) sphinx;
|
|
buildLlvmPackages = buildPackages.llvmPackages_39;
|
|
llvmPackages = pkgs.llvmPackages_39;
|
|
};
|
|
ghc844 = callPackage ../development/compilers/ghc/8.4.4.nix {
|
|
bootPkgs = packages.ghc821Binary;
|
|
buildLlvmPackages = buildPackages.llvmPackages_5;
|
|
llvmPackages = pkgs.llvmPackages_5;
|
|
};
|
|
ghc861 = callPackage ../development/compilers/ghc/8.6.1.nix {
|
|
bootPkgs = packages.ghc822;
|
|
buildLlvmPackages = buildPackages.llvmPackages_6;
|
|
llvmPackages = pkgs.llvmPackages_6;
|
|
};
|
|
ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
|
|
bootPkgs = packages.ghc821Binary;
|
|
buildLlvmPackages = buildPackages.llvmPackages_5;
|
|
llvmPackages = pkgs.llvmPackages_5;
|
|
};
|
|
ghcjs = compiler.ghcjs84;
|
|
ghcjs82 = callPackage ../development/compilers/ghcjs-ng {
|
|
bootPkgs = packages.ghc822;
|
|
ghcjsSrcJson = ../development/compilers/ghcjs-ng/8.2/git.json;
|
|
stage0 = ../development/compilers/ghcjs-ng/8.2/stage0.nix;
|
|
};
|
|
ghcjs84 = callPackage ../development/compilers/ghcjs-ng {
|
|
bootPkgs = packages.ghc844;
|
|
ghcjsSrcJson = ../development/compilers/ghcjs-ng/8.4/git.json;
|
|
stage0 = ../development/compilers/ghcjs-ng/8.4/stage0.nix;
|
|
ghcjsDepOverrides = callPackage ../development/compilers/ghcjs-ng/8.4/dep-overrides.nix {};
|
|
};
|
|
|
|
# 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);
|
|
in pkgs.recurseIntoAttrs (pkgs.lib.genAttrs
|
|
integerSimpleGhcNames
|
|
(name: compiler."${name}".override { enableIntegerSimple = true; }));
|
|
};
|
|
|
|
# Default overrides that are applied to all package sets.
|
|
packageOverrides = self : super : {};
|
|
|
|
# Always get compilers from `buildPackages`
|
|
packages = let bh = buildPackages.haskell; in {
|
|
|
|
ghc7103Binary = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc7103Binary;
|
|
ghc = bh.compiler.ghc7103Binary;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.10.x.nix { };
|
|
packageSetConfig = bootstrapPackageSet;
|
|
};
|
|
ghc821Binary = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc821Binary;
|
|
ghc = bh.compiler.ghc821Binary;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.x.nix { };
|
|
packageSetConfig = bootstrapPackageSet;
|
|
};
|
|
ghc822 = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc822;
|
|
ghc = bh.compiler.ghc822;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.x.nix { };
|
|
};
|
|
ghc843 = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc843;
|
|
ghc = bh.compiler.ghc843;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.4.x.nix { };
|
|
};
|
|
ghc844 = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc844;
|
|
ghc = bh.compiler.ghc844;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.4.x.nix { };
|
|
};
|
|
ghc861 = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc861;
|
|
ghc = bh.compiler.ghc861;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.6.x.nix { };
|
|
};
|
|
ghcHEAD = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghcHEAD;
|
|
ghc = bh.compiler.ghcHEAD;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-head.nix { };
|
|
};
|
|
ghcjs = packages.ghcjs84;
|
|
ghcjs710 = callPackage ../development/haskell-modules rec {
|
|
buildHaskellPackages = ghc.bootPkgs;
|
|
ghc = bh.compiler.ghcjs710;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-7.10.x.nix { };
|
|
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
|
|
};
|
|
ghcjs80 = callPackage ../development/haskell-modules rec {
|
|
buildHaskellPackages = ghc.bootPkgs;
|
|
ghc = bh.compiler.ghcjs80;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.0.x.nix { };
|
|
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
|
|
};
|
|
ghcjs82 = callPackage ../development/haskell-modules rec {
|
|
buildHaskellPackages = ghc.bootPkgs;
|
|
ghc = bh.compiler.ghcjs82;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.x.nix { };
|
|
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
|
|
};
|
|
ghcjs84 = callPackage ../development/haskell-modules rec {
|
|
buildHaskellPackages = ghc.bootPkgs;
|
|
ghc = bh.compiler.ghcjs84;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.4.x.nix { };
|
|
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
|
|
};
|
|
|
|
# The integer-simple attribute set contains package sets for all the GHC compilers
|
|
# using integer-simple instead of integer-gmp.
|
|
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 = bh.compiler.integer-simple."${name}";
|
|
buildHaskellPackages = bh.packages.integer-simple."${name}";
|
|
overrides = _self : _super : {
|
|
integer-simple = null;
|
|
integer-gmp = null;
|
|
};
|
|
});
|
|
|
|
};
|
|
}
|