I'm trying to compile a haskell project using cabal, but when I execute
cabal configure appears:
Could not resolve dependencies:
[__0] trying: MM-0.1.0.0 (user goal)
[__1] next goal: base (dependency of MM)
[__1] rejecting: base-4.12.0.0/installed-4.1... (conflict: MM => base>=4.9 &&
<4.10)
[__1] fail (backjumping, conflict set: MM, base)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: MM, base
Trying configure anyway.
Configuring MM-0.1.0.0...
cabal: Encountered missing dependencies:
base ==4.9.*, cassava ==0.5.*, containers ==0.5.*, time ==1.6.*
I tried using cabal new-build and cabal install --only-dependencies but it still doesn´t work.
The program you're installing needs base 4.9.x.x, which means GHC 8.0.x. Your GHC is too new. Downgrade to 8.0.2, or look for a newer version of the program you're trying to install.
Related
cabal build myproject
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] next goal: plutarch (user goal)
[__0] rejecting: plutarch-1.3.0 (conflict: requires GHC2021)
[__0] fail (backjumping, conflict set: plutarch)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: plutarch
I'm running into the above error (conflict: requires GHC2021) however it is not clear what this is? It does not seem to be a package? There is various mentions of GHC2021 in a web search but I still don't understand what this conflict is?
https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/control.html seems to indicate it is a language spec, but I'm not sure where this should perhaps be specified?
More info:
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 9.0.2
$ cabal --version
cabal-install version 3.4.0.0
compiled using version 3.4.0.0 of the Cabal library
cabal.project:
packages: myproject/
source-repository-package
type: git
location: https://github.com/Plutonomicon/plutarch-plutus.git
tag: 01a67f56b2bf428538e92ed9ada0ce88d90ab636
Fixed when updating GHC to 9.4.3 and cabal to 3.6.2.
I am trying to install the specific version template-haskell-2.17.0.0. I run this command, but get an error during dependency resolution:
❯ cabal install template-haskell-2.17.0.0 --lib
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] next goal: template-haskell (user goal)
[__0] rejecting: template-haskell-2.18.0.0 (constraint from user target
requires ==2.17.0.0)
[__0] rejecting: template-haskell-2.17.0.0 (constraint from user target
requires ==2.16.0.0)
[__0] rejecting: template-haskell-2.16.0.0/installed-2.16.0.0,
template-haskell-2.16.0.0, template-haskell-2.15.0.0,
template-haskell-2.14.0.0, template-haskell-2.13.0.0,
template-haskell-2.12.0.0, template-haskell-2.11.1.0,
template-haskell-2.11.0.0, template-haskell-2.10.0.0,
template-haskell-2.9.0.0, template-haskell-2.8.0.0, template-haskell-2.7.0.0,
template-haskell-2.6.0.0, template-haskell-2.5.0.0, template-haskell-2.4.0.1,
template-haskell-2.4.0.0, template-haskell-2.3.0.1, template-haskell-2.3.0.0,
template-haskell-2.2.0.0 (constraint from user target requires ==2.17.0.0)
[__0] fail (backjumping, conflict set: template-haskell)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: template-haskell
I'm using the latest cabal version:
❯ cabal --version
cabal-install version 3.6.2.0
compiled using version 3.6.3.0 of the Cabal library
Some packages come with GHC and cannot be reinstalled. These are known as "boot" packages. The template-haskell package is one of these boot packages. You can find a complete list of them here: https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history.
For your particular case, template-haskell-2.17.0.0 is part of GHC 9.0.2 (or 9.0.1). The only way to install that version of template-haskell is to use the appropriate version of GHC.
Based on the error output, I'm guessing that you're using some version of GHC 8.10.x, probably 8.10.7. You don't mention how you installed GHC, so I don't know exactly how to tell you to upgrade. If you used GHCup, then you should be able to upgrade GHC with this command:
ghcup install ghc 9.0.2 --set
In the past I tried to install Clipboard via Cabal, unknowing it only works on 32-bit Windows, so it failed. Now, I'm trying to install utf8-string via Cabal, but when I run the command cabal new-install utf8-string I get the following:
Resolving dependencies...
cabal.exe: Could not resolve dependencies:
[__0] trying: Clipboard-2.3.2.0 (user goal)
[__1] next goal: Win32 (dependency of Clipboard)
[__1] rejecting: Win32-2.6.1.0/installed-2.6..., Win32-2.8.5.0, Win32-2.8.4.0,
Win32-2.8.3.0, Win32-2.8.2.0, Win32-2.8.1.0, Win32-2.8.0.0, Win32-2.7.0.0,
Win32-2.6.2.0, Win32-2.6.1.0, Win32-2.6.0.0, Win32-2.5.4.1, Win32-2.5.3.0,
Win32-2.5.2.0, Win32-2.5.1.0, Win32-2.5.0.0, Win32-2.4.0.0 (conflict:
Clipboard => Win32>=2.2.0.0 && <2.4)
[__1] trying: Win32-2.3.1.1
[__2] trying: base-4.12.0.0/installed-4.1... (user goal)
[__3] next goal: ghc (user goal)
[__3] rejecting: ghc-8.6.5/installed-8.6... (conflict: Win32==2.3.1.1, ghc =>
Win32==2.6.1.0/installed-2.6...)
[__3] rejecting: ghc-8.6.5 (conflict: base==4.12.0.0/installed-4.1..., ghc =>
base<0 && ==4.12.*)
[__3] rejecting: ghc-8.6.4, ghc-8.6.1, ghc-8.4.4, ghc-8.4.3, ghc-8.4.1,
ghc-8.2.2, ghc-8.2.1 (constraint from user target requires ==8.6.5)
[__3] fail (backjumping, conflict set: Win32, base, ghc)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: ghc, Win32, base, Clipboard
In case it's important, I'm running Windows 10 64-bit, and I'm using Cygwin64 Terminal.
Cabal Dependency Failure: A story of two tools
You: Cabal! Install something old.
Cabal: Can do. And for my buddy GHC I will also record this something old in $HOME/.ghc/$arch-$ghc_version/environments/default.
You: Cabal! Install something else.
Cabal: Ok. Let me check what packages I should install for that. Yeah now I have that list... it says here I should install new thing - but an old version of new thing is mandated by the default environment.
Finding your way out
The Terminator
Screw the old environment, I don't care.
rm $HOME/.ghc/*/environments/default
The Librarian
I like my old environment, let's build this package with a new environment.
cabal install --package-env some-new-named-package-environment utf8-string
The Programmer
I like directory-based workflows and don't really want to think about environments, how about you think about that for me, cabal.
cabal install --lib utf8-string --package-env .
The Programmer (Summer 2020, I hope)
I like directory-based workflows and don't want to talk about environments. Luckily someone fixed the underlying issue https://github.com/haskell/cabal/issues/5559 so now I can just type cabal install --lib utf8-string.
I'm tring to install the package cabal-debian globally using cabal v2-install cabal-debian and get this error message:
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: base-4.12.0.0/installed-4.1... (user goal)
[__1] trying: binary-0.8.7.0 (user goal)
[__2] next goal: ghc (user goal)
[__2] rejecting: ghc-8.6.5/installed-8.6... (conflict: binary==0.8.7.0, ghc =>
binary==0.8.6.0/installed-0.8...)
[__2] trying: ghc-8.6.5
[__3] rejecting: ghc:-buildable (conflict: base==4.12.0.0/installed-4.1...,
ghc -buildable => base<0)
[__3] rejecting: ghc:+buildable (manual flag can only be changed explicitly)
[__3] fail (backjumping, conflict set: base, ghc, ghc:buildable)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: binary, base, ghc, ghc:buildable
Try running with --minimize-conflict-set to improve the error message.
I am using cabal 3.0.0.0 and have ghc 8.6.5 installed.
To me, this looks like you have a version of binary installed that isn't compatible with the boot libraries that come with the compiler. I recommend that you edit the file
~/.ghc/<something>-8.6.5/environments/default
and delete the line that mentions binary, then try again. (The <something> is almost certainly x86_64-linux.)
I'm trying to build my Hakyll site using Travis-CI. However, before I even get that far, I have a dependencies error when trying to install Hakyll as a dependency.
I can build Hakyll locally on my machine with no problems. What might be causing the dependency error, and how can it be resolved? Is there a way to resolve it without actually hard-coding each dependency version?
Here's the output that comes from TravisCI.
travis_fold:end:git.5
$ export PATH=/usr/local/ghc/$(ghc_find 7.6)/bin/:$PATH
travis_fold:start:cabal
$ cabal update
Config file path source is default config file.
Config file /home/travis/.cabal/config not found.
Writing default configuration to /home/travis/.cabal/config
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
travis_fold:end:cabal
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3
$ cabal --version
cabal-install version 1.18.0.2
using version 1.18.1 of the Cabal library
travis_fold:start:before_install.1
$ cabal update
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
travis_fold:end:before_install.1
travis_fold:start:before_install.2
$ cabal install hakyll pandoc
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: hakyll-4.5.3.0 (user goal)
trying: base-4.6.0.1/installed-8aa... (dependency of hakyll-4.5.3.0)
trying: hakyll-4.5.3.0:+checkexternal
trying: http-conduit-2.1.2.3 (dependency of hakyll-4.5.3.0:+checkexternal)
trying: http-client-0.3.3.2 (dependency of http-conduit-2.1.2.3)
trying: exceptions-0.6.1 (dependency of http-client-0.3.3.2)
trying: transformers-0.4.1.0 (dependency of http-conduit-2.1.2.3)
next goal: mtl (dependency of hakyll-4.5.3.0)
rejecting: mtl-2.2.1, 2.2.0.1, 2.2 (conflict: hakyll => mtl>=1 && <2.2)
rejecting: mtl-2.1.3.1, 2.1.2 (conflict: transformers==0.4.1.0, mtl =>
transformers==0.3.*)
rejecting: mtl-2.1.1, 2.1 (conflict: base==4.6.0.1/installed-8aa..., mtl =>
base<4.6)
rejecting: mtl-2.0.1.1 (conflict: transformers==0.4.1.0, mtl =>
transformers==0.2.*)
rejecting: mtl-2.0.1.0, 2.0.0.0 (conflict: base==4.6.0.1/installed-8aa..., mtl
=> base<4.6)
rejecting: mtl-1.1.1.1, 1.1.1.0, 1.1.0.2, 1.1.0.1, 1.1.0.0, 1.0 (conflict:
exceptions => mtl>=2.0 && <2.3)
Backjump limit reached (change with --max-backjumps).
[31;1mThe command "cabal install hakyll pandoc" failed and exited with 1 during .[0m
Your build has been stopped.
If there's any other output that would be useful, let me know and I can provide it.
The first thing to try if you get Backjump limit reached from cabal-install is to try again with the option --max-backjumps=-1 which means "search exhaustively", though if it then ends up taking tens of minutes you'd need to interrupt it or rely on the Travis-CI timeout. You can also use 500 or 1000 rather than -1 for a large but limited search - the default is 200.
If that doesn't work then try to pick out specific projects to constrain to a specific version with the option --constraint 'foo==0.1.0.0, preferably one that you actually know should be installable with the same GHC version.
In this particular case, the following two lines suggest that hakyll itself was at the root of the problem:
rejecting: mtl-2.2.1, 2.2.0.1, 2.2 (conflict: hakyll => mtl>=1 && <2.2)
rejecting: mtl-2.1.1, 2.1 (conflict: base==4.6.0.1/installed..., mtl => base<4.6)
In other words, base, which is tied to the GHC version, seems to require mtl>=2.2 (or perhaps less than 2.1 but I suspect that wouldn't have worked either). hakyll was requiring mtl<2.2, so there seemed to be a fundamental conflict implying that this version of hakyll wouldn't work this version of base.