Emanuel Borsboom <
ma...@fpcomplete.com> writes:
> Stack itself doesn't use ncurses, it's GHC where these dependencies
> lie. The issues with GHC's system dependencies and different versions
> of libgmp, libncurses/tinfo, and gcc on the system are a constant
> thorn in our side (albeit one we accept because having Stack manage
> multiple versions of GHC is so very useful). I'd love it if we could
> bundle a statically linked GHC along with LLVM and whatever other
> tools are needed that would work across all Linux distros, but getting
> there will not be easy (if it's even possible). Some people are even
> having trouble with the statically linked `stack` binaries we've been
> releasing in the last couple of versions, and Stack is a very simple
> program compared to GHC and its toolchain.
A recent upgrade of the distro package removed my manual fix for this on
my systems, and got me thinking about it again.
What I don't understand here is *what* exactly is linking in
`libncurses.so`. I think I've managed to look through every single
binary, executable and .so, in
`~/.stack/programs/x86_64-linux/ghc-8.0.2/lib/ghc-8.0.2` and I don't
find *anything* actually linking to `libncurses.so`! (I ran `ldd` and
greped for 'curse', nothing.) I even ran the same search but using
`strings`, the only thing I found was 2 files in `package.conf.d/`.
Also, running `stack ghci` in $HOME doesn't trigger any linking error.
Manually loading a Haskell source file doesn't either. The only way I've
managed to trigger it is when running `stack ghci` in some stack-ified
projects (not in all!).
This is all rather puzzling to me! So, exactly what is pulling it in,
why only sometimes, and most importantly, how?
Any pointers on where I should look to understand this behaviour?
Some people, wanting an escape from their full-time job, think
“I know, I'll contribute to open source.” Now they have two full-time
jobs.