OK -- I've managed to build it as follows.
1. Got the readline from the source at ftp.gnu.org. Always fun to ftp to the
mothership, got the patches while at it. Always fun to remember where to cd to
patch and which -p level to supply.
2. Built and installed readline 6.004 with default /usr/local prefix.
3. In the readline-184.108.40.206, manually ran ./configure
4. runghc Setup.hs build # no runghc Setup.hs configure, messes things right
5. sudo runghc Setup.hs install
The only difference with cabal install is that (5) installs in /usr/local, but
apparently subsequent cabal install modules which need readline finds it, even
though installing in ~/.cabal/.
I wonder if having multiple libreadline5.x.dylib and ...6... in /opt/local/lib,
the residue from the previous MacPorts, some not deactivated, may confuse
Cabal. In any case, installing things manually into /usr/local/ generally
coexisted well with MacPorts for me, so this works for now.
Haskell-Cafe mailing list