Hi all, Some of you may recall that I started work on updating all of our Haskell packages to their LTS 12 versions, and making sure they all build with GHC 8.4.3. I think this work is ready to be included now (on a WIP branch, at least). The commits exist at <https://gitlab.com/samplet/guix/tree/wip-haskell> under the “wip-haskell” branch. There are 258 commits, and they have been rebased on master (although that was a few days ago, but it should be fine because the Haskell packages have been relatively stable). I figure that 258 commits is too many for guix-patches, so I’m hoping that someone (Ricardo?) can take them from the repo linked above. There are about 450 packages that need to be rebuilt.
Here are some notes that you might find interesting if you rely on our Haskell infrastructure. • There are 21 failing packages. They are agda, beast, corrode, git-annex, ghc-aws, ghc-gnuplot, ghc-haddock-test, ghc-hashable-bootstrap, ghc-indents, ghc-monadplus, ghc-nats-bootstrap, ghc-packedstring, ghc-regex, ghc-regex-tdfa-rc, ghc-statistics, ghc-vector-builder, ghc-wave, ghc-xmonad-contrib, raincat, rapicorn, and shellcheck. Some of these are abandoned upstream, but most of them just need some extra attention. I will look through them (especially git-annex), but I would like the stability of the build farm as I do it. (Also, help wanted!) • The new Haskell no longer supports the “--allow-newer” flag, so it has to be worked around with phases and “substitute*”. However, I have introduced a “#:cabal-revision” keyword that tells the build system to patch in newer revisions of the package’s Cabal file from Hackage. This means that we can use this mechanism whenever upstream has updated the dependency constraints (which is the main reason we made so much use of “--allow-newer” in the first place). • I removed “ghc-mtl” since it is now included in GHC. If you review the patches (thanks!) you might want to know: • I went through all of them carefully and I sincerely hope the error and typo count is low! Also, most of them are machine generated, so those are probably fine. • There are a few more interesting commits that deserve special attention. There are (minor) changes to the Stackage importer, there’s the “#:cabal-revision” stuff, and there are some old/unneeded packages that I deleted. Let me know if there is anything I can do to make these changes easier to work with. -- Tim