Tracking issue: easily reinstallable boot libraries
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
The status quo is that boot libraries in general and certain boot[^1] 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 the `ghc:lib` component that came bundled with the compiler. This only applies to build plans that include this library. But common tools like `doctest` have `ghc` 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):
- [x] https://github.com/haskell/cabal/issues/10087
- [ ] https://github.com/haskell/cabal/issues/9669
- [ ] Something like https://github.com/haskell/cabal/issues/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.
[^1]: a boot library is any library that came packaged in the global package database supplied with a GHC install.
Contributor guide
Assessment
This issue has not been assessed yet.