haskell / haskell/cabal

Tracking issue: easily reinstallable boot libraries

Open
#10,440 6 comments 0 reactions 0 assignees View on GitHub
cabal-install: solver meta: tracking
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.