nixpkgs/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix
Wolfgang Walther a4e47204ab
haskellPackages: use warnIf instead of assert
Contrary to intuition, an assert will **not** fail CI's Eval workflow.
Instead, the package will be hidden from Eval. A warning will be
evaluated - and then cause Eval to fail.

Also, all warnings are printed, before Eval fails. Thus we can see at
one glance which packages need to be checked and don't need to iterate.
2025-06-02 19:21:13 +02:00

207 lines
6.6 KiB
Nix

{ pkgs, haskellLib }:
self: super:
with haskellLib;
let
inherit (pkgs) lib;
warnAfterVersion =
ver: pkg:
lib.warnIf (lib.versionOlder ver
super.${pkg.pname}.version
) "override for haskell.packages.ghc96.${pkg.pname} may no longer be needed" pkg;
in
{
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;
filepath = null;
ghc-bignum = null;
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-heap = null;
ghc-prim = null;
ghci = null;
haskeline = null;
hpc = null;
integer-gmp = null;
libiserv = null;
mtl = null;
parsec = null;
pretty = null;
process = null;
rts = null;
stm = null;
system-cxx-std-lib = null;
template-haskell = null;
# terminfo is not built if GHC is a cross compiler
terminfo =
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null
else
doDistribute self.terminfo_0_4_1_7;
text = null;
time = null;
transformers = null;
unix = null;
xhtml = null;
# Becomes a core package in GHC >= 9.8
semaphore-compat = doDistribute self.semaphore-compat_1_0_0;
# Needs base-orphans for GHC < 9.8 / base < 4.19
some = addBuildDepend self.base-orphans super.some;
#
# Version deviations from Stackage LTS
#
# Too strict upper bound on template-haskell
# https://github.com/mokus0/th-extras/pull/21
th-extras = doJailbreak super.th-extras;
# not in Stackage, needs to match ghc-lib
# since expression is generated for 9.8, ghc-lib dep needs to be added manually
ghc-tags = doDistribute (addBuildDepends [ self.ghc-lib ] self.ghc-tags_1_8);
#
# Too strict bounds without upstream fix
#
# Forbids transformers >= 0.6
quickcheck-classes-base = doJailbreak super.quickcheck-classes-base;
# https://github.com/Gabriella439/Haskell-Break-Library/pull/3
break = doJailbreak super.break;
# Forbids mtl >= 2.3
ChasingBottoms = doJailbreak super.ChasingBottoms;
# Forbids base >= 4.18
cabal-install-solver = doJailbreak super.cabal-install-solver;
cabal-install = doJailbreak super.cabal-install;
# Forbids base >= 4.18, fix proposed: https://github.com/sjakobi/newtype-generics/pull/25
newtype-generics = warnAfterVersion "0.6.2" (doJailbreak super.newtype-generics);
# Jailbreaks for servant <0.20
servant-lucid = doJailbreak super.servant-lucid;
stm-containers = dontCheck super.stm-containers;
regex-tdfa = dontCheck super.regex-tdfa;
hiedb = dontCheck super.hiedb;
retrie = dontCheck super.retrie;
# https://github.com/kowainik/relude/issues/436
relude = dontCheck (doJailbreak super.relude);
inherit (pkgs.lib.mapAttrs (_: doJailbreak) super)
ghc-trace-events
gi-cairo-connector # mtl <2.3
ghc-prof # base <4.18
env-guard # doctest <0.21
package-version # doctest <0.21, tasty-hedgehog <1.4
;
# Pending text-2.0 support https://github.com/gtk2hs/gtk2hs/issues/327
gtk = doJailbreak super.gtk;
# 2023-12-23: It needs this to build under ghc-9.6.3.
# A factor of 100 is insufficient, 200 seems seems to work.
hip = appendConfigureFlag "--ghc-options=-fsimpl-tick-factor=200" super.hip;
# This can be removed once https://github.com/typeclasses/ascii-predicates/pull/1
# is merged and in a release that's being tracked.
ascii-predicates = appendPatch (pkgs.fetchpatch {
url = "https://github.com/typeclasses/ascii-predicates/commit/2e6d9ed45987a8566f3a77eedf7836055c076d1a.patch";
name = "ascii-predicates-pull-1.patch";
relative = "ascii-predicates";
sha256 = "sha256-4JguQFZNRQpjZThLrAo13jNeypvLfqFp6o7c1bnkmZo=";
}) super.ascii-predicates;
# This can be removed once https://github.com/typeclasses/ascii-numbers/pull/1
# is merged and in a release that's being tracked.
ascii-numbers = appendPatch (pkgs.fetchpatch {
url = "https://github.com/typeclasses/ascii-numbers/commit/e9474ad91bc997891f1a46afd5d0bdf9b9f7d768.patch";
name = "ascii-numbers-pull-1.patch";
relative = "ascii-numbers";
sha256 = "sha256-buw1UeW57CFefEfqdDUraSyQ+H/NvCZOv6WF2ORiYQg=";
}) super.ascii-numbers;
# Tests require nothunks < 0.3 (conflicting with Stackage) for GHC < 9.8
aeson = dontCheck super.aeson;
# Apply patch from PR with mtl-2.3 fix.
ConfigFile = overrideCabal (drv: {
editedCabalFile = null;
buildDepends = drv.buildDepends or [ ] ++ [ self.HUnit ];
patches = [
(pkgs.fetchpatch {
# https://github.com/jgoerzen/configfile/pull/12
name = "ConfigFile-pr-12.patch";
url = "https://github.com/jgoerzen/configfile/compare/d0a2e654be0b73eadbf2a50661d00574ad7b6f87...83ee30b43f74d2b6781269072cf5ed0f0e00012f.patch";
sha256 = "sha256-b7u9GiIAd2xpOrM0MfILHNb6Nt7070lNRIadn2l3DfQ=";
})
];
}) super.ConfigFile;
# https://github.com/NixOS/nixpkgs/pull/367998#issuecomment-2598941240
libtorch-ffi-helper = unmarkBroken (doDistribute super.libtorch-ffi-helper);
# Compatibility with core libs of GHC 9.6
# Jailbreak to lift bound on time
kqueue = doJailbreak (
appendPatches [
(pkgs.fetchpatch {
name = "kqueue-ghc-9.6.patch";
url = "https://github.com/hesselink/kqueue/pull/10/commits/a2735e807d761410e776482ec04515d9cf76a7f5.patch";
sha256 = "18rilz4nrwcmlvll3acjx2lp7s129pviggb8fy3hdb0z34ls5j84";
excludes = [ ".gitignore" ];
})
] super.kqueue
);
# This runs into the following GHC bug currently affecting 9.6.* and 9.8.* as
# well as 9.10.1: https://gitlab.haskell.org/ghc/ghc/-/issues/24432
inherit
(lib.mapAttrs (
_:
overrideCabal (drv: {
badPlatforms = drv.badPlatforms or [ ] ++ [ "aarch64-linux" ];
})
) super)
mueval
lambdabot
lambdabot-haskell-plugins
;
singletons-base = dontCheck super.singletons-base;
# A given major version of ghc-exactprint only supports one version of GHC.
ghc-exactprint = addBuildDepend self.extra super.ghc-exactprint_1_7_1_0;
}
# super.ghc is required to break infinite recursion as Nix is strict in the attrNames
//
lib.optionalAttrs (pkgs.stdenv.hostPlatform.isAarch64 && lib.versionOlder super.ghc.version "9.6.4")
{
# The NCG backend for aarch64 generates invalid jumps in some situations,
# the workaround on 9.6 is to revert to the LLVM backend (which is used
# for these sorts of situations even on 9.2 and 9.4).
# https://gitlab.haskell.org/ghc/ghc/-/issues/23746#note_525318
inherit (lib.mapAttrs (_: self.forceLlvmCodegenBackend) super)
tls
mmark
;
}