We can safely drop the upper bound for the jailbreak workaround for
directory >= 1.3.9.0 since all GHCs will probably have this constraint
going forward.
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.
Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.
A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.
This commit was automatically created and can be verified using
nix-build https://github.com/infinisil/treewide-nixpkgs-reformat-script/archive/a08b3a4d199c6124ac5b36a889d9099b4383463f.tar.gz \
--argstr baseRev b32a094368
result/bin/apply-formatting $NIXPKGS_PATH
Disable enableHyperlinkedSource for GHC >= 9.11 to keep GHC under the
3GB Hydra output limit. Note that we use a patch as opposed to the new
extraArgs interfaces for the reasons given in the comments added in this
commit.
(cherry picked from commit ec3ec6038a)
Unfortunately, it won't be possible to build 9.12 nor, in all
likelihood, 9.14 with Cabal 3.12 or 3.14 (which are shipped with GHC 9.8
and 9.10, respectively) due to
<https://gitlab.haskell.org/ghc/ghc/-/commit/145a6477854d4003a07573d5e7ffa0c9a64ae29c>.
Since this has been confirmed by upstream, we'll have to bite the bullet
and adjust our hadrian bootstrapping logic to deal with that.
Fortunately, we at least have gotten a hackage released version of Cabal
3.14, so we don't need to bootstrap from an in tree Cabal version.
This makes the hadrian expressions much simpler as we no longer need to
thread through extra arguments for special workarounds.
common-hadrian.nix decides in one place which patches we need and
directly applies them to the source used to build everything.
Bootsrapping with 9.6 doesn't work with 9.8.2 upstream due to erroneous
bounds on Cabal (<https://gitlab.haskell.org/ghc/ghc/-/issues/24100>)
which was planned to be addressed in 9.8.2, but apparently hasn't been,
so we need to extend the range for the workaround patch.
That GHC version should be allowed due to bootstrapping support windows
GHC HQ promises, but isn't possible in practice due to an overly strict
constraint on Cabal in hadrian.
This saves just enough space on aarch64-linux so that the hadrian built
GHCs are under the 3GB Hydra output limit:
| compiler | before | after | Δ |
|----------|------------|------------|------------|
| ghc962 | 3241234736 | 2810740560 | -430494176 |
| ghcHEAD | 3341288328 | 2902760872 | -438527456 |
The total output size can be calculated using (don't forget to use
aarch64-linux):
```
nix-build -A <compiler> | xargs nix path-info -s | awk '{ s += $2 }; END { print s }'
```
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.