Skip to content

with cabal 3.0 , cabal install can't install new versions of a package on ghc 8.8.1 #6342

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

Closed
GeorgeCo opened this issue Nov 11, 2019 · 2 comments

Comments

@GeorgeCo
Copy link

Describe the bug
with cabal 3.0 , cabal install can't install new versions of a package on ghc 8.8.1

To Reproduce
cabal --version
cabal-install version 3.0.0.0
compiled using version 3.0.0.0 of the Cabal library
bash-3.2$ cabal install directory
cabal install directory
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: directory-1.3.4.0 (user goal)
[__1] next goal: ghc (user goal)
[__1] rejecting: ghc-8.8.1/installed-8.8... (conflict: directory==1.3.4.0, ghc
=> directory==1.3.3.2/installed-1.3...)
[__1] rejecting: ghc-8.6.5, 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.8.1)
[__1] fail (backjumping, conflict set: directory, ghc)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: directory, ghc

Desired behavior
That this work as it did in cabal 2

System information
mac os 10.14.6
cabal --version
cabal-install version 3.0.0.0
compiled using version 3.0.0.0 of the Cabal library
ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.8.1

Additional context
This was first reported as a directory package issue: haskell/directory#98 butI believe it is a generic issue. The response there was:

I believe this caused by the difference in behavior between cabal v1-install and cabal v2-install. You are currently using v2-install, which installs to a package environment file such as ~/.ghc/${arch}-${os}/environments/default. In that environment file (which you can inspect with a text editor), directory-1.3.3.2 is probably already installed, so you cannot install a different version.

To work around this, you can try to install to a new environment, say ./foobar.env:

cabal v2-install --lib --package-env=./foobar.env directory-1.3.4.0
...
There is some bit of documentation in the Cabal user guide on the new changes but I do agree it is quite confusing and the migration path is not adequately explained. It did take me some time to figure out what was causing the issue your described.

I do suggest posting your feedback on the Cabal project itself, not here, as I'm not sure whether the maintainers of Cabal would see this thread.

@GeorgeCo
Copy link
Author

However, I was happy to discover that there is a workaround: cabal v1-install directory

@phadej
Copy link
Collaborator

phadej commented Nov 13, 2019

Duplicate of #5888 and #5559

@phadej phadej closed this as completed Nov 13, 2019
rudymatela added a commit to rudymatela/speculate that referenced this issue Apr 14, 2021
... to hopefully make cabal happy

Cabal now defaults to keeping the installed version:

cf:

* https://travis-ci.org/github/rudymatela/speculate/jobs/767029407#L296
* haskell/cabal#6342
* haskell/cabal#5888
* The full behaviour of --lib seems to not even be decided yet:
  haskell/cabal#5559

*sigh*
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

2 participants