haskellPackages: cherry picks from haskell-updates (#360499)

This commit is contained in:
Vladimír Čunát
2024-11-30 19:28:29 +01:00
6 changed files with 116 additions and 29 deletions
@@ -169,10 +169,11 @@
patches =
let
# Disable haddock generating pretty source listings to stay under 3GB on aarch64-linux
enableHyperlinkedSource =
lib.versionAtLeast version "9.8" ||
!(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux);
# Disable haddock generating pretty source listings to stay under 3GB on aarch64-linux
!(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux)
# 9.8 and 9.10 don't run into this problem for some reason
|| (lib.versionAtLeast version "9.8" && lib.versionOlder version "9.11");
in
[
# Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129
@@ -207,12 +208,16 @@
then ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
else ./Cabal-3.12-paths-fix-cycle-aarch64-darwin.patch)
]
# Prevents passing --hyperlinked-source to haddock. This is a custom
# workaround as we wait for this to be configurable via userSettings or
# similar. https://gitlab.haskell.org/ghc/ghc/-/issues/23625
# Prevents passing --hyperlinked-source to haddock. Note that this can
# be configured via a user defined flavour now. Unfortunately, it is
# impossible to import an existing flavour in UserSettings, so patching
# the defaults is actually simpler and less maintenance intensive
# compared to keeping an entire flavour definition in sync with upstream
# manually. See also https://gitlab.haskell.org/ghc/ghc/-/issues/23625
++ lib.optionals (!enableHyperlinkedSource) [
# TODO(@sternenseemann): Doesn't apply for GHC >= 9.8
../../tools/haskell/hadrian/disable-hyperlinked-source.patch
(if lib.versionOlder version "9.8"
then ../../tools/haskell/hadrian/disable-hyperlinked-source-pre-9.8.patch
else ../../tools/haskell/hadrian/disable-hyperlinked-source-extra-args.patch)
]
# Incorrect bounds on Cabal in hadrian
# https://gitlab.haskell.org/ghc/ghc/-/issues/24100
@@ -102,20 +102,33 @@ self: super: {
#######################################
# All jailbreaks in this section due to: https://github.com/haskell/haskell-language-server/pull/4316#discussion_r1667684895
haskell-language-server = doJailbreak (dontCheck (super.haskell-language-server.overrideScope (lself: lsuper: {
# For most ghc versions, we overrideScope Cabal in the configuration-ghc-???.nix,
# because some packages, like ormolu, need a newer Cabal version.
# ghc-paths is special because it depends on Cabal for building
# its Setup.hs, and therefor declares a Cabal dependency, but does
# not actually use it as a build dependency.
# That means ghc-paths can just use the ghc included Cabal version,
# without causing package-db incoherence and we should do that because
# otherwise we have different versions of ghc-paths
# around which have the same abi-hash, which can lead to confusions and conflicts.
ghc-paths = lsuper.ghc-paths.override { Cabal = null; };
})));
haskell-language-server =
lib.pipe
(super.haskell-language-server.overrideScope (lself: lsuper: {
# For most ghc versions, we overrideScope Cabal in the configuration-ghc-???.nix,
# because some packages, like ormolu, need a newer Cabal version.
# ghc-paths is special because it depends on Cabal for building
# its Setup.hs, and therefor declares a Cabal dependency, but does
# not actually use it as a build dependency.
# That means ghc-paths can just use the ghc included Cabal version,
# without causing package-db incoherence and we should do that because
# otherwise we have different versions of ghc-paths
# around which have the same abi-hash, which can lead to confusions and conflicts.
ghc-paths = lsuper.ghc-paths.override { Cabal = null; };
}))
[
doJailbreak
dontCheck
];
hls-plugin-api = doJailbreak super.hls-plugin-api;
ghcide = doJailbreak super.ghcide;
ghcide = doJailbreak (appendPatch (pkgs.fetchpatch {
name = "ghcide-ghc-9.8.3.patch";
url = "https://github.com/haskell/haskell-language-server/commit/6d0a6f220226fe6c1cb5b6533177deb55e755b0b.patch";
sha256 = "1jwxldar9qzkg2z6vsx8f2yih3vkf4yjk9p3mryv0azn929qn3h1";
stripLen = 1;
excludes = [ "cabal.project" ];
}) super.ghcide);
# For -f-auto see cabal.project in haskell-language-server.
ghc-lib-parser-ex = addBuildDepend self.ghc-lib-parser (disableCabalFlag "auto" super.ghc-lib-parser-ex);
@@ -0,0 +1,61 @@
{ pkgs, haskellLib }:
let
inherit (pkgs) lib;
in
self: super: {
llvmPackages = lib.dontRecurseIntoAttrs self.ghc.llvmPackages;
# Disable GHC core libraries
array = null;
base = null;
binary = null;
bytestring = null;
Cabal = null;
Cabal-syntax = null;
containers = null;
deepseq = null;
directory = null;
exceptions = null;
file-io = null;
filepath = null;
ghc-bignum = null;
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-experimental = null;
ghc-heap = null;
ghc-internal = null;
ghc-platform = null;
ghc-prim = null;
ghc-toolchain = null;
ghci = null;
haddock-api = null;
haddock-library = null;
haskeline = null;
hpc = null;
integer-gmp = null;
mtl = null;
os-string = null;
parsec = null;
pretty = null;
process = null;
rts = null;
semaphore-compat = null;
stm = null;
system-cxx-std-lib = null;
template-haskell = null;
# GHC only builds terminfo if it is a native compiler
terminfo =
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null
else
haskellLib.doDistribute self.terminfo_0_4_1_6;
text = null;
time = null;
transformers = null;
unix = null;
xhtml = null;
}
@@ -0,0 +1,13 @@
diff --git a/hadrian/src/Settings/Default.hs b/hadrian/src/Settings/Default.hs
index 0b743788ec..a7ff841609 100644
--- a/hadrian/src/Settings/Default.hs
+++ b/hadrian/src/Settings/Default.hs
@@ -249,7 +249,7 @@ defaultExtraArgs =
defaultHaddockExtraArgs :: Args
defaultHaddockExtraArgs = builder (Haddock BuildPackage) ?
- mconcat [ arg "--hyperlinked-source", arg "--hoogle", arg "--quickjump" ]
+ mconcat [ arg "--hoogle", arg "--quickjump" ]
-- | Default source arguments, e.g. optimisation settings.
+3 -8
View File
@@ -429,13 +429,8 @@ in {
ghc910 = compiler.ghc9101;
ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
bootPkgs =
# For GHC 9.6 no armv7l bindists are available.
if stdenv.buildPlatform.isAarch32 then
bb.packages.ghc963
else if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then
bb.packages.ghc963
else
bb.packages.ghc963Binary;
# No suitable bindist packaged yet
bb.packages.ghc9101;
inherit (buildPackages.python3Packages) sphinx;
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
@@ -604,7 +599,7 @@ in {
ghcHEAD = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghcHEAD;
ghc = bh.compiler.ghcHEAD;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.12.x.nix { };
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.14.x.nix { };
};
ghcjs = packages.ghcjs810;