
Can I improve my setup, so that Cabal-1.18 will work better with ghc-6.12.3? I have an old project that I’m updating, which is currently compilable with 6.12.3. I’ve managed to get Cabal-1.18.1.7 and cabal-install-1.18.0.1 to build it, which gives me some handy extra tooling, but only if I pre-install all the project dependencies before updating Cabal. If I try to use a sandbox instead, the build will fail at the point where template-haskell is used:
Loading package utf8-string-0.3.7 ... <command line>: can't load .so/.DLL for: HSutf8-string-0.3.7 (libHSutf8-string-0.3.7.so: cannot open shared object file: No such file or directory)
That’s a dependency in my sandbox, but this also fails if it’s installed to the default `~/.cabal`. I see a similar error if I try `runhaskell Setup.hs` instead of cabal:
Setup.hs: <command line>: can't load .so/.DLL for: HSCabal-1.18.1.7 (libHSCabal-1.18.1.7.so: cannot open shared object file: No such file or directory)
So I figure Cabal-1.18 and my default 6.12.3 are not co-operating as well as they could. If I use —enable-shared in my dependency builds, I still get this error, and I also see it if I try to build statically. The template-haskell “Loading” steps always seems to fail by not finding a shared library, as if it’s stepping outside of Cabal (and my!) control. I note that installation locations are different in Cabal-1.18 (vs 1.16), but figure the GHC registration process takes care of something like `.cabal/lib/x86_64-linux-ghc-6.12.3/utf8-string-0.3.7/libHSutf8-string-0.3.7-ghc6.12.3.so`. A pre-installed parsec dependency looks like `ghc-6.12.3/lib/parsec-3.1.1/ghc-6.12.3/libHSparsec-3.1.1-ghc6.12.3.so`. Neither has the name format reported by the error. Is there something in my Cabal or my GHC setup that I can change, to get these working together? A clean fix would be great, but a bodge is fine, since this transition work is isolated in a docker container. Thanks.