diff options
Diffstat (limited to 'pkgs/top-level/haskell-defaults.nix')
-rw-r--r-- | pkgs/top-level/haskell-defaults.nix | 402 |
1 files changed, 163 insertions, 239 deletions
diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix index d2cfbf38f986..20f695a0d236 100644 --- a/pkgs/top-level/haskell-defaults.nix +++ b/pkgs/top-level/haskell-defaults.nix @@ -8,161 +8,152 @@ # The actual Haskell packages are composed in haskell-packages.nix. There is # more documentation in there. -{ makeOverridable, lowPrio, stdenv, pkgs, newScope, config, callPackage } : rec { - - # Preferences functions. - # - # Change these if you want to change the default versions of packages being used - # for a particular GHC version. - - ghcHEADPrefs = - self : self.haskellPlatformArgs_future self // { - haskellPlatform = null; - extensibleExceptions = self.extensibleExceptions_0_1_1_4; - }; - - ghc763Prefs = - self : self.haskellPlatformArgs_2013_2_0_0 self // { - haskellPlatform = self.haskellPlatform_2013_2_0_0; - extensibleExceptions = self.extensibleExceptions_0_1_1_4; - }; - - ghc742Prefs = - self : self.haskellPlatformArgs_2012_4_0_0 self // { - haskellPlatform = self.haskellPlatform_2012_4_0_0; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; }; - bmp = self.bmp_1_2_2_1; - }; - - ghc741Prefs = - self : self.haskellPlatformArgs_2012_2_0_0 self // { - haskellPlatform = self.haskellPlatform_2012_2_0_0; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; }; - bmp = self.bmp_1_2_2_1; - }; - - ghc722Prefs = - self : self.haskellPlatformArgs_2012_2_0_0 self // { - haskellPlatform = self.haskellPlatform_2012_2_0_0; - deepseq = self.deepseq_1_3_0_1; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; }; - bmp = self.bmp_1_2_2_1; - }; - - ghc721Prefs = ghc722Prefs; - - ghc704Prefs = - self : self.haskellPlatformArgs_2011_4_0_0 self // { - haskellPlatform = self.haskellPlatform_2011_4_0_0; - cabalInstall_0_14_0 = self.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; }; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; }; - monadPar = self.monadPar_0_1_0_3; - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; - prettyShow = self.prettyShow_1_2; - bmp = self.bmp_1_2_2_1; - }; - - ghc703Prefs = - self : self.haskellPlatformArgs_2011_2_0_1 self // { - haskellPlatform = self.haskellPlatform_2011_2_0_1; - cabalInstall_0_14_0 = self.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; zlib = self.zlib_0_5_3_3; }; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; zlib = self.zlib_0_5_3_3; }; - monadPar = self.monadPar_0_1_0_3; - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; - prettyShow = self.prettyShow_1_2; - bmp = self.bmp_1_2_2_1; - }; - - ghc702Prefs = ghc701Prefs; - - ghc701Prefs = - self : self.haskellPlatformArgs_2011_2_0_0 self // { - haskellPlatform = self.haskellPlatform_2011_2_0_0; - cabalInstall_0_14_0 = self.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; zlib = self.zlib_0_5_3_3; }; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; zlib = self.zlib_0_5_3_3; }; - monadPar = self.monadPar_0_1_0_3; - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; - prettyShow = self.prettyShow_1_2; - bmp = self.bmp_1_2_2_1; - }; - - ghc6123Prefs = ghc6122Prefs; - - ghc6122Prefs = - self : self.haskellPlatformArgs_2010_2_0_0 self // { - haskellPlatform = self.haskellPlatform_2010_2_0_0; - mtl1 = self.mtl_1_1_0_2; - monadPar = self.monadPar_0_1_0_3; - deepseq = self.deepseq_1_1_0_2; - # deviating from Haskell platform here, to make some packages (notably statistics) compile - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; - cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; - bmp = self.bmp_1_2_2_1; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { - Cabal = self.Cabal_1_16_0_3; zlib = self.zlib_0_5_3_3; - mtl = self.mtl_2_1_2; - HTTP = self.HTTP_4000_1_1.override { mtl = self.mtl_2_1_2; }; +{ makeOverridable, lowPrio, hiPrio, stdenv, pkgs, newScope, config, callPackage } : rec { + + # haskell-packages.nix provides the latest possible version of every package, + # and this file overrides those version choices per compiler when appropriate. + # Older compilers inherit the overrides from newer ones. + + ghcHEADPrefs = self : super : super // { + cabalInstall_1_20_0_3 = super.cabalInstall_1_20_0_3.override { Cabal = null; }; + mtl = self.mtl_2_2_1; + transformersCompat = super.transformersCompat_0_3_3; + }; + + ghc783Prefs = self : super : ghcHEADPrefs self super // { + cabalInstall_1_20_0_3 = super.cabalInstall_1_20_0_3.override { Cabal = self.Cabal_1_20_0_2; }; + codex = super.codex.override { hackageDb = super.hackageDb.override { Cabal = self.Cabal_1_20_0_2; }; }; + mtl = self.mtl_2_1_2; + }; + + ghc763Prefs = self : super : ghc783Prefs self super // { + aeson = self.aeson_0_7_0_4; + ariadne = super.ariadne.override { + haskellNames = self.haskellNames.override { + haskellPackages = self.haskellPackages.override { Cabal = self.Cabal_1_18_1_3; }; }; }; - - ghc6121Prefs = - self : self.haskellPlatformArgs_2010_1_0_0 self // { - haskellPlatform = self.haskellPlatform_2010_1_0_0; - mtl1 = self.mtl_1_1_0_2; - extensibleExceptions = self.extensibleExceptions_0_1_1_0; - deepseq = self.deepseq_1_1_0_2; - monadPar = self.monadPar_0_1_0_3; - # deviating from Haskell platform here, to make some packages (notably statistics) compile - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; - cabal2nix = self.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; }; - bmp = self.bmp_1_2_2_1; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { - Cabal = self.Cabal_1_16_0_3; - zlib = self.zlib_0_5_3_3; - mtl = self.mtl_2_1_2; - HTTP = self.HTTP_4000_1_1.override { mtl = self.mtl_2_1_2; }; - }; - }; - - ghc6104Prefs = - self : self.haskellPlatformArgs_2009_2_0_2 self // { - haskellPlatform = self.haskellPlatform_2009_2_0_2; - mtl = self.mtl_1_1_0_2; - mtl1 = self.mtl_1_1_0_2; - extensibleExceptions = self.extensibleExceptions_0_1_1_0; - text = self.text_0_11_0_6; - deepseq = self.deepseq_1_1_0_2; - monadPar = self.monadPar_0_1_0_3; - # deviating from Haskell platform here, to make some packages (notably statistics) compile - jailbreakCabal = self.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; }; - bmp = self.bmp_1_2_2_1; - binary = self.binary_0_6_0_0; - cabalInstall_1_16_0_2 = self.cabalInstall_1_16_0_2.override { - Cabal = self.Cabal_1_16_0_3; - zlib = self.zlib_0_5_3_3; - mtl = self.mtl_2_1_2; - HTTP = self.HTTP_4000_1_1.override { mtl = self.mtl_2_1_2; }; + attoparsec = self.attoparsec_0_11_3_1; + binaryConduit = super.binaryConduit.override { binary = self.binary_0_7_2_1; }; + bson = super.bson.override { dataBinaryIeee754 = self.dataBinaryIeee754.override { binary = self.binary_0_7_2_1; }; }; + criterion = super.criterion.override { + statistics = self.statistics.override { + vectorBinaryInstances = self.vectorBinaryInstances.override { binary = self.binary_0_7_2_1; }; }; }; + Elm = super.Elm.override { pandoc = self.pandoc.override { zipArchive = self.zipArchive.override { binary = self.binary_0_7_2_1; }; }; }; + gloss = null; # requires base >= 4.7 + haddock = self.haddock_2_13_2; + modularArithmetic = null; # requires base >= 4.7 + pipesBinary = super.pipesBinary.override { binary = self.binary_0_7_2_1; }; + rank1dynamic = super.rank1dynamic.override { binary = self.binary_0_7_2_1; }; + distributedStatic = super.distributedStatic.override { binary = self.binary_0_7_2_1; }; + networkTransport = super.networkTransport.override { binary = self.binary_0_7_2_1; }; + distributedProcess = super.distributedProcess.override { binary = self.binary_0_7_2_1; }; + scientific = self.scientific_0_2_0_2; + singletons = null; # requires base >= 4.7 + transformers = self.transformers_0_3_0_0; # core packagen in ghc > 7.6.x + zipArchive = super.zipArchive_0_2_2_1; # works without binary 0.7.x + }; + + ghc742Prefs = self : super : ghc763Prefs self super // { + aeson = self.aeson_0_7_0_4.override { blazeBuilder = self.blazeBuilder; }; + extensibleExceptions = null; # core package in ghc <= 7.4.x + hackageDb = super.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; + haddock = self.haddock_2_11_0; + haskeline = super.haskeline.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + shelly = self.shelly_0_15_4_1; + }; + + ghc722Prefs = self : super : ghc742Prefs self super // { + caseInsensitive = self.caseInsensitive_1_0_0_1; + deepseq = self.deepseq_1_3_0_2; + DrIFT = null; # doesn't compile with old GHC versions + haddock = self.haddock_2_9_4; + syb = self.syb_0_4_0; + }; + + ghc704Prefs = self : super : ghc722Prefs self super // { + binary = self.binary_0_7_2_1; # core package in ghc >= 7.2.2 + caseInsensitive = super.caseInsensitive; # undo the override from ghc 7.2.2 + haddock = self.haddock_2_9_2.override { alex = self.alex_2_3_5; }; + HsSyck = self.HsSyck_0_51; + jailbreakCabal = super.jailbreakCabal.override { Cabal = self.Cabal_1_16_0_3; }; + random = null; # core package in ghc <= 7.0.x + }; + + ghc6123Prefs = self : super : ghc704Prefs self super // { + alex = self.alex_3_1_3; + async = self.async_2_0_1_4; + attoparsec = self.attoparsec_0_10_4_0; + cabalInstall = self.cabalInstall_1_16_0_2; + cgi = self.cgi_3001_1_7_5; + deepseq = self.deepseq_1_2_0_1; + dlist = super.dlist.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + exceptions = null; # none of our versions compile + haddock = self.haddock_2_7_2; + logict = super.logict.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + monadPar = self.monadPar_0_1_0_3; + nats = null; # none of our versions compile + parallel = self.parallel_3_2_0_3; + primitive = self.primitive_0_5_0_1; + reflection = super.reflection.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + scientific = null; # none of our versions compile + split = self.split_0_1_4_3; + stm = self.stm_2_4_2; + syb = null; # core package in ghc < 7 + tagged = super.tagged.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + temporary = null; # none of our versions compile + vectorAlgorithms = super.vectorAlgorithms.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + }; + + ghc6104Prefs = self : super : ghc6123Prefs self super // { + alex = self.alex_2_3_5.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + async = null; # none of our versions compile + attoparsec = null; # none of our versions compile + binary = super.binary_0_7_2_1.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + caseInsensitive = super.caseInsensitive.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + GLUT = self.GLUT_2_2_2_1; + haddock = self.haddock_2_4_2; + happy = super.happy.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + hashable = super.hashable.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + hashtables = super.hashtables.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + HTTP = super.HTTP.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + HUnit = super.HUnit.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + network = super.network_2_2_1_7.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + OpenGLRaw = self.OpenGLRaw_1_3_0_0; + OpenGL = self.OpenGL_2_6_0_1; + QuickCheck = super.QuickCheck.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + stm = self.stm_2_4_2.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + systemFilepath = super.systemFilepath.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + systemFileio = super.systemFileio.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + tar = super.tar.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + text = self.text_0_11_2_3.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + time = self.time_1_1_2_4.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + zlib = super.zlib.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; }; + }; # Abstraction for Haskell packages collections packagesFun = makeOverridable ({ ghcPath , ghcBinary ? ghc6101Binary , prefFun - , extraPrefs ? (x : {}) + , extension ? (self : super : {}) , profExplicit ? false, profDefault ? false , modifyPrio ? lowPrio + , extraArgs ? {} } : - import ./haskell-packages.nix { - inherit pkgs newScope modifyPrio; - prefFun = self : super : self // prefFun super // extraPrefs super; - # prefFun = self : super : self; - enableLibraryProfiling = - if profExplicit then profDefault - else config.cabal.libraryProfiling or profDefault; - ghc = callPackage ghcPath { ghc = ghcBinary; }; - }); + let haskellPackagesClass = import ./haskell-packages.nix { + inherit pkgs newScope modifyPrio; + enableLibraryProfiling = + if profExplicit then profDefault + else config.cabal.libraryProfiling or profDefault; + ghc = callPackage ghcPath ({ ghc = ghcBinary; } // extraArgs); + }; + haskellPackagesPrefsClass = self : let super = haskellPackagesClass self; in super // prefFun self super; + haskellPackagesExtensionClass = self : let super = haskellPackagesPrefsClass self; in super // extension self super; + haskellPackages = haskellPackagesExtensionClass haskellPackages; + in haskellPackages); defaultVersionPrioFun = profDefault : @@ -172,7 +163,7 @@ packages = args : let r = packagesFun args; in r // { lowPrio = r.override { modifyPrio = lowPrio; }; - highPrio = r.override { modifyPrio = x : x; }; + highPrio = r.override { modifyPrio = hiPrio; }; noProfiling = r.override { profDefault = false; profExplicit = true; modifyPrio = defaultVersionPrioFun false; }; @@ -185,16 +176,6 @@ # # GHC binaries are around for bootstrapping purposes - # If we'd want to reactivate the 6.6 and 6.8 series of ghc, we'd - # need to reenable an old binary such as this. - /* - ghc642Binary = lowPrio (import ../development/compilers/ghc/6.4.2-binary.nix { - inherit fetchurl stdenv ncurses gmp; - readline = if stdenv.system == "i686-linux" then readline4 else readline5; - perl = perl58; - }); - */ - ghc6101Binary = lowPrio (callPackage ../development/compilers/ghc/6.10.1-binary.nix { gmp = pkgs.gmp4; }); @@ -223,68 +204,32 @@ # Here, we associate compiler versions with bootstrap compiler versions and # preference functions. - packages_ghc6104 = - packages { ghcPath = ../development/compilers/ghc/6.10.4.nix; - prefFun = ghc6104Prefs; - }; - - packages_ghc6121 = - packages { ghcPath = ../development/compilers/ghc/6.12.1.nix; - prefFun = ghc6121Prefs; - }; - - packages_ghc6122 = - packages { ghcPath = ../development/compilers/ghc/6.12.2.nix; - prefFun = ghc6122Prefs; - }; - - packages_ghc6123 = - packages { ghcPath = ../development/compilers/ghc/6.12.3.nix; - prefFun = ghc6123Prefs; - }; - - # Will never make it into a platform release, severe bugs; leave at lowPrio. - packages_ghc701 = - packages { ghcPath = ../development/compilers/ghc/7.0.1.nix; - prefFun = ghc701Prefs; - }; - - packages_ghc702 = - packages { ghcPath = ../development/compilers/ghc/7.0.2.nix; - prefFun = ghc702Prefs; + packages_ghcHEAD = + packages { ghcPath = ../development/compilers/ghc/head.nix; + ghcBinary = pkgs.haskellPackages.ghcPlain; + prefFun = ghcHEADPrefs; + extraArgs = { + happy = pkgs.haskellPackages.happy; + alex = pkgs.haskellPackages.alex; + }; }; - packages_ghc703 = - packages { ghcPath = ../development/compilers/ghc/7.0.3.nix; - prefFun = ghc703Prefs; + packages_ghc783 = + packages { ghcPath = ../development/compilers/ghc/7.8.3.nix; + ghcBinary = ghc742Binary; + prefFun = ghc783Prefs; }; - # The following items are a bit convoluted, but they serve the - # following purpose: - # - for the default version of GHC, both profiling and - # non-profiling versions should be built by Hydra -- - # therefore, the _no_profiling and _profiling calls; - # - however, if a user just upgrades a profile, then the - # cabal/libraryProfiling setting should be respected; i.e., - # the versions not matching the profiling config setting - # should have low priority -- therefore, the use of - # defaultVersionPrioFun; - # - it should be possible to select library versions that - # respect the config setting using the standard - # packages_ghc704 path -- therefore, the additional - # call in packages_ghc704, without recurseIntoAttrs, - # so that Hydra doesn't build these. - - packages_ghc704 = - packages { ghcPath = ../development/compilers/ghc/7.0.4.nix; - ghcBinary = ghc6101BinaryDarwin; - prefFun = ghc704Prefs; + packages_ghc763 = + packages { ghcPath = ../development/compilers/ghc/7.6.3.nix; + ghcBinary = ghc704Binary; + prefFun = ghc763Prefs; }; - packages_ghc721 = - packages { ghcPath = ../development/compilers/ghc/7.2.1.nix; + packages_ghc742 = + packages { ghcPath = ../development/compilers/ghc/7.4.2.nix; ghcBinary = ghc6121BinaryDarwin; - prefFun = ghc721Prefs; + prefFun = ghc742Prefs; }; packages_ghc722 = @@ -293,41 +238,20 @@ prefFun = ghc722Prefs; }; - packages_ghc741 = - packages { ghcPath = ../development/compilers/ghc/7.4.1.nix; - ghcBinary = ghc6121BinaryDarwin; - prefFun = ghc741Prefs; - }; - - packages_ghc742 = - packages { ghcPath = ../development/compilers/ghc/7.4.2.nix; - ghcBinary = ghc6121BinaryDarwin; - prefFun = ghc742Prefs; - }; - - packages_ghc761 = - packages { ghcPath = ../development/compilers/ghc/7.6.1.nix; - ghcBinary = ghc704Binary; - prefFun = ghc763Prefs; - }; - - packages_ghc762 = - packages { ghcPath = ../development/compilers/ghc/7.6.2.nix; - ghcBinary = ghc704Binary; - prefFun = ghc763Prefs; + packages_ghc704 = + packages { ghcPath = ../development/compilers/ghc/7.0.4.nix; + ghcBinary = ghc6101BinaryDarwin; + prefFun = ghc704Prefs; }; - packages_ghc763 = - packages { ghcPath = ../development/compilers/ghc/7.6.3.nix; - ghcBinary = ghc704Binary; - prefFun = ghc763Prefs; + packages_ghc6123 = + packages { ghcPath = ../development/compilers/ghc/6.12.3.nix; + prefFun = ghc6123Prefs; }; - # Reasonably current HEAD snapshot. Should *always* be lowPrio. - packages_ghcHEAD = - packages { ghcPath = ../development/compilers/ghc/head.nix; - ghcBinary = ghc742Binary; - prefFun = ghcHEADPrefs; + packages_ghc6104 = + packages { ghcPath = ../development/compilers/ghc/6.10.4.nix; + prefFun = ghc6104Prefs; }; } |