
#515: --extra-lib-dirs= should add -R/-rpath to hsc2hs calls ------------------------------+--------------------------------------------- Reporter: duncan | Owner: Type: defect | Status: new Priority: normal | Milestone: Cabal-1.8 Component: Cabal library | Version: 1.6.0.1 Severity: normal | Keywords: Difficulty: easy (<4 hours) | Ghcversion: Platform: | ------------------------------+--------------------------------------------- Currently the `--extra-lib-dirs=` flag is only used to add extra `-L` flags in calls to `gcc`, `hsc2hs` etc. On systems where `--extra-lib- dirs=` is necessary it's almost always the case that we also need `-R`/`-rpath` too. Apparently `-rpath` is somewhat controversial and some people argue against using it. However one case where it is clearly necessary is in invoking `hsc2hs`. This is because `hsc2hs` compiles, links and runs a C program. The program is run once on the host machine and never installed or distributed. So all the usual arguments against `-rpath` do not apply. Hard coding the paths of libs is fine since the program is only used once, in the build tree. It's also essential for it to actually work. Here's an example log from someone hitting this problem: {{{ $ cabal install pcre-light --extra-include-dirs=/usr/local/include --extra-lib-dirs=/usr/local/lib Resolving dependencies... 'pcre-light-0.3.1' is cached. Configuring pcre-light-0.3.1... Preprocessing library pcre-light-0.3.1... dist/build/Text/Regex/PCRE/Light/Base_hsc_make: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory running dist/build/Text/Regex/PCRE/Light/Base_hsc_make failed command was: dist/build/Text/Regex/PCRE/Light/Base_hsc_make
dist/build/Text/Regex/PCRE/Light/Base.hs }}}
On this system it appears that `/usr/local/lib` is not on the default static linker path, or the default dynamic linker path. So we need `-L/usr/local/lib` for the static linker and `-R/usr/local/lib` for the dynamic linker. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/515 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects