Every time I need/decide to upgrade GHC, it seems there’s a different set of hoops I need to jump through to get it working on OS X 10.4 (Tiger). I don’t have OS X 10.5 (Leopard) and I don’t intend to buy it, so unfortunately I don’t get to use the nice-and-simple installer. I’ve decided to write down the exact steps that I’m taking this time so that I have a reference if I need to do it again (or if somebody else needs to do the same).
I’m pretty certain that this isn’t the way I did it last time. I seem to recall manually building the whole thing from a source tarball and having to resolve the dependencies myself. Then again, that’s probably why I have to upgrade now – my 6.8.2 install appears to be broken.
MacPorts and Xcode
The GHC site recommends that Tiger users use MacPorts, so that’s what I’m doing. I would have used fink, because I already have that set-up, but they don’t have a recent GHC build available for Tiger (6.6.2 is relatively ancient).
First I tried to install MacPorts without upgrading Xcode. It hung. So then I did what I had been told (and had ignored) and downloaded the latest version of Xcode from the Apple Developer Connection. For Tiger the latest version is 2.5. 3.0 and above are for Leopard only. At 903mb the download is not exactly slimline. After running the Xcode installer the MacPorts installer worked properly, which was nice.
Installing GHC from MacPorts
After that, it’s supposed to be easy:
$ sudo port install ghc Password: sudo: port: command not found
MacPorts installs to
/opt/local and I didn’t have
/opt/local/bin on the path (it seems that the “postflight script” mentioned here didn’t run or didn’t work). No problem:
$ sudo /opt/local/bin/port install ghc
This is meant to download, build and install the latest GHC and all its dependenices (GMP, yet another version of Perl, etc.). After some time had elapsed my first attempt failed with this helpful message:
Error: Status 1 encountered during processing.
The GCC output seemed to suggest that it couldn’t find the GMP library that MacPorts had just installed. Google revealed this to be a bug in the Portfile. Somebody else had run into the same problem earlier the same day and the maintainer was on the case. After leaving it for a day, the bug is now fixed and I tried again. This time the installation proceeded without problems, although it took a fecking long time to complete.
Paths and Symlinks
Once the install was done, I removed all traces of the previous 6.8.2 install (which was under
/usr/local) and made sure that
/opt/local/bin was on my path (in
$ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.10.1
Excellent. The thing that prompted me to upgrade was that Haddock wasn’t working for me since I upgraded it to the latest version. So that was the next thing to check:
$ ./setup.hs haddock setup.hs: haddock version >=0.6 is required but it could not be found.
It seems that for this particular build of GHC the Haddock executable is called
haddock-ghc, rather than
haddock as in 6.8.2. Cabal is still looking for
haddock though, so I added a symlink and everything was fine again:
$ sudo ln -s /opt/local/bin/haddock-ghc /opt/local/bin/haddock
I think I now have a working GHC 6.10.1 installation.