a4758050a3
If the nix store lives on NFS, `ghc 8.2.1` is unable to build a package database. This bug was fixed by @bgamari in `ghc 8.2.2` here: https://ghc.haskell.org/trac/ghc/ticket/13945 This commit upgrades the unpacked bootstrap GHC version, so that we can build newer versions of GHC even if the store is on NFS.
176 lines
6.8 KiB
Nix
176 lines
6.8 KiB
Nix
{ buildPackages, pkgs
|
|
, newScope
|
|
}:
|
|
|
|
let
|
|
# These are attributes in compiler and packages that don't support integer-simple.
|
|
integerSimpleExcludes = [
|
|
"ghc822Binary"
|
|
"ghc844"
|
|
"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 = {
|
|
|
|
ghc822Binary = callPackage ../development/compilers/ghc/8.2.2-binary.nix { };
|
|
|
|
ghc822 = callPackage ../development/compilers/ghc/8.2.2.nix {
|
|
bootPkgs = packages.ghc822Binary;
|
|
inherit (buildPackages.python3Packages) sphinx;
|
|
buildLlvmPackages = buildPackages.llvmPackages_39;
|
|
llvmPackages = pkgs.llvmPackages_39;
|
|
};
|
|
ghc844 = callPackage ../development/compilers/ghc/8.4.4.nix {
|
|
bootPkgs = packages.ghc822Binary;
|
|
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;
|
|
};
|
|
ghc862 = callPackage ../development/compilers/ghc/8.6.2.nix {
|
|
bootPkgs = packages.ghc822;
|
|
buildLlvmPackages = buildPackages.llvmPackages_6;
|
|
llvmPackages = pkgs.llvmPackages_6;
|
|
};
|
|
ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
|
|
bootPkgs = packages.ghc822Binary;
|
|
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 {
|
|
|
|
ghc822Binary = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc822Binary;
|
|
ghc = bh.compiler.ghc822Binary;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.x.nix { };
|
|
packageSetConfig = bootstrapPackageSet;
|
|
};
|
|
ghc822 = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc822;
|
|
ghc = bh.compiler.ghc822;
|
|
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.2.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 { };
|
|
};
|
|
ghc862 = callPackage ../development/haskell-modules {
|
|
buildHaskellPackages = bh.packages.ghc862;
|
|
ghc = bh.compiler.ghc862;
|
|
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;
|
|
};
|
|
});
|
|
|
|
};
|
|
}
|