1

I have included cardano-prelude as a dependency in my project's cabal.project file: https://github.com/omefire/api-server/blob/main/cabal.project

However, when I try to build the project with cabal build, I always end up getting this error:

...
[ 7 of 14] Compiling Cardano.Prelude.GHC.Heap ( src/Cardano/Prelude/GHC/Heap.hs, dist/build/Cardano/Prelude/GHC/Heap.o, dist/build/Cardano/Prelude/GHC/Heap.dyn_o )
[ 8 of 14] Compiling Cardano.Prelude.HeapWords ( src/Cardano/Prelude/HeapWords.hs, dist/build/Cardano/Prelude/HeapWords.o, dist/build/Cardano/Prelude/HeapWords.dyn_o )
[ 9 of 14] Compiling Cardano.Prelude.Json.Parse ( src/Cardano/Prelude/Json/Parse.hs, dist/build/Cardano/Prelude/Json/Parse.o, dist/build/Cardano/Prelude/Json/Parse.dyn_o )
[10 of 14] Compiling Cardano.Prelude.Json.Canonical ( src/Cardano/Prelude/Json/Canonical.hs, dist/build/Cardano/Prelude/Json/Canonical.o, dist/build/Cardano/Prelude/Json/Canonical.dyn_o )

src/Cardano/Prelude/Json/Canonical.hs:110:14: error:
    • Could not deduce (Buildable e2)
        arising from a use of ‘parseJSString’
      from the context: ReportSchemaErrors m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:109:10-50
      The type variable ‘e2’ is ambiguous
      These potential instances exist:
        instance Buildable Void -- Defined in ‘Formatting.Buildable’
        instance Buildable IntPtr -- Defined in ‘Formatting.Buildable’
        instance Buildable WordPtr -- Defined in ‘Formatting.Buildable’
        ...plus 24 others
        ...plus 12 instances involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the expression: parseJSString (readEither . toS)
      In an equation for ‘fromJSON’:
          fromJSON = parseJSString (readEither . toS)
      In the instance declaration for ‘FromJSON m Word64’
    |
110 |   fromJSON = parseJSString (readEither . toS)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Cardano/Prelude/Json/Canonical.hs:110:29: error:
    • Could not deduce (Protolude.Conv.StringConv e2 GHC.Base.String)
        arising from a use of ‘readEither’
      from the context: ReportSchemaErrors m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:109:10-50
      The type variable ‘e2’ is ambiguous
      These potential instances exist:
        instance Protolude.Conv.StringConv ByteString GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        instance Protolude.Conv.StringConv LB.ByteString GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        instance Protolude.Conv.StringConv Text GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        ...plus one other
        ...plus one instance involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the first argument of ‘(.)’, namely ‘readEither’
      In the first argument of ‘parseJSString’, namely
        ‘(readEither . toS)’
      In the expression: parseJSString (readEither . toS)
    |
110 |   fromJSON = parseJSString (readEither . toS)
    |                             ^^^^^^^^^^

src/Cardano/Prelude/Json/Canonical.hs:110:42: error:
    • Could not deduce (ConvertText Text e2)
        arising from a use of ‘toS’
      from the context: ReportSchemaErrors m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:109:10-50
      The type variable ‘e2’ is ambiguous
      These potential instances exist:
        instance [safe] ConvertText Text Text
          -- Defined in ‘Protolude.ConvertText’
        instance [safe] ConvertText Text GHC.Base.String
          -- Defined in ‘Protolude.ConvertText’
        ...plus one instance involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the second argument of ‘(.)’, namely ‘toS’
      In the first argument of ‘parseJSString’, namely
        ‘(readEither . toS)’
      In the expression: parseJSString (readEither . toS)
    |
110 |   fromJSON = parseJSString (readEither . toS)
    |                                          ^^^

src/Cardano/Prelude/Json/Canonical.hs:113:14: error:
    • Could not deduce (Buildable e1)
        arising from a use of ‘parseJSString’
      from the context: ReportSchemaErrors m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:112:10-51
      The type variable ‘e1’ is ambiguous
      These potential instances exist:
        instance Buildable Void -- Defined in ‘Formatting.Buildable’
        instance Buildable IntPtr -- Defined in ‘Formatting.Buildable’
        instance Buildable WordPtr -- Defined in ‘Formatting.Buildable’
        ...plus 24 others
        ...plus 12 instances involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the expression: parseJSString (readEither . toS)
      In an equation for ‘fromJSON’:
          fromJSON = parseJSString (readEither . toS)
      In the instance declaration for ‘FromJSON m Integer’
    |
113 |   fromJSON = parseJSString (readEither . toS)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Cardano/Prelude/Json/Canonical.hs:113:29: error:
    • Could not deduce (Protolude.Conv.StringConv e1 GHC.Base.String)
        arising from a use of ‘readEither’
      from the context: ReportSchemaErrors m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:112:10-51
      The type variable ‘e1’ is ambiguous
      These potential instances exist:
        instance Protolude.Conv.StringConv ByteString GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        instance Protolude.Conv.StringConv LB.ByteString GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        instance Protolude.Conv.StringConv Text GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        ...plus one other
        ...plus one instance involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the first argument of ‘(.)’, namely ‘readEither’
      In the first argument of ‘parseJSString’, namely
        ‘(readEither . toS)’
      In the expression: parseJSString (readEither . toS)
    |
