From HaskellWiki
Jump to: navigation, search

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.