HaskellImplementorsWorkshop/2012/Schuster

From HaskellWiki
< HaskellImplementorsWorkshop‎ | 2012
Revision as of 13:43, 17 December 2012 by Henk-Jan van Tuyl (talk | contribs) (Added Category:Community)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Making cabal-install non-destructive

Philipp Schuster (speaker), Andres Löh


Recently there have been more and more complaints about "cabal dependency hell". Many of these complaints have their root in one limitation: It is not possible to have more than one instance of a certain package version installed per package database. Installing another instance overwrites the existing instance and often breaks other installed packages that depended on the overwritten instance.

During a Summer of Code project we are lifting this restriction by making several instances of the same package version install next to each other. This requires serious changes to ghc-pkg, cabal-install, the Cabal library and their interaction. Specifically we need:

  • A unique install location for each instance
  • An improved way to uniquely identify packages
  • A refined adhoc resolution method for GHC
  • A few changes to the cabal-install solver
  • A garbage collection mechanism for unused packages

In this talk, we are going to describe the changes as well as the improvements possible for the end user. In addition to removing the possibility of breaking installed packages, the new system also promises much more fine-grained dependency tracking.

The project is a work in progress, and the talk will be a status report.