Skip to content

Calling cabal build in nix-shell fails #294

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
codygman opened this issue Aug 6, 2020 · 9 comments · Fixed by #296
Closed

Calling cabal build in nix-shell fails #294

codygman opened this issue Aug 6, 2020 · 9 comments · Fixed by #296
Labels
CI Continuous integration os: nixos type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..

Comments

@codygman
Copy link

codygman commented Aug 6, 2020

Gives error:

[cody@nixos:~/code/haskell-language-server]$ nix-shell --pure --run "cabal build"
Warning: Requested index-state2020-07-27T12:40:45Z is newer than
'hackage.haskell.org'! Falling back to older state (2020-07-23T01:35:56Z).
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: ghcide-0.2.0 (user goal)
[__1] next goal: lsp-test (dependency of ghcide)
[__1] rejecting: lsp-test-0.10.3.0/installed-BEL0YuFHxCdHyQYBLVjxpT (conflict:
ghcide => lsp-test>=0.11.0.2 && <0.12)
[__1] trying: lsp-test-0.11.0.2
[__2] trying: haskell-language-server-0.2.2.0 (user goal)
[__3] rejecting: haskell-language-server:!test (constraint from config file,
command line flag, or user target requires opposite flag selection)
[__3] rejecting: haskell-language-server:*test (conflict: lsp-test==0.11.0.2,
haskell-language-server *test => lsp-test>=0.11.0.3)
[__3] fail (backjumping, conflict set: haskell-language-server, lsp-test,
haskell-language-server:test)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: ghcide, lsp-test,
haskell-language-server, haskell-language-server:test
Try running with --minimize-conflict-set to improve the error message.

Building with stack in the meantime and will report if that's an adequate workaround for the time being.

@lukel97
Copy link
Collaborator

lukel97 commented Aug 6, 2020

Not sure why it's building the ghcide tests, but should be fixable with a constraint bump in ghcide

@codygman
Copy link
Author

codygman commented Aug 6, 2020

I haven't used cabal in forever since I've been using stack so I'm not sure what you meant.

I just removed the tests from the cabal file for now and it's building 😅

Edit: nevermind, I had set --allow-newer in some config file. New error is:

Warning: Requested index-state2020-07-27T12:40:45Z is newer than
'hackage.haskell.org'! Falling back to older state (2020-07-23T01:35:56Z).
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] next goal: ghcide (user goal)
[__0] rejecting: ghcide-0.2.0 (constraint from user target requires ==0.1.0)
[__0] trying: ghcide-0.1.0
[__1] trying: ghcide:-ghc-lib
[__2] next goal: hie-bios (dependency of ghcide -ghc-lib)
[__2] rejecting: hie-bios-0.5.1/installed-imznkM3AihCAjSZAxNQgA,
hie-bios-0.6.1, hie-bios-0.6.0, hie-bios-0.5.1, hie-bios-0.5.0 (conflict:
ghcide -ghc-lib => hie-bios>=0.4.0 && <0.5)
[__2] trying: hie-bios-0.4.0
[__3] next goal: haskell-language-server (user goal)
[__3] rejecting: haskell-language-server-0.2.2.0 (conflict: hie-bios==0.4.0,
haskell-language-server => hie-bios^>=0.6.1)
[__3] fail (backjumping, conflict set: haskell-language-server, hie-bios)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: ghcide, hie-bios,
haskell-language-server, ghcide:ghc-lib
Try running with --minimize-conflict-set to improve the error message.

I'll have to relearn cabal dependency fixing later today 😄

@codygman
Copy link
Author

codygman commented Aug 6, 2020

It looks like stack build also failed for me:

[nix-shell:~/code/haskell-language-server]$ stack build

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

In the dependencies for ghcide-0.1.0:
    hie-bios-0.6.1 from stack configuration does not match >=0.4.0 && <0.5  (latest matching version is 0.4.0)
needed since ghcide is a build target.

Some different approaches to resolving this:

  * Set 'allow-newer: true' in /home/cody/.stack/config.yaml to ignore all version constraints and build anyway.

  * Recommended action: try adding the following to your extra-deps in /home/cody/code/haskell-language-server/stack.yaml:

- hie-bios-0.4.0@sha256:e2d4abef43824d99846d8e08889f3c5ba2ea58414a400ba000d9e6488987a08a,8590

Plan construction failed.

and following it's instructions results in the probably unsurprising to you guys:

[nix-shell:~/code/haskell-language-server]$ stack build
The same package name is used in multiple local packages

hie-bios used in:
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "hie-bios", pkgVersion = mkVersion [0,4,0]}) e2d4abef43824d99846d8e08889f3c5ba2ea58414a400ba000d9e6488987a08a,8590 (TreeKey a97096c854e4cdb227d54f45c628d486e710bfda063b3c8ff5e0d15108ef1d90,6579))
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "hie-bios", pkgVersion = mkVersion [0,6,1]}) 72a2d15fbddc21ac8b6d796bedaf2a8d3eb07b78a26e3e0817e583c116f01f21,12124 (TreeKey 0f4e00856edbcef1cb2ac3cb65761c7698ab8ca7975bd601905833daada4838f,11009))

@pepeiborra
Copy link
Collaborator

I suspect that this is a user error, someone has forgotten to run git submodule update perhaps?

To prevent the Nix shell from actually breaking, it would be great to add a Nix CI job.

@codygman
Copy link
Author

codygman commented Aug 6, 2020

I suspect that this is a user error, someone has forgotten to run git submodule update perhaps?

[nix-shell:~/code/haskell-language-server]$ git submodule update
Submodule path 'ghcide': checked out '530c327d50283a071d53476415d8df27cc1cae6f'

