[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo"
 nickname="Nathan"
 subject="Cabal installing git-annex on Ubuntu 12.04 Precise with GHC 7.6.3"
 date="2013-09-25T22:39:04Z"
 content="""
I now realize [there is a Ubuntu 12.04 Precise PPA with a current
version of
git-annex](http://git-annex.branchable.com/install/Ubuntu/), so that's
probably a better choice, but here's how I cabal isntalled git-annex.

1. Apt install non-cabal dependencies:

       sudo aptitude install c2hs libgsasl7-dev libxml2-dev

2. Manually cabal install yesod-platform to avoid the [cryptocipher problem 
   mentioned above](
   http://git-annex.branchable.com/install/cabal/#comment-1807da37dc144b572b76aaf4b574bb54):

       cabal install yesod-platform

3. Cabal install git-annex with DNS flag disabled:

       cabal install git-annex -f\"-dns\"

I was getting this error building git-annex before disabling the DNS flag:

    Utility/SRV.hs:70:54:
        Couldn't match expected type `Maybe
                                        [(Int, Int, Integer, B8.ByteString)]'
                    with actual type `Either
                                        dns-1.0.0:Network.DNS.Internal.DNSError
                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'
        In the third argument of `maybe', namely `r'
        In the second argument of `($)', namely
          `maybe [] (orderHosts . map tohosts) r'
        In a stmt of a 'do' block:
          return $ maybe [] (orderHosts . map tohosts) r

Looking at Utiltity/SRV.hs, it appears that disabling the DNS flag
just makes git annex use a different DNS library (ADNS), not
actually disable DNS lookups.

"""]]