Nikita Karetnikov <[email protected]> skribis:

>> Could you run ‘objdump -x .../ghc-pkg | grep PATH’, to check what its
>> actual RPATH/RUNPATH is?
>
>   RUNPATH              
> /nix/store/jndql2lmx3mzqmwhqh44bhm95wj8r9cy-gmp-5.1.2/lib:/nix/store/bz3az8a2699c77bgy8nm5cy77rypgw96-ncurses-5.9/lib
>
> $ objdump -x 
> /nix/store/4g873aa2h6c8c2qfsiw0j1cbvhginx4d-ghc-bin-7.0.1/lib/ghc-7.0.1/ghc-pkg
>  | egrep 'libgmp|libncurses'
>   NEEDED               libncurses.so.5
>   NEEDED               libgmp.so.3
>
> Is there a way to solve this without a symlink [1]?
>
>> Perhaps you could try to run it by hand to see what happens (copy the
>> original binary by hand, and try it.)
>
> Do you mean 'ghc-7.0.1/utils/ghc-pkg/dist-install/build/tmp/ghc-pkg'?

Yes.

> $ ./ghc-pkg
> ./ghc-pkg: error while loading shared libraries: libgmp.so.3: cannot open 
> shared object file: No such file or directory

OK, so the RUNPATH is correct, but ghc-pkg expects a libgmp with an
older SONAME.

The correct fix would be to add the old GMP version that produces
libgmp.so.3 to multiprecision.scm, and to use that as an input to GHC.

According to <https://bbs.archlinux.org/viewtopic.php?id=94146>,
libgmp.so.3 may correspond to GMP 4.3.2.

So:

  (define gmp-4.3
    (package (inherit gmp)
      (version "4.3.2")
      (source (origin ...))))

And the use that in GHC.

HTH!

Ludo’.

Reply via email to