Ticket #649 (closed enhancement: fixed)
better warning messages for why dependencies are missing / cannot be selected
| Reported by: | duncan | Owned by: | kosmikus |
|---|---|---|---|
| Priority: | normal | Milestone: | cabal-install-0.14 |
| Component: | cabal-install tool | Version: | HEAD |
| Severity: | normal | Keywords: | solver |
| Cc: | Difficulty: | unknown | |
| GHC Version: | Platform: |
Description
The cabal-install constraint solver should be given all packages but if some are unsable (e.g. due to broken dependencies) then it should be given constraints to avoid them. That way when it finds it needed the broken package it can give a suitable error message.
Consider the following (real) confusing scenario:
- usual core global packages
- mtl as user package
- gtk etc in a local package db
ghc-pkg list --global -f local gtk reports that gtk is installed and deps are ok.
cabal install --global --package-db=local hsclock reports
cabal: cannot configure hsclock-1.0. It requires cairo -any and gtk -any There is no available version of cairo that satisfies -any There is no available version of gtk that satisfies -any
How can this be? It is because when we use --global and --package-db then we are excluding the user package db. But gtk depends on mtl from the user package db. Hence Cabal detects gtk as broken. We did not notice because ghc-pkg --global still includes the --user package db. If we use ghc-pkg --global --no-user-package-conf -f local list then indeed gtk etc are reported as broken.
The point is, cabal should tell us not that gtk isn't installed, but that it was excluded because it is broken, missing dependencies.
