Removing the Cabal dependency
GHC depends on cabal, which is so far has been problematic many times, for many reasons.
A few discussions include:
- http://www.haskell.org/pipermail/haskell-cafe/2013-September/108746.html
- http://www.haskell.org/pipermail/ghc-devs/2013-March/000821.html
GHC uses only a very small part of Cabal, in these files:
./compiler/ghci/Linker.lhs
./compiler/main/Packages.lhs
./compiler/main/PackageConfig.hs
./compiler/main/Finder.lhs
plus 1 file for ghc-pkg: ./utils/ghc-pkg/Main.hs (see http://www.haskell.org/pipermail/haskell-cafe/2013-September/108750.html for details).
It was proposed that either
- the package format could be a plain specification without direct code dependencies
- the Cabal package could be split off into Cabal-the-build-system and a minimal part to describe the package DB to be shared by Cabal and GHC
The Cabal part that is used is in only a few modules of Distribution.* while the remaining majority of the Cabal-the-library package is not used (e.g. none of Distribution.Simple.*).
Decoupling GHC and Cabal seems to be a public desire, yet there are some problems with these approaches. Let us discuss them in this ticket.
Trac metadata
Trac field | Value |
---|---|
Version | 7.6.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | mail@nh2.me |
Operating system | |
Architecture |