[nix-shell:~/code/haskell-language-server]$ cabal build
Warning: Requested index-state2020-07-27T12:40:45Z is newer than
'hackage.haskell.org'! Falling back to older state (2020-07-23T01:35:56Z).
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: ghcide-0.2.0 (user goal)
[__1] next goal: lsp-test (dependency of ghcide)
[__1] rejecting: lsp-test-0.10.3.0/installed-BEL0YuFHxCdHyQYBLVjxpT (conflict:
ghcide => lsp-test>=0.11.0.2 && <0.12)
[__1] trying: lsp-test-0.11.0.2
[__2] trying: haskell-language-server-0.2.2.0 (user goal)
[__3] rejecting: haskell-language-server:!test (constraint from config file,
command line flag, or user target requires opposite flag selection)
[__3] rejecting: haskell-language-server:*test (conflict: lsp-test==0.11.0.2,
haskell-language-server *test => lsp-test>=0.11.0.3)
[__3] fail (backjumping, conflict set: haskell-language-server, lsp-test,
haskell-language-server:test)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: ghcide, lsp-test,
haskell-language-server, haskell-language-server:test
Try running with --minimize-conflict-set to improve the error message.

Edit: to erase any doubt in my or others minds... maybe this works:

[nix-shell:~/code/haskell-language-server]$ git log --oneline -n1
7cdbf8c (HEAD -> master, origin/master, origin/HEAD) Merge pull request #289 from bubba/win-doc-url-fix

[nix-shell:~/code/haskell-language-server]$ git submodule update --init --recursive

[nix-shell:~/code/haskell-language-server]$ cabal build
Warning: Requested index-state2020-07-27T12:40:45Z is newer than
'hackage.haskell.org'! Falling back to older state (2020-07-23T01:35:56Z).
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: ghcide-0.2.0 (user goal)
[__1] next goal: lsp-test (dependency of ghcide)
[__1] rejecting: lsp-test-0.10.3.0/installed-BEL0YuFHxCdHyQYBLVjxpT (conflict:
ghcide => lsp-test>=0.11.0.2 && <0.12)
[__1] trying: lsp-test-0.11.0.2
[__2] trying: haskell-language-server-0.2.2.0 (user goal)
[__3] rejecting: haskell-language-server:!test (constraint from config file,
command line flag, or user target requires opposite flag selection)
[__3] rejecting: haskell-language-server:*test (conflict: lsp-test==0.11.0.2,
haskell-language-server *test => lsp-test>=0.11.0.3)
[__3] fail (backjumping, conflict set: haskell-language-server, lsp-test,
haskell-language-server:test)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: ghcide, lsp-test,
haskell-language-server, haskell-language-server:test
Try running with --minimize-conflict-set to improve the error message.

To prevent the Nix shell from actually breaking, it would be great to add a Nix CI job.

That'd be awesome! I might be able to help here. I was trying to figure out how to fit this method using cachix into the current build process. I use it for my "hci" or glorified emacs configuration CI and it's pretty snappy even though I include X11/xfvb-run.

@pepeiborra
Copy link
Collaborator

That submodule update did make a difference though, as the error message no longer references ghcide 0.1.0.

Now for good measure please do a git pull origin master followed by another submodule update.

@codygman
Copy link
Author

codygman commented Aug 6, 2020

[nix-shell:~/code/haskell-language-server]$ git pull origin master
From https://github.com/haskell/haskell-language-server
 * branch            master     -> FETCH_HEAD
Already up to date.

[nix-shell:~/code/haskell-language-server]$ git submodule update --init --recursive

[nix-shell:~/code/haskell-language-server]$ cabal build
Warning: Requested index-state2020-07-27T12:40:45Z is newer than
'hackage.haskell.org'! Falling back to older state (2020-07-23T01:35:56Z).
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: ghcide-0.2.0 (user goal)
[__1] next goal: lsp-test (dependency of ghcide)
[__1] rejecting: lsp-test-0.10.3.0/installed-BEL0YuFHxCdHyQYBLVjxpT (conflict:
ghcide => lsp-test>=0.11.0.2 && <0.12)
[__1] trying: lsp-test-0.11.0.2
[__2] trying: haskell-language-server-0.2.2.0 (user goal)
[__3] rejecting: haskell-language-server:!test (constraint from config file,
command line flag, or user target requires opposite flag selection)
[__3] rejecting: haskell-language-server:*test (conflict: lsp-test==0.11.0.2,
haskell-language-server *test => lsp-test>=0.11.0.3)
[__3] fail (backjumping, conflict set: haskell-language-server, lsp-test,
haskell-language-server:test)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: ghcide, lsp-test,
haskell-language-server, haskell-language-server:test
Try running with --minimize-conflict-set to improve the error message.


[nix-shell:~/code/haskell-language-server]$ git log --oneline -n1
7cdbf8c (HEAD -> master, origin/master, origin/HEAD) Merge pull request #289 from bubba/win-doc-url-fix

@pepeiborra
Copy link
Collaborator

Have you deleted the cabal.project or any other file by chance?

I wouldn't be asking all these questions if I wasn't positive that the nix.shell file does work, btw.

@codygman
Copy link
Author

codygman commented Aug 6, 2020

Have you deleted the cabal.project or any other file by chance?

I wouldn't be asking all these questions if I wasn't positive that the nix.shell file does work, btw.

That was with a clean working directory on 7cdbf8c.

@Ailrun Ailrun added the CI Continuous integration label Aug 7, 2020
@jneira jneira added os: nixos type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc.. labels Aug 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI Continuous integration os: nixos type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants