Skip to content

Pre-release and multi-repl incompatible with Custom setup #9632

Closed
@TeofilC

Description

@TeofilC

Describe the bug
Cabal's multi-repl support requires a version of the Cabal library >=3.11.
This is fine when using cabal-install's builtin copy of the Cabal library.
But when packages' Custom setups require Cabal as build dependency, we run into problems as this version is not yet released, so not available on Hackage, and it's not the version bundled with the user's GHC.

To Reproduce
Try using a pre-release cabal to run

cabal repl --enable-multi-repl --allow-newer postgresql-libpq
Output
Warning: this is a debug build of cabal-install with assertions enabled.
Resolving dependencies...
Error: [Cabal-7107]
Could not resolve dependencies:
...
[__1] trying: postgresql-libpq-0.10.0.0 (dependency of eventstore)
[__2] next goal: postgresql-libpq:setup.Cabal (dependency of postgresql-libpq)
[__2] rejecting: postgresql-libpq:setup.Cabal-3.10.2.0/installed-inplace, postgresql-libpq:setup.Cabal-3.10.2.1, postgresql-libpq:setup.Cabal-3.10.2.0, postgresql-libpq:setup.Cabal-3.10.1.0, postgresql-libpq:setup.Cabal-3.8.1.0, postgresql-libpq:setup.Cabal-3.6.3.0, postgresql-libpq:setup.Cabal-3.6.2.0, postgresql-libpq:setup.Cabal-3.6.1.0, postgresql-libpq:setup.Cabal-3.6.0.0, postgresql-libpq:setup.Cabal-3.4.1.0, postgresql-libpq:setup.Cabal-3.4.0.0, postgresql-libpq:setup.Cabal-3.2.1.0, postgresql-libpq:setup.Cabal-3.2.0.0, postgresql-libpq:setup.Cabal-3.0.2.0, postgresql-libpq:setup.Cabal-3.0.1.0, postgresql-libpq:setup.Cabal-3.0.0.0, postgresql-libpq:setup.Cabal-2.4.1.0, postgresql-libpq:setup.Cabal-2.4.0.1, postgresql-libpq:setup.Cabal-2.4.0.0, postgresql-libpq:setup.Cabal-2.2.0.1, postgresql-libpq:setup.Cabal-2.2.0.0, postgresql-libpq:setup.Cabal-2.0.1.1, postgresql-libpq:setup.Cabal-2.0.1.0, postgresql-libpq:setup.Cabal-2.0.0.2, postgresql-libpq:setup.Cabal-1.24.2.0, postgresql-libpq:setup.Cabal-1.24.0.0, postgresql-libpq:setup.Cabal-1.22.8.0, postgresql-libpq:setup.Cabal-1.22.7.0, postgresql-libpq:setup.Cabal-1.22.6.0, postgresql-libpq:setup.Cabal-1.22.5.0, postgresql-libpq:setup.Cabal-1.22.4.0, postgresql-libpq:setup.Cabal-1.22.3.0, postgresql-libpq:setup.Cabal-1.22.2.0, postgresql-libpq:setup.Cabal-1.22.1.1, postgresql-libpq:setup.Cabal-1.22.1.0, postgresql-libpq:setup.Cabal-1.22.0.0, postgresql-libpq:setup.Cabal-1.20.0.4, postgresql-libpq:setup.Cabal-1.20.0.3, postgresql-libpq:setup.Cabal-1.20.0.2, postgresql-libpq:setup.Cabal-1.20.0.1, postgresql-libpq:setup.Cabal-1.20.0.0, postgresql-libpq:setup.Cabal-1.18.1.7, postgresql-libpq:setup.Cabal-1.18.1.6, postgresql-libpq:setup.Cabal-1.18.1.5, postgresql-libpq:setup.Cabal-1.18.1.4, postgresql-libpq:setup.Cabal-1.18.1.3, postgresql-libpq:setup.Cabal-1.18.1.2, postgresql-libpq:setup.Cabal-1.18.1.1, postgresql-libpq:setup.Cabal-1.18.1, postgresql-libpq:setup.Cabal-1.18.0, postgresql-libpq:setup.Cabal-1.16.0.3, postgresql-libpq:setup.Cabal-1.16.0.2, postgresql-libpq:setup.Cabal-1.16.0.1, postgresql-libpq:setup.Cabal-1.16.0, postgresql-libpq:setup.Cabal-1.14.0, postgresql-libpq:setup.Cabal-1.12.0, postgresql-libpq:setup.Cabal-1.10.2.0, postgresql-libpq:setup.Cabal-1.10.1.0, postgresql-libpq:setup.Cabal-1.10.0.0, postgresql-libpq:setup.Cabal-1.8.0.6, postgresql-libpq:setup.Cabal-1.8.0.4, postgresql-libpq:setup.Cabal-1.8.0.2, postgresql-libpq:setup.Cabal-1.6.0.3, postgresql-libpq:setup.Cabal-1.6.0.2, postgresql-libpq:setup.Cabal-1.6.0.1, postgresql-libpq:setup.Cabal-1.4.0.2, postgresql-libpq:setup.Cabal-1.4.0.1, postgresql-libpq:setup.Cabal-1.4.0.0, postgresql-libpq:setup.Cabal-1.2.4.0, postgresql-libpq:setup.Cabal-1.2.3.0, postgresql-libpq:setup.Cabal-1.2.2.0, postgresql-libpq:setup.Cabal-1.2.1, postgresql-libpq:setup.Cabal-1.1.6, postgresql-libpq:setup.Cabal-1.24.1.0 (constraint from --enable-multi-repl requires >=3.11)
[__2] fail (backjumping, conflict set: postgresql-libpq, postgresql-libpq:setup.Cabal)
After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: postgresql-libpq:setup.Cabal, eventstore, postgresql-libpq

Expected behavior
This should work fine

Workaround

We can work around this issue by adding Cabal and Cabal-syntax to our cabal.project using a source-repository-package, eg:

source-repository-package
    type: git
    location: https://github.com/haskell/cabal.git
    subdir: Cabal

source-repository-package
    type: git
    location: https://github.com/haskell/cabal.git
    subdir: Cabal-syntax

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