I've tried off and on the last couple of days to build Lambdabot on Mac OS X
(before and after the upgrade from 10.6 to 10.7) and I keep running into linker
errors with the 64-bit Haskell Platform (ghc 7.0.3).
First, there's the issue with linking against libiconv, which is solved this
way:
cabal install --extra-lib-dirs=/usr/lib
That leaves a whole mess of link errors against libHSreadline:
Linking dist/build/lambdabot/lambdabot ...
ld: warning: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame
Undefined symbols for architecture x86_64:
"_rl_insert_completions", referenced from:
_readlinezm1zi0zi1zi0_SystemziConsoleziReadline_zdwa5_info in libHSreadline-1.0.1.0.a(Readline.o)
"_rl_possible_completions", referenced from:
_readlinezm1zi0zi1zi0_SystemziConsoleziReadline_zdwa7_info in libHSreadlin
(full error report at http://hpaste.org/50036 )
I did manage to install readline through macports:
$ port installed readline
The following ports are currently installed:
readline @6.2.000_0 (active)
$ file /opt/local/lib/libreadline.dylib
/opt/local/lib/libreadline.dylib: Mach-O 64-bit dynamically linked shared library x86_64
and I did manage to get readline installed properly by specifying the
include/lib dirs from macports:
cabal install readline --configure-option=--with-readline-libraries=/opt/local/lib --configure-option=--with-readline-includes=/opt/local/include
and readline does work in ghci:
$ ghci
GHCi, version 7.0.3: http://www.haskell.org/ghc/ :? for help
Prelude> :m + System.Console.Readline
Prelude System.Console.Readline> readline "testing> "
testing> exit
exit
Just "exit"
Prelude System.Console.Readline>
The only issue, which has me stumped, is that lambdabot can't seem to find the
readline dependency. Adding the --with-readline options when trying to build
lambdabot has no effect. Neither does adding --extra-lib-dirs=/opt/local/lib
to cabal install.
Anyone have a clue where to start to work around this? Would switching to ghc
HEAD help here?
Thanks,
-- Adam