Description
The status quo is that boot libraries in general and certain boot1 libraries in particular are handled by cabal-install
in a special way, which means that they cannot (easily) be re-installed. You are stuck with whatever version came with the version of GHC. This is undesirable.
There are multiple reasons why cabal-install
might not allow certain packages to be reinstalled.
- Some packages contain wired-in identifiers that are hard-coded into the compiler.
- Some packages are dependencies of the
ghc
library, and we often want to force the use of theghc:lib
component that came bundled with the compiler. This only applies to build plans that include this library. But common tools likedoctest
haveghc
as a dependency.
Recently GHC developers have been moving moving wired-in identifiers into ghc-internal
, so this restriction is getting relaxed. But there is still some work to do on the cabal-install
side to make it possible to reinstall more libraries.
In particular, it would be nice if we could easily reinstall base
and template-haskell
. Neither of these will be wired-in with GHC-9.12.
See also some of the points @mpickering made on this MR: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13297
Here are a list of issues that are currently blocking reinstalling these (in a user friendly way):
- Amend non-reinstallable packages list #10087
- Special treatment of pre-installed packages by the solver #9669
- Something like RFC: design for better GHC plugin support in cabal #7901 to allow for better support for a separate build plan for plugin/staged dependencies.
Please feel free to edit this. I wanted to collect these in one place because I don't think it's super clear what's blocking us otherwise.
Footnotes
-
a boot library is any library that came packaged in the global package database supplied with a GHC install. ↩
Activity