[Haskell-cafe] Error when installing RSA (for yesod) with GHC 7.2.1

Daniel Fischer daniel.is.fischer at googlemail.com
Mon Oct 24 23:33:53 CEST 2011

On Monday 24 October 2011, 23:13:32, Yves Parès wrote:
> I'm using GHC 7.2.1 and cabal-install 0.8 (Cabal, and when
> "cabal install rsa"

> Apparently it's an instance being declared twice.
> However RSA hackage page states that it compiles under GHC 7.2:
> http://hackage.haskell.org/package/RSA

The instance in the rsa package is guarded by a Cabal MIN_VERSION macro:
#if !MIN_VERSION_random(1,0,1)
instance Random Word8 where
  randomR (a,b) g = let aI::Int = fromIntegral a 
                        bI::Int = fromIntegral b
                        (x, g') = randomR (aI, bI) g
                    in (fromIntegral x, g')
  random          = randomR (minBound, maxBound)

Unfortunately, that macro was broken in some Cabal versions, among them, so the negated check goes wrong (#if !(MIN_...) would work).
[As a quickfix for this package, you could edit the source, but you'll 
probably come across more macro problems later.]

Build yourself a new cabal-install.
If you use 7.2.1 for that, the recipe at https://gist.github.com/1169332 
tells you what you have to change.
If you have an older ghc still available, the vanilla procedure should work 
with that (if you're using the old 6.12.* with the Cabal-, first 
install a later Cabal version, works).

More information about the Haskell-Cafe mailing list