Using Cabal to install terminfo-0.4.0.0 breaks GHC on Debian x86_64
ramin.honary at gmail.com
Sun Apr 13 15:08:48 UTC 2014
I am posting this to the mailing list, but it is a copy of a post I
originally made on Haskell Reddit.
My GHC is working fine now. But there seem to be some changes in either GHC
7.8.2 or Cabal-188.8.131.52 that have broken some of the older packages in
*TL;DR* I discovered the "Crypto-184.108.40.206 package is broken, and trying to
install "terminfo-0.4.0.0" breaks GHC by over-writing the terminfo library
that came with the GHC tarball because isn't in the GHC package registry.
I downloaded the binary distribution from here:
and then immediately began re-building all of the packages in my
I admit, all of my problems may be due to my Cabal config, but I haven't
had any problems with it before this, as far as I know it is the default
setup the option to build profiling libraries set to True.
The first problem I had was that Crypto-220.127.116.11 was not building files
correctly. *Some* of shared object files "*.dyn_o" were being built
*without* their accompanying "*.dyn_hi" files, although some of the
"*.dyn_hi" files did exist). When cabal tried to copy these "*.dyn_hi"
files to the global package registry during installation it would fail with
something about (for example) "could not find RSA.dyn_hi". To solve this, I
rebuilt every "*.dyn_o" file that did not have an accompanying "*.dyn_hi"
by hand using the command
ghc -dynamic --make Codec.Binary.RSA
The resulting "Codec/Binary/RSA.hi" file was actually a dynamic interface
file but it's file extension was just ".hi" for some reason, (I double
checked by using ghc --show-iface) so I just copied it it the
"dist/build/Codec/Binary/" directory. I did this for every "*.hi" file that
was supposed to be named "*.dyn_hi". This included about 10 files. Again,
some "*.dyn_o" did build correctly with an accompanying "*.dyn_hi", about
10 of the modules were built incorrectly, all the rest were OK.
The second problem I had was with installing "Yi" which relies on the
"terminfo-0.4.0.0" package. The "terminfo" library that came with the GHC
7.8.2 binary distribution does not show up in the output of "ghc-pkg list",
so Cabal tries to build it thinking it doesn't exist, and it overwrites the
existing "terminfo-0.4.0.0" package with a library that contains missing
symbols. This causes GHC to completely stop working. The "ghc" program
immediately fails with an error:
symbol lookup error:
I was able to solve this problem by simply copying the contents of:
from the source distribution tarball to the GHC installation directory:
and that solved the problem. But any program depending on "terminfo" simply
will not install properly. The terminfo-0.4.0.0 package does not show up in
the output of ghc-pkg list, even though it comes with the GHC 7.8.2 tarball
and GHC relies on it. Attempting to install Terminfo will build a ".so"
file that GHC cannot use. *So don't install terminfo-0.4.0.0 from Hackage.*
Fortunately, Yi is not something that is absolutely necessary. I was able
to install every other package I needed (lens, diagrams, yesod, xmonad,
gtk) without incident.
But whatever changes have been made in ghc-7.8.2 and the accompanying
Cabal-18.104.22.168 seem to have broken some of the older Hackage packages.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Glasgow-haskell-users