[Haskell-cafe] Building lambdabot

Max Bolingbroke batterseapower at hotmail.com
Thu Jan 6 18:33:07 CET 2011


On 6 January 2011 16:11, Joe Bruce <bruce.joe.r at gmail.com> wrote:
> Thanks, Max.  I had seen that thread already, but I don't understand how it
> helps me.  I'm on a x64 mac and I have both an i386 and x64 version of
> readline installed (via macports install readline +universal).  Perhaps
> cabal is choosing the wrong one.  How do I find out?  How do I tell it which
> to use?  And which do I want it to use?

Well, MacPorts +universal should install fat binaries that include
both x86 and x64. On my machine:

"""
mbolingbroke at c089 ~
$ file /opt/local/lib/libreadline.5.0.dylib
/opt/local/lib/libreadline.5.0.dylib: Mach-O universal binary with 2
architectures
/opt/local/lib/libreadline.5.0.dylib (for architecture i386):	Mach-O
dynamically linked shared library i386
/opt/local/lib/libreadline.5.0.dylib (for architecture x86_64):	Mach-O
64-bit dynamically linked shared library x86_64

mbolingbroke at c089 ~
$ file /opt/local/lib/libreadline.a
/opt/local/lib/libreadline.a: Mach-O universal binary with 2 architectures
/opt/local/lib/libreadline.a (for architecture i386):	current ar
archive random library
/opt/local/lib/libreadline.a (for architecture x86_64):	current ar
archive random library
"""

GHC on OS X builds 32 bit executables, so you need to link against
these binaries. Long story short:

$ cabal unpack readline

Then edit readline.cabal to add this line to the end:

  extra-lib-dirs:  /opt/local/lib

(You must indent it to put it in the "library" section). Finally:

$ sudo cabal install
--configure-option=--with-readline-includes="/opt/local/include"
--configure-option=--with-readline-libraries="/opt/local/lib"

It will now work. You can try it by opening ghci and typing:

System.Console.Readline.readline "Command Me> "

An alternative to editing the cabal file would have been to link to
the Macports fat-binary libreadline.a from the OS X system library
directories (maybe /usr/lib or /usr/local/lib).

Cheers,
Max



More information about the Haskell-Cafe mailing list