113 |   fromJSON = parseJSString (readEither . toS)
    |                             ^^^^^^^^^^

src/Cardano/Prelude/Json/Canonical.hs:113:42: error:
    • Could not deduce (ConvertText Text e1)
        arising from a use of ‘toS’
      from the context: ReportSchemaErrors m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:112:10-51
      The type variable ‘e1’ is ambiguous
      These potential instances exist:
        instance [safe] ConvertText Text Text
          -- Defined in ‘Protolude.ConvertText’
        instance [safe] ConvertText Text GHC.Base.String
          -- Defined in ‘Protolude.ConvertText’
        ...plus one instance involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the second argument of ‘(.)’, namely ‘toS’
      In the first argument of ‘parseJSString’, namely
        ‘(readEither . toS)’
      In the expression: parseJSString (readEither . toS)
    |
113 |   fromJSON = parseJSString (readEither . toS)
    |                                          ^^^

src/Cardano/Prelude/Json/Canonical.hs:116:14: error:
    • Could not deduce (Buildable e0)
        arising from a use of ‘parseJSString’
      from the context: MonadError SchemaError m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:115:10-55
      The type variable ‘e0’ is ambiguous
      These potential instances exist:
        instance Buildable Void -- Defined in ‘Formatting.Buildable’
        instance Buildable IntPtr -- Defined in ‘Formatting.Buildable’
        instance Buildable WordPtr -- Defined in ‘Formatting.Buildable’
        ...plus 24 others
        ...plus 12 instances involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the expression: parseJSString (readEither . toS)
      In an equation for ‘fromJSON’:
          fromJSON = parseJSString (readEither . toS)
      In the instance declaration for ‘FromJSON m Natural’
    |
116 |   fromJSON = parseJSString (readEither . toS)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Cardano/Prelude/Json/Canonical.hs:116:29: error:
    • Could not deduce (Protolude.Conv.StringConv e0 GHC.Base.String)
        arising from a use of ‘readEither’
      from the context: MonadError SchemaError m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:115:10-55
      The type variable ‘e0’ is ambiguous
      These potential instances exist:
        instance Protolude.Conv.StringConv ByteString GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        instance Protolude.Conv.StringConv LB.ByteString GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        instance Protolude.Conv.StringConv Text GHC.Base.String
          -- Defined in ‘Protolude.Conv’
        ...plus one other
        ...plus one instance involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the first argument of ‘(.)’, namely ‘readEither’
      In the first argument of ‘parseJSString’, namely
        ‘(readEither . toS)’
      In the expression: parseJSString (readEither . toS)
    |
116 |   fromJSON = parseJSString (readEither . toS)
    |                             ^^^^^^^^^^

src/Cardano/Prelude/Json/Canonical.hs:116:42: error:
    • Could not deduce (ConvertText Text e0)
        arising from a use of ‘toS’
      from the context: MonadError SchemaError m
        bound by the instance declaration
        at src/Cardano/Prelude/Json/Canonical.hs:115:10-55
      The type variable ‘e0’ is ambiguous
      These potential instances exist:
        instance [safe] ConvertText Text Text
          -- Defined in ‘Protolude.ConvertText’
        instance [safe] ConvertText Text GHC.Base.String
          -- Defined in ‘Protolude.ConvertText’
        ...plus one instance involving out-of-scope types
        (use -fprint-potential-instances to see them all)
    • In the second argument of ‘(.)’, namely ‘toS’
      In the first argument of ‘parseJSString’, namely
        ‘(readEither . toS)’
      In the expression: parseJSString (readEither . toS)
    |
116 |   fromJSON = parseJSString (readEither . toS)
    |                                          ^^^
cabal: Failed to build cardano-prelude-0.1.0.0 (which is required by
exe:api-server-exe from api-server-0.1.0.0). See the build log
above for details.

I tried this on Mac and Linux and got the same result.

How do I get past this issue?

4
  • 1
    Not exactly sure what the problem is but your cabal.project file should contain the same index-state line as the one in cardano-node. That may help Jul 27, 2022 at 22:13
  • 1
    Thanks @ErikdeCastroLopo, that worked! Also, I had to run this on Linux (Ubuntu) for it to work! Thank you!
    – Attilah
    Jul 28, 2022 at 4:03
  • Majority of the Cardano devs use Linux, with the second most common OS being Mac. I don't know of any that use Windows. Jul 28, 2022 at 4:29
  • I was using Mac. The error mentioned in the question was occurring on a mac
    – Attilah
    Jul 31, 2022 at 2:50

1 Answer 1

1

As mentioned by @Erik De Castro Lopo in the comments, this issue was resolved by adding the same index-state line in my cabal.project file as that of cardano-node.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.