Skip to content

The solver should distinguish errors that are cause by the absence of a system libraries from other errors #10239

Open
@Kleidukos

Description

Let's take a very real and reproducible solver error message:

[__0] trying: cardano-node-9.1.0 (user goal)
[__1] trying: ouroboros-consensus-0.20.0.0 (dependency of cardano-node)
[__2] trying: vector-0.13.1.0 (dependency of ouroboros-consensus)
[__3] next goal: cardano-crypto-class (dependency of cardano-node)
[__3] rejecting: cardano-crypto-class; 2.1.5.0, 2.1.4.0 (conflict: pkg-config package libblst-any, not found in the pkg-config database)
[__3] rejecting: cardano-crypto-class-2.1.3.0 (conflict: vector==0.13.1.0, cardano-crypto-class => vector<0.13)
[__3] skipping: cardano-crypto-class; 2.1.2.0, 2.1.1.0, 2.1.0.2, 2.1.0.1, 2.1.0.0 (has the same characteristics that caused the previous version to fail: excludes 'vector' version 0.13.1.0)
[__3] trying: cardano-crypto-class-2.0.0.1
[__4] next goal: base (dependency of cardano-node)
[__4] rejecting: base-4.18.2.1/installed-4.18.2.1 (conflict: cardano-crypto-class => base>=4.14 && <4.17)
[__4] skipping: base; 4.20.0.1, 4.20.0.0, 4.19.1.0, 4.19.0.0, 4.18.2.1, 4.18.2.0, 4.18.1.0, 4.18.0.0, 4.17.2.1, 4.17.2.0, 4.17.1.0, 4.17.0.0 (has the same characteristics that caused the previous version to fail: excluded by constraint '>=4.14 && <4.17' from 'cardano-crypto-class')

Two things happen here:

  • The most obvious (because it's the "conclusion") is that the solver cannot reconcile the version of base it has picked for base. You are then led to believe that the GHC version you use must be modified
  • You are missing the libblst system library, and the solver has decided that it would simply find a version that would require it.

However these are two very different types of error, and mixing them together does not help anyone!


@PPKFS comments, quite understandably:

what I'm saying is the error should be this

[__0] trying: cardano-node-9.1.0 (user goal)
[__1] trying: ouroboros-consensus-0.20.0.0 (dependency of cardano-node)
[__2] trying: vector-0.13.1.0 (dependency of ouroboros-consensus)
[__3] next goal: cardano-crypto-class (dependency of cardano-node)
[__3] rejecting: cardano-crypto-class; 2.1.5.0, 2.1.4.0 (conflict: pkg-config package libblst-any, not found in the pkg-config database)
this ain't it chief. we're done. sorry.

no trying base 3.0, no endless spam of every minor version of every transitive package and how it doesn't work with some other package

If people want to provide optional system dependency, we have a tool for it, it's called a flag. The solver is even able to switch them on and off if it thinks it will help finding a working plan.

Let's get rid of this quirk.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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