
mad.one:
Recently I've been developing my IRC bot a little further, and in the midst of it I have come across a very problematic issue that revolves around GHC-dependencies vs. application-dependencies. The central issue is ByteString.
Currently, the ghc package depends on bytestring-0.9.0.1. However, the current version of ByteString I have installed is 0.9.0.4. To keep compatability with bytestring-dependent libraries that were built against 0.9.0.1, you have to recompile of all these libs against 0.9.0.4. For example, I had to build a newer version of zlib against 0.9.0.4, because the older version was built for 0.9.0.1, which mean that it was not possible to build cabal-install because of the incompatabilities (it needed bytestring and zlib.)
The problem is that if you have a package that depends on ghc as a library, but also depends on bytestring > 0.9.0.1 or any library built against it, you'll get pretty much unstoppable linker errs, since all the symbol names in the ghc package are hardwired for 0.9.0.1 (meaning you can't do 'ghc-pkg update' for it) forcing it to be loaded.
It should be possible to specify that your lib depends on exactly 0.9.0.1 in the .cabal file. -- Don