Ticket #832 (new defect)
Cabal aggregates dependencies for executables
| Reported by: | juhp | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Cabal library | Version: | 1.10.1.0 |
| Severity: | normal | Keywords: | |
| Cc: | Difficulty: | unknown | |
| GHC Version: | Platform: |
Description
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.)
