Arch Linux Updates to GHC 6.12

We’ve (mostly) completed the major upgrade of Haskell packages on Arch Linux to use GHC 6.12. The summary:

  • We updated to GHC 6.12
  • Most things are working.
  • You can’t use “yaourt” any more — it is broken on Haskell dependencies.

There are several consequences of this upgrade for Arch Haskell users, so read on for the full stories.

Changes to GHC

Firstly, GHC has been improved in many ways:

  • Parallel execution performance is better (for your multicore Haskell apps)
  • Dynamic linking of Haskell libraries is supported (see this tutorial).
  • Package management is far more robust and scalable (you’ll see improvements in install times if you use many packages).
  • And of course, many tweaks and new features in the language and base libraries.

To upgrade we recommend you completely clean your existing Haskell Arch packages, via:

sudo pacman -c –remove ghc

to do a recursive removal of all packages, then install ghc in a clean state:

sudo pacman -S ghc

Changes to Extra / Community Packages

With the GHC 6.12 update, GHC no longer distributes a number of libraries that it used to, including:

All these packages are now in the (Extra) repository, and make up the bulk of the support for the Haskell platform in (Extra). You can find them with pacman.

Major Applications: xmonad, darcs, …

The major applications have all been updated, and you should have no trouble upgrading to the versions in (Extra) and (Community).

For example, xmonad:

  1. upgrade ghc with pacman
  2. install xmonad and xmonad-contrib with pacman

and you’ll be good to go.

“Provides” packages: Do not use Yaourt!

A consequence of moving these packages out of the ghc package is that almost all Haskell packages had missing dependencies. Previously, if a Haskell package had used say, transactional memory, it only had to depend on “ghc” in its specification. That is no longer the case, and to solve this problem of dependencies moving around once and for all we have enacted the following policy for Haskell packages:

We have updated all packages in AUR to list explicit dependencies. So now you will see things like this, for the latest haddock.

  • Dependencies: haskell-array haskell-cabal haskell-containers haskell-directory …

So even the libraries distributed with GHC are explicitly listed. This has major consequences for which package builder tool you use!

To build Haskell libraries and programs, the package tool must support the “provides” field. yaourt does NOT support “provides. You need to use a different package tool

We’ve put together a list of preferred package tools here, and I (dons) have switched to bauerbill, which is fast, and has full support for more complicated package specifications. You use it exactly as for yaourt, but without the bugs:

     sudo bauerbill --no-color --aur -S haskell-csv

The Haskell packaging tool for Arch, cabal2arch, has been fully updated to support the new “provides” policy, and in turn has been used to update all 1500+ Haskell packages in AUR.

If you have any dependency resolution problems, make sure you are not using yaourt.

Version changes

We’re moving towards full support of the next Haskell Platform release in binary form from (Extra). To get there we decided to upgrade to QuickCheck 2. This means that some packages that haven’t yet migrated to QuickCheck 2 will be temporarily unavailable from AUR (including HDBC).

gkt2hs and wxHaskell are also not yet supporting GHC 6.12. They upstream maintainers are aware, and these packages will be updated once upstream is ready.

AUR Packages

AUR now carries 1500+ Haskell packages, and all have been updated to the new provides syntax. You can track the last known build/version status of these packages here.

Get in touch!

You can join in the community for Haskell users on Arch, via:

8 responses to “Arch Linux Updates to GHC 6.12

  1. Either I don’t know pacman as well as I should, or theres a mistake here:
    pacman -c -remove

  2. archhaskell

    pacman -c –remove ghc will do a removal of ghc, and anything that used ghc. That’s the correct flag.

    Here’s a transcript: http://www.reddit.com/r/archlinux/comments/aweoa/arch_linux_updates_to_ghc_612_status_report/c0jqqiz

  3. Thanks – thats a double dash before remove, its just hard to read here, and when copied/pasted disappears completely

  4. It first seems to be fine that we now have 6.12, but under the fact that many of the tools and library’s haven’t adopted this ghc release and the big red stop on the ghc download page for 6.12 it seems unwary. Personally, I currently develop some apps which use gtk2hs and c2hs, which both didn’t build with stable releases or in the case of c2hs only with some handwork, but also parts of code running fine with 6.10 didn’t build with 6.12.

    But enough blubbering, is there any way to have 6.10 back or maybe aside from 6.12.

  5. Pingback: Arch Haskell News: February 2010 « Arch Linux and Haskell

  6. Alex Solla

    Can you get rid of all the warnings against yaourt now that yaourt 0.9.3 supports the “provides” field?

  7. That’s great news, Alex. Is there an announcement somewhere?

Leave a reply to archhaskell Cancel reply