Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linked Cabal sandboxes - shared libraries not found from `cabal repl`

I've got two packages that I'm developing, A and B. Package B depends on A.

A was developed in it's own sandbox, and a similar story goes for B:

A> cabal sandbox init
A> cabal install --enable-shared

B> cabal sandbox init
B> cabal sandbox add-source ../A/
B> cabal install

also note that shared: True is in my ~/.cabal/config.

Everything looks good here, they both install just fine. However, while working on B, if I issue cabal repl, cabal-install tells me that it can't load the libAsomething.so/.dll file. What went wrong here?

Here is the exact error:

...
Loading package mtl-0.0.1 ... linking ... done.
Loading package A-0.0.0 ... <command line>: can't load .so/.DLL for: /home/athan/dev/A/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.3/A-0.0.0/libHSA-0.0.0-ghc7.8.3.so (/home/athan/dev/foo/B/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.3/A-0.0.0/libHSA-0.0.0-ghc7.8.3.so: undefined symbol: AsomethingCrazyInAmodule_closure)

Edit:

I'm using GHC 7.8.3 and cabal-install 1.20.0.3.

like image 413
Athan Clark Avatar asked Dec 11 '14 17:12

Athan Clark


1 Answers

Does using just one sandbox work for you?

(unpack A into src/A)
(unpack B into src/B)
cd src/B
cabal sandbox init
cabal add-source ../src/A
cabal install                -- builds both A and B

Now there is only one sandbox (located in src/B).

like image 142
ErikR Avatar answered Nov 15 '22 09:11

ErikR