Ticket #566 (new defect)
Don't try and resolve dependencies for packages that are not buildable
| Reported by: | batterseapower | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Cabal library | Version: | 1.6.0.1 |
| Severity: | normal | Keywords: | |
| Cc: | Difficulty: | hard (< 1 day) | |
| GHC Version: | Platform: |
Description
I had a component like this:
Executable edit-distance-benchmark
Main-Is: Text/EditDistance/Benchmark.hs
if flag(splitBase)
Build-Depends: base >= 3 && < 5, array >= 0.1, random >= 1.0, old-time >= 1.0, process >= 1.0,
parallel >= 1.0, unix >= 2.3
else
Build-Depends: base < 3,
parallel >= 1.0, unix >= 2.3
if !flag(benchmark)
Buildable: False
Ghc-Options: -O2 -fvia-C -Wall
However, I've only just found out that this meant that you couldn't install any parts of my package on Windows, because Cabal tried to resolve the "unix" dependency even if "benchmark" was False (the default)!
I've solved this like so:
Executable edit-distance-benchmark
Main-Is: Text/EditDistance/Benchmark.hs
if !flag(benchmark)
Buildable: False
else
if flag(splitBase)
Build-Depends: base >= 3 && < 5, array >= 0.1, random >= 1.0, old-time >= 1.0, process >= 1.0,
parallel >= 1.0, unix >= 2.3
else
Build-Depends: base < 3,
parallel >= 1.0, unix >= 2.3
Ghc-Options: -O2 -fvia-C -Wall
But really Cabal should not need to resolve dependencies for things that are not buildable.
Change History
Note: See
TracTickets for help on using
tickets.
