Ticket #1553 (closed proposed-project: fixed)
cabal-install package dependency resolution
|Reported by:||duncan||Owned by:|
|Difficulty:||1 person Summer||Mentor:||not-accepted|
Description (last modified by insane) (diff)
`cabal-install` is the new command line interface to the Cabal/Hackage system. It does all that runghc Setup.hs does and more. Its major feature is the ability to download an install packages from hackage, including all dependencies.
For example the user says cabal install xmonad and it goes away and looks at what packages are available on hackage and which ones are already installed and works out what packages need to be installed in what order to satisfy the users request.
It turns out that deciding what packages to install is not as easy as it looks. Package dependencies can get quite complicated. Furthermore, users have preferences which we would like to respect. For example the user might want to upgrade all packages that can be upgraded, or they might prefer to install the minimum number of new packages and re-ruse as many existing installed packages as possible. So we need an algorithm that is sufficiently flexible to handle these. Users also expect good error messages in the cases that their request cannot be satisfied.
The current algorithm in cabal-install is very simplistic. It works in simple cases, but it can often generate impossible solutions and it is not flexible to respect user preferences.
There are a number of open bugs about the current system:
The first two are summary bugs (that cover a number of other previous tickets), the last is a specific one.
So this project is to design a new package dependency resolution algorithm and to implement it in cabal-install so that the whole community can benefit from hassle free package management.
- Duncan Coutts
- Maciej Wos <maciej.wos@…>
- Piotr Kaleta <piotrek.kaleta@…>