
could you file a bug report on the cabal issue tracker?
github.com/haskell/cabal/issues :)
On Sun, Nov 3, 2013 at 1:46 AM, Magnus Therning
On Thu, Oct 31, 2013 at 05:16:11PM -0400, Albert Y. C. Lai wrote:
On 13-10-31 04:26 PM, Magnus Therning wrote:
We've had a discussion about DSOs on the arch-haskell mailing list[1] and it made me realise one thing:
--enable-shared will cause the generation of DSOs for libraries, but it won't cause executables to be dynamically linked
Is the only way to cause these executables to be dynamically linked against their dependencies to pass the -dynamic flag to ghc (e.g. via the --ghc-options flag when configuring the package)?
Have you seen --enable-executable-dynamic? It's there since cabal-install 0.14 or earlier. It is also available to Setup.hs since Cabal 1.14 or earlier, which came with GHC 7.4.
Have you done a "cabal install --help | less" lately? Also "cabal configure --help | less".
Now I have tried the `--enable-executable-dynamic` flag and have found one problem with it, it doesn't work that well for packages that have both executables and a library.
I tried it on pandoc. Here's what I got:
% file /usr/bin/pandoc % /usr/bin/pandoc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=bb046a49bb820ab4d592d154bd0a5064f40bba5b, stripped
So far so good, but
% pandoc --help pandoc: error while loading shared libraries: libHSpandoc-1.12.1-ghc7.6.3.so: cannot open shared object file: No such file or directory
The DSO is installed though
% pacman -Ql haskell-pandoc|grep libHSpandoc haskell-pandoc /usr/lib/ghc-7.6.3/site-local/pandoc-1.12.1/ libHSpandoc-1.12.1-ghc7.6.3.so haskell-pandoc /usr/lib/ghc-7.6.3/site-local/pandoc-1.12.1/libHSpandoc-1.12.1.a haskell-pandoc /usr/lib/ghc-7.6.3/site-local/pandoc-1.12.1/libHSpandoc-1.12.1_p.a
It just can't be found
% ldd /usr/bin/pandoc|grep libHSpandoc libHSpandoc-1.12.1-ghc7.6.3.so => not found libHSpandoc-types-1.12.3-ghc7.6.3.so => /usr/lib/ghc-7.6.3/site-local/pandoc-types-1.12.3/ libHSpandoc-types-1.12.3-ghc7.6.3.so (0x00007f60bf3e1000)
The problem is that RPATH doesn't contain the location where the *installed* pandoc lib ends up, but only the location where the pandoc lib is *built*:
% readelf -d /usr/bin/pandoc|grep RPATH|head 0x000000000000000f (RPATH) Library rpath: [/build/haskell-pandoc/src/pandoc-1.12.1/dist/build:/usr/lib/ghc-7.6.3/site-local/zip-archive-0.1.4:/usr/lib/ghc...
Is there already a way to get Cabal to put in an RPATH such that an *installed* executable works correctly, or is this a fairly serious bug in Cabal?
/M
-- Magnus Therning OpenPGP: 0xAB4DFBA4 email: magnus@therning.org jabber: magnus@therning.org twitter: magthe http://therning.org/magnus
Some operating systems are called 'user friendly', Linux however is 'expert friendly'.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe