kolmodin / binary

Efficient, pure binary serialisation using ByteStrings in Haskell.
Other
105 stars 67 forks source link

binary doesn't install with ghc 8.10.3 and containers 0.6.4.1 #180

Open GeorgeCo opened 3 years ago

GeorgeCo commented 3 years ago

$ ghc --version The Glorious Glasgow Haskell Compilation System, version 8.10.3 bash-3.2$ cabal install binary --lib Resolving dependencies... cabal: Could not resolve dependencies: [0] trying: binary-0.8.8.0/installed-0.8.8.0 (user goal) [1] next goal: containers (user goal) [1] rejecting: containers-0.6.4.1 (conflict: binary => containers==0.6.2.1/installed-0.6.2.1) [1] rejecting: containers-0.6.3.1, containers-0.6.2.1/installed-0.6.2.1, containers-0.6.2.1, containers-0.6.1.1, containers-0.6.0.1, containers-0.5.11.0, containers-0.5.10.2, containers-0.5.10.1, containers-0.5.9.2, containers-0.5.8.2, containers-0.5.7.1, containers-0.5.7.0, containers-0.5.6.3, containers-0.5.6.2, containers-0.5.6.1, containers-0.5.6.0, containers-0.5.5.1, containers-0.5.5.0, containers-0.5.4.0, containers-0.5.3.1, containers-0.5.3.0, containers-0.5.2.1, containers-0.5.2.0, containers-0.5.1.0, containers-0.5.0.0, containers-0.4.2.1, containers-0.4.2.0, containers-0.4.1.0, containers-0.4.0.0, containers-0.3.0.0, containers-0.2.0.1, containers-0.2.0.0, containers-0.1.0.1, containers-0.1.0.0, containers-0.5.9.1, containers-0.5.8.1 (constraint from user target requires ==0.6.4.1) [__1] fail (backjumping, conflict set: binary, containers) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: binary, containers, ghc

Hanicef commented 3 years ago

Same problem with GHC ver. 8.10.4, but conflicts with base:

Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: klavia-server-0.1.0.0 (user goal)
[__1] next goal: binary (dependency of klavia-server)
[__1] rejecting: binary-0.8.8.0/installed-0.8.8.0 (conflict: klavia-server => binary^>=0.10.0.0)
[__1] skipping: binary-0.8.8.0, binary-0.8.7.0, binary-0.8.6.0, binary-0.8.5.1, binary-0.8.5.0, binary-0.8.4.1, binary-0.8.4.0, binary-0.8.3.0, binary-0.8.2.1, binary-0.8.2.0, binary-0.8.1.0, binary-0.8.0.1, binary-0.8.0.0, binary-0.7.6.1, binary-0.7.6.0, binary-0.7.5.0, binary-0.7.4.0, binary-0.7.3.0, binary-0.7.2.3, binary-0.7.2.2, binary-0.7.2.1, binary-0.7.2.0, binary-0.7.1.0, binary-0.7.0.1, binary-0.7.0.0, binary-0.6.4.0, binary-0.6.3.0, binary-0.6.2.0, binary-0.6.1.0, binary-0.6.0.0, binary-0.5.1.1, binary-0.5.1.0, binary-0.5.0.2, binary-0.5.0.1, binary-0.5, binary-0.4.5, binary-0.4.4, binary-0.4.3.1, binary-0.4.3, binary-0.4.2, binary-0.4.1, binary-0.4, binary-0.3, binary-0.2 (has the same characteristics that caused the previous version to fail: excluded by constraint '^>=0.10.0.0' from 'klavia-server')
[__1] trying: binary-0.10.0.0
[__2] next goal: base (dependency of klavia-server)
[__2] rejecting: base-4.14.1.0/installed-4.14.1.0 (conflict: binary => base>=4.5.0.0 && <4.13)
[__2] skipping: base-4.15.0.0, base-4.14.1.0, base-4.14.0.0, base-4.13.0.0 (has the same characteristics that caused the previous version to fail: excluded by constraint '>=4.5.0.0 && <4.13' from 'binary')
[__2] rejecting: base-4.12.0.0, base-4.11.1.0, base-4.11.0.0, base-4.10.1.0, base-4.10.0.0, base-4.9.1.0, base-4.9.0.0, base-4.8.2.0, base-4.8.1.0, base-4.8.0.0, base-4.7.0.2, base-4.7.0.1, base-4.7.0.0, base-4.6.0.1, base-4.6.0.0, base-4.5.1.0, base-4.5.0.0, base-4.4.1.0, base-4.4.0.0, base-4.3.1.0, base-4.3.0.0, base-4.2.0.2, base-4.2.0.1, base-4.2.0.0, base-4.1.0.0, base-4.0.0.0, base-3.0.3.2, base-3.0.3.1 (constraint from non-upgradeable package requires installed instance)
[__2] fail (backjumping, conflict set: base, binary, klavia-server)
After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: binary, klavia-server, base

This seems to have to do with the dependency on base; support for versions 4.13 and later has apparently been removed from the latest version of binary. Downgrading binary to version 0.8.8, however, seems to fix the problem.

bgamari commented 3 years ago

It appears that binary-0.10.0.0 was revised to exclude base-4.13 and earlier. The reason for this appears to be compatibility with the MonadFail proposal: the Monad instance for Get tries to define the fail method, which no longer exists. This is fixed in master.