Ticket #832 (new defect)
Cabal aggregates dependencies for executables
|Reported by:||juhp||Owned by:|
I discovered over the weekend while trying to subpackage bluetile, that Cabal seems to aggregate dependencies of executables.
For example http://hackage.haskell.org/packages/archive/bluetile/0.5.3/bluetile.cabal generates several executables. Some depend on gtk, others not, and yet Cabal passes "--package-id gtk-..." to "ghc --make" for all of them and as a result the bluetile program (which doesn't depend on gtk) gets linked against gtk (and glade), leading to executable/dependency bloat.
Only the executables that are listed with explicit build-depends on gtk should be linked against the gtk package, etc.
I will try to dig into the source later and maybe even cook up a patch if I can: a code pointer would be appreciated. I assume Cabal is currently just accumulating all the build-depends which is sub-optimal. (Arguably ghc shouldn't link unused libraries to executables either, though I think that is pretty standard compiler behaviour. But I can file a bug against ghc too if appropriate.)