5

To use Json, I want to install the Aeson package.

In the package.yaml file I added - aesonto the dependencies: section, and I got a whole load of errors, which I cannot find online like: "But this GHC boot package has been pruned".

I tried to understand the errors, but I don't understand any of them. For example for the first one: If I do stack ls dependencies I get text 1.2.4.0, which meets the matches, so why doesn't it work?

Is there a way to let Stack install things for me instead of having to edit the yaml file and then running into issues? (stack install doesnt seem to do anything)

The full error:

PS D:\Documents\Programming\Unity\Poging8_(catan)\HaskellServer> stack build

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for aeson-1.4.7.1:
    text must match >=1.2.3.0 && <1.3, but this GHC boot package has been pruned (issue #4510); you need to add the
         package explicitly to extra-deps  (latest matching version is 1.2.4.0)
needed due to HaskellCatanServer-0.1.0.0 -> aeson-1.4.7.1

In the dependencies for attoparsec-0.13.2.4:
    text must match >=1.1.1.3, but this GHC boot package has been pruned (issue #4510); you need to add the package
         explicitly to extra-deps  (latest matching version is 1.2.4.0)
needed due to HaskellCatanServer-0.1.0.0 -> attoparsec-0.13.2.4

In the dependencies for ghc-boot-th-8.6.5:
    base-4.13.0.0 from stack configuration does not match >=4.7 && <4.13  (latest matching version is 4.12.0.0)
needed due to HaskellCatanServer-0.1.0.0 -> ghc-boot-th-8.6.5

In the dependencies for hashable-1.3.0.0:
    text must match >=0.12 && <1.3, but this GHC boot package has been pruned (issue #4510); you need to add the package
         explicitly to extra-deps  (latest matching version is 1.2.4.0)
needed due to HaskellCatanServer-0.1.0.0 -> hashable-1.3.0.0

In the dependencies for scientific-0.3.6.2:
    text must match >=0.8, but this GHC boot package has been pruned (issue #4510); you need to add the package
         explicitly to extra-deps  (latest matching version is 1.2.4.0)
needed due to HaskellCatanServer-0.1.0.0 -> scientific-0.3.6.2

In the dependencies for template-haskell-2.14.0.0:
    base-4.13.0.0 from stack configuration does not match >=4.9 && <4.13  (latest matching version is 4.12.0.0)
needed due to HaskellCatanServer-0.1.0.0 -> template-haskell-2.14.0.0

In the dependencies for time-1.8.0.4:
    base-4.13.0.0 from stack configuration does not match >=4.7 && <4.13  (latest matching version is 4.12.0.0)
needed due to HaskellCatanServer-0.1.0.0 -> time-1.8.0.4

In the dependencies for uuid-types-1.0.3:
    text must match >=1 && <1.3, but this GHC boot package has been pruned (issue #4510); you need to add the package
         explicitly to extra-deps  (latest matching version is 1.2.4.0)
needed due to HaskellCatanServer-0.1.0.0 -> uuid-types-1.0.3

Some different approaches to resolving this:

  * Build requires unattainable version of base. Since base is a part of GHC, you most likely need to use a different
    GHC version with the matching base.

Plan construction failed.

Additional information:

In package.yaml I have dependencies:

- base >= 4.7 && < 5
- network
- bytestring
- aeson

I have NOT manually edited stack.yaml, and I have resolver lts-16.3 and extra-deps:

- ghc-8.6.5@sha256:3591225289bdf8cf8f62b10f2aebc9ea3e25a15294545a5312a419e0317784f9,13976
- ghc-boot-8.6.5@sha256:8b608d2f36aad99a37a7d1b70319d43195128de6485b15fa7d4638b2942ce2a2,1772
- ghc-boot-th-8.6.5@sha256:c120f0d15944e770e2b698f5139f0003a86f9e25e5d1a7c6631e442129232748,1075
- ghci-8.6.5@sha256:886e52e6ab43b0de39fd5d92d8d1a5d7fac04c0f145c62b39baae04476208bd9,2126
- template-haskell-2.14.0.0@sha256:e3747ae9e2aeec160196706dd470b5fc4175678ec4136bcec9124534f67d83bc,1724
- time-1.8.0.4@sha256:3f6eddf238b828eb4f82683acce1c3afe64784f0d20114239b738c123316c85c,5494

stack ls dependencies

Win32 2.6.1.0
aeson 1.4.7.1
array 0.5.4.0
attoparsec 0.13.2.4
base 4.13.0.0
base-compat 0.11.1
base-compat-batteries 0.11.1
base-orphans 0.8.2
binary 0.8.7.0
bytestring 0.10.10.0
containers 0.6.2.1
deepseq 1.4.4.0
dlist 0.8.0.8
filepath 1.4.2.1
ghc-boot-th 8.6.5
ghc-prim 0.5.3
hashable 1.3.0.0
integer-gmp 1.0.2.0
integer-logarithms 1.0.3
network 3.1.1.1
pretty 1.1.3.6
primitive 0.7.0.1
random 1.1
rts 1.0
scientific 0.3.6.2
tagged 0.8.6
template-haskell 2.14.0.0
text 1.2.4.0
th-abstraction 0.3.2.0
time 1.8.0.4
time-compat 1.9.3
transformers 0.5.6.2
unordered-containers 0.2.10.0
uuid-types 1.0.3
vector 0.12.1.2
The Coding Wombat
  • 805
  • 1
  • 10
  • 29
  • 2
    Try removing all these extra deps. – arrowd Jul 06 '20 at 19:38
  • @arrowd Well that was simple. If you know why this helped, maybe you can write up an answer? It now seems like magic, since I didn't edit that file in the first place. – The Coding Wombat Jul 06 '20 at 20:26
  • 1
    And this is exactly why I can't write an answer. Generally, the `stack.yaml` is very minimal file, so I also have no idea where all these constrains came from. As rule of thumb, just try to keep all the extra stuff away from `stack.yaml`. – arrowd Jul 07 '20 at 07:50

1 Answers1

5

So your problem is a miss match between lts and extra-deps versions. As @arrowd commented, the solution is to remove extra-deps section... Let me explain the reason in detail:

  • Each lts (a.k.a snapshot) has an associated ghc version. For lts-16.3 such a version is ghc-8.8.3 as you can check in the linked docs.

  • when you write a dependency in package.yaml, stack will use the version defined in the selected lts, and it'll be downloaded form stackage server. For example, in the linked docs, you can search for aeson package. The version used in lts-16.3 is aeson-1.4.7.1

  • All packages version in a lts are guaranteed to work well together without dependency problems. (I think there are a few exceptions documented in the stack web, due to system packages but I'm not so sure)

  • The problem comes with extra-deps. Which are downloaded directly from hackage server with no guarantees of dependency compatibility. In your case, one extra dep was ghc-8.6.5. Obviously, there is a dependency problem between the compiler version defined in the snapshot: ghc-8.8.3 and the version you want as an extra-dep ghc-8.6.5

Hope it clarifies some stack terminology.

lsmor
  • 4,698
  • 17
  • 38
  • 1
    Thank you for the explanation. Maybe you can add the solution @arrowd mentioned in his comment as well so this answer is an explanation for the solution, as well as the solution itself. – The Coding Wombat Jul 08 '20 at 11:00