forked from mirrors/nixpkgs
da60f2dc9c
Initial port of our GHC Nix expressions to the new hadrian build system, as it has become required after 9.4. Unfortunately there are some regressions affecting us, namely the inability to install a GHC cross-compiler at the moment (see issue linked in relevant error message). This means that a lot of specific configuration snippets for cross-platforms and static compilation have been ported from make speculatively, as we are unable to test them for the moment.
42 lines
1.3 KiB
Nix
42 lines
1.3 KiB
Nix
{ # GHC source tree to build hadrian from
|
|
ghcSrc ? null, ghcVersion ? null
|
|
, mkDerivation, base, bytestring, Cabal, containers, directory
|
|
, extra, filepath, lib, mtl, parsec, shake, text, transformers
|
|
, unordered-containers
|
|
, userSettings ? null
|
|
, writeText
|
|
}:
|
|
|
|
if ghcSrc == null || ghcVersion == null
|
|
then throw "hadrian: need to specify ghcSrc and ghcVersion arguments manually"
|
|
else
|
|
|
|
mkDerivation {
|
|
pname = "hadrian";
|
|
version = ghcVersion;
|
|
src = ghcSrc;
|
|
postUnpack = ''
|
|
sourceRoot="$sourceRoot/hadrian"
|
|
'';
|
|
# Overwrite UserSettings.hs with a provided custom one
|
|
postPatch = lib.optionalString (userSettings != null) ''
|
|
install -m644 "${writeText "UserSettings.hs" userSettings}" src/UserSettings.hs
|
|
'';
|
|
configureFlags = [
|
|
# avoid QuickCheck dep which needs shared libs / TH
|
|
"-f-selftest"
|
|
# Building hadrian with -O1 takes quite some time with little benefit.
|
|
# Additionally we need to recompile it on every change of UserSettings.hs.
|
|
# See https://gitlab.haskell.org/ghc/ghc/-/merge_requests/1190
|
|
"-O0"
|
|
];
|
|
isLibrary = false;
|
|
isExecutable = true;
|
|
executableHaskellDepends = [
|
|
base bytestring Cabal containers directory extra filepath mtl
|
|
parsec shake text transformers unordered-containers
|
|
];
|
|
description = "GHC build system";
|
|
license = lib.licenses.bsd3;
|
|
}
|