diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix index 98a8cb4d49b8..612bd27798b2 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix @@ -1,5 +1,7 @@ { pkgs, haskellLib }: +with haskellLib; + let inherit (pkgs) lib; @@ -14,7 +16,7 @@ self: super: { base = null; binary = null; bytestring = null; - Cabal = null; + Cabal = doDistribute self.Cabal_3_12_1_0; # GHC ships with Cabal 3.12.0.0, but there is no corresponding cabal-install Cabal-syntax = null; containers = null; deepseq = null; @@ -46,7 +48,7 @@ self: super: { 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; + terminfo = if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then null else doDistribute self.terminfo_0_4_1_6; text = null; time = null; transformers = null; @@ -55,4 +57,67 @@ self: super: { # https://gitlab.haskell.org/ghc/ghc/-/issues/23392 gi-gtk = disableParallelBuilding super.gi-gtk; + + # + # Version upgrades + # + + # Upgrade to accommodate new core library versions, where the authors have + # already made the relevant changes. + aeson = doDistribute self.aeson_2_2_3_0; + apply-refact = doDistribute self.apply-refact_0_14_0_0; + attoparsec-aeson = doDistribute self.attoparsec-aeson_2_2_2_0; + extensions = doDistribute self.extensions_0_1_0_2; + hashable = doDistribute self.hashable_1_4_7_0; + integer-conversion = doDistribute self.integer-conversion_0_1_1; + ghc-lib-parser = doDistribute self.ghc-lib-parser_9_10_1_20240511; + lens = doDistribute self.lens_5_3_2; + lukko = doDistribute self.lukko_0_1_2; + primitive = doDistribute (dontCheck self.primitive_0_9_0_0); # tests introduce a recursive dependency via hspec + quickcheck-instances = doDistribute self.quickcheck-instances_0_3_31; + rebase = doDistribute self.rebase_1_21_1; + rerebase = doDistribute self.rerebase_1_21_1; + scientific = doDistribute self.scientific_0_3_8_0; + semirings = doDistribute self.semirings_0_7; + th-abstraction = doDistribute self.th-abstraction_0_7_0_0; + uuid-types = doDistribute self.uuid-types_1_0_6; + + # A given major version of ghc-exactprint only supports one version of GHC. + ghc-exactprint = doDistribute self.ghc-exactprint_1_10_0_0; + ghc-exactprint_1_10_0_0 = addBuildDepends [ + self.Diff + self.extra + self.ghc-paths + self.silently + self.syb + self.HUnit + ] super.ghc-exactprint_1_10_0_0; + + # + # Jailbreaks + # + base64 = doJailbreak super.base64; # base <4.20 + commutative-semigroups = doJailbreak super.commutative-semigroups; # base <4.20 + floskell = doJailbreak super.floskell; # base <4.20 + lucid = doJailbreak super.lucid; # base <4.20 + tar = doJailbreak super.tar; # base <4.20 + tree-diff = doJailbreak super.tree-diff; # base <4.20 + time-compat = doJailbreak super.time-compat; # base <4.20 + + bitvec = doJailbreak super.bitvec; # primitive <0.9 + + apply-refact_0_14_0_0 = doJailbreak super.apply-refact_0_14_0_0; # ghc-exactprint <1.9 + retrie = doJailbreak super.retrie; # base <4.20, ghc<9.9, ghc-exactprint<1.9 + + hashable_1_4_7_0 = doJailbreak super.hashable_1_4_7_0; # relax bounds for QuickCheck, tasty, and tasty-quickcheck + hashable_1_5_0_0 = doJailbreak super.hashable_1_5_0_0; # relax bounds for QuickCheck, tasty, and tasty-quickcheck + + # + # Test suite issues + # + call-stack = dontCheck super.call-stack; # expects the package to be named "main", but we generate a name + lifted-base = dontCheck super.lifted-base; # doesn't compile with transformers ==0.6.* + lukko_0_1_2 = dontCheck super.lukko_0_1_2; # doesn't compile with tasty ==1.4.* + resolv = dontCheck super.resolv; # doesn't compile with filepath ==1.5.* + primitive-unlifted = dontCheck super.primitive-unlifted; # doesn't compile with primitive ==0.9.* } diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml index a51a50abe0bd..02b7ad3de004 100644 --- a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml +++ b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml @@ -76,6 +76,7 @@ extra-packages: - haddock-api == 2.23.* # required on GHC < 8.10.x - haddock-library ==1.7.* # required by stylish-cabal-0.5.0.0 - happy == 1.19.12 # for ghcjs + - hashable == 1.4.7.0 # allows GHC 9.10 - hinotify == 0.3.9 # for xmonad-0.26: https://github.com/kolmodin/hinotify/issues/29 - ansi-wl-pprint >= 0.6 && < 0.7 # 2024-03-23: required for ghcjs - hlint == 3.2.8 # 2022-09-21: needed for hls on ghc 8.8 diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix index 44ca3cf8bbac..2688772a0570 100644 --- a/pkgs/development/haskell-modules/hackage-packages.nix +++ b/pkgs/development/haskell-modules/hackage-packages.nix @@ -139269,6 +139269,27 @@ self: { license = lib.licenses.bsd3; }) {}; + "hashable_1_4_7_0" = callPackage + ({ mkDerivation, base, bytestring, containers, deepseq, filepath + , ghc-bignum, ghc-prim, HUnit, os-string, primitive, QuickCheck + , random, tasty, tasty-hunit, tasty-quickcheck, text, unix + }: + mkDerivation { + pname = "hashable"; + version = "1.4.7.0"; + sha256 = "1np8y26pbwhfg136shp8w52yc7a7q35j9icf2h6q623s0b4y9biv"; + libraryHaskellDepends = [ + base bytestring containers deepseq filepath ghc-bignum ghc-prim + os-string text + ]; + testHaskellDepends = [ + base bytestring filepath ghc-prim HUnit os-string primitive + QuickCheck random tasty tasty-hunit tasty-quickcheck text unix + ]; + description = "A class for types that can be converted to a hash value"; + license = lib.licenses.bsd3; + }) {}; + "hashable_1_5_0_0" = callPackage ({ mkDerivation, base, bytestring, containers, deepseq, filepath , ghc-bignum, ghc-prim, HUnit, os-string, primitive, QuickCheck