Skip to content

Gracefully handling old versions of base with new versions of GHC where base is reinstallable #11356

@TeofilC

Description

@TeofilC

Describe the bug

As of #10982, we now support reinstalling more packages like base when using GHC-9.14. This leads to issues since historical versions of base were released without dependency bounds.

Reproduction instructions

This means that if a package doesn't support GHC-9.14's base, then it will instead pick a very old version of base and fail with:

Error:
    Dependency on unbuildable library from ghc-bignum
    In the stanza 'library'
    In the package 'base-4.19.2.0'

See also: https://gitlab.haskell.org/ghc/ghc/-/issues/26541

Expected behavior

It should fail with a better message.

Proposed solution

One possibility to fix this is to revise old versions of base with something like:

if impl(ghc >= 9.14):
         build-depends: ghc-prim<0

This approach carries some risk. There are a lot of versions of base so the risk of making a mistake is high. We also want to make sure that we don't accidentally make some of these unusable with old versions of cabal.

Perhaps we should implement the fix in cabal. For instance we could avoid picking a version of base which is using the -this-unit-id hack.

We were wondering if you all had an opinion about what the best approach to be. I'm happy to implement something if we come up with a plan.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions