Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cryptic error messages due to missing version constraints #114

Open
itsfarseen opened this issue Dec 18, 2024 · 0 comments
Open

Cryptic error messages due to missing version constraints #114

itsfarseen opened this issue Dec 18, 2024 · 0 comments

Comments

@itsfarseen
Copy link

When I was trying to build the project for the first time in Arch Linux, I encountered the following error:

Click to expand
rejecting: plutus-ledger-api-1.23.0.0 (conflict: plutus-tx==1.29.0.0,
plutus-ledger-api => plutus-tx^>=1.23)
> cabal build
HEAD is now at fcdd22094 Merge pull request #677 from albertodvp/bump-plutus-1.23.0.0
HEAD is now at d5b0e7c Merge pull request #40 from mlabs-haskell/uhbif19/add-transformer-instance
Warning: Requested index-state 2024-06-12T10:15:00Z is newer than
'hackage.haskell.org'! Falling back to older state (2024-06-12T08:29:23Z).
Resolving dependencies...
Error: cabal: Could not resolve dependencies:
[__0] trying: cem-script-0.1.0 (user goal)
[__1] trying: plutus-tx-plugin-1.29.0.0 (dependency of cem-script)
[__2] trying: plutus-tx-1.29.0.0 (dependency of cem-script)
[__3] next goal: plutus-ledger-api (dependency of cem-script)
[__3] rejecting: plutus-ledger-api-1.29.0.0 (conflict: cem-script =>
plutus-ledger-api^>=1.23.0.0)
[__3] skipping: plutus-ledger-api-1.28.0.0, plutus-ledger-api-1.27.0.0,
plutus-ledger-api-1.26.0.0, plutus-ledger-api-1.25.0.0,
plutus-ledger-api-1.24.0.0 (has the same characteristics that caused the
previous version to fail: excluded by constraint '^>=1.23.0.0' from
'cem-script')
[__3] rejecting: plutus-ledger-api-1.23.0.0 (conflict: plutus-tx==1.29.0.0,
plutus-ledger-api => plutus-tx^>=1.23)
[__3] skipping: plutus-ledger-api-1.22.1.0, plutus-ledger-api-1.21.0.0,
plutus-ledger-api-1.20.0.0, plutus-ledger-api-1.19.0.0,
plutus-ledger-api-1.18.0.0, plutus-ledger-api-1.17.0.0,
plutus-ledger-api-1.16.0.0, plutus-ledger-api-1.15.0.1,
plutus-ledger-api-1.15.0.0, plutus-ledger-api-1.14.0.0,
plutus-ledger-api-1.13.0.0, plutus-ledger-api-1.12.0.0,
plutus-ledger-api-1.11.0.0, plutus-ledger-api-1.10.0.0,
plutus-ledger-api-1.9.1.0, plutus-ledger-api-1.9.0.0,
plutus-ledger-api-1.8.0.0, plutus-ledger-api-1.7.0.1,
plutus-ledger-api-1.7.0.0, plutus-ledger-api-1.6.0.0,
plutus-ledger-api-1.5.0.2, plutus-ledger-api-1.5.0.1,
plutus-ledger-api-1.5.0.0, plutus-ledger-api-1.4.0.0,
plutus-ledger-api-1.3.0.0, plutus-ledger-api-1.2.0.0,
plutus-ledger-api-1.1.1.0, plutus-ledger-api-1.1.0.0,
plutus-ledger-api-1.0.0.1, plutus-ledger-api-1.0.0.0,
plutus-ledger-api-1.22.0.0 (has the same characteristics that caused the
previous version to fail: excludes 'plutus-tx' version 1.29.0.0)
[__3] fail (backjumping, conflict set: cem-script, plutus-ledger-api,
plutus-tx)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: plutus-core, cem-script,
plutus-ledger-api, plutus-tx-plugin, plutus-tx, cardano-crypto-class
Try running with --minimize-conflict-set to improve the error message.

I was not able to figure out why cabal was resolving to the wrong version of plutus-tx.

So I pinned thie plutus-tx version in the cabal file and tried again. After pinning a few more dependencies as per the following snippet, I was able to obtain an error message that makes sense:

Fixes:

common common-onchain
  import:        common-lang
  build-depends:
    , plutarch
    , plutarch-extra
    , plutarch-ledger-api
    , plutus-core           ^>=1.23.0.0   -- updated
    , plutus-ledger-api     ^>=1.23.0.0   
    , plutus-tx             ^>=1.23.0.0   -- updated
    , plutus-tx-plugin      ^>=1.23.0.0   -- updated
    , template-haskell
    , th-abstraction       >=0.6.0.0
common common-offchain
  import:        common-lang

  -- Cardano-api:internal required due to:
  -- https://github.com/IntersectMBO/cardano-api/issues/502
  build-depends:
    , aeson
    , bytestring
    , cardano-api
    , cardano-api:internal
    , cardano-crypto-class ^>=2.1.2  -- updated
    , cardano-ledger-alonzo
    , cardano-ledger-babbage
    , cardano-ledger-core

Error message:

Click to expand:
cardano-crypto-class-2.1.3.0, cardano-crypto-class-2.1.2.0 (conflict:
pkg-config package libblst-any, not found in the pkg-config database)
❯ cabal build
Warning: Requested index-state 2024-06-12T10:15:00Z is newer than
'hackage.haskell.org'! Falling back to older state (2024-06-12T08:29:23Z).
Resolving dependencies...
Error: cabal: Could not resolve dependencies:
[__0] trying: cem-script-0.1.0 (user goal)
[__1] next goal: cardano-crypto-class (dependency of cem-script)
[__1] rejecting: cardano-crypto-class-2.1.5.0, cardano-crypto-class-2.1.4.0,
cardano-crypto-class-2.1.3.0, cardano-crypto-class-2.1.2.0 (conflict:
pkg-config package libblst-any, not found in the pkg-config database)
[__1] rejecting: cardano-crypto-class-2.1.1.0 (conflict: cem-script =>
cardano-crypto-class^>=2.1.2)
[__1] skipping: cardano-crypto-class-2.1.0.2, cardano-crypto-class-2.1.0.1,
cardano-crypto-class-2.1.0.0, cardano-crypto-class-2.0.0.1,
cardano-crypto-class-2.0.0.0.1, cardano-crypto-class-2.0.0 (has the same
characteristics that caused the previous version to fail: excluded by
constraint '^>=2.1.2' from 'cem-script')
[__1] fail (backjumping, conflict set: cardano-crypto-class, cem-script)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: cem-script, cardano-crypto-class

Then I proceeded to install blst from AUR and libsecp256k1 from pacman, post which the build succeeded.


Questions:

  • Should we pin the other dependencies like this so that if the user forgets to install a system dependency, they'll get an error that makes sense?
  • Should we add the following note to the README?

    If you notice cryptic dependency related errors, double check if the system dependencies are installed

In addition to this:

  • We should add the following to the list of system dependencies:
    • libsecp256k1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant