cabal icon indicating copy to clipboard operation
cabal copied to clipboard

gen-bounds does not work in multiprojects

Open newhoggy opened this issue 3 years ago • 9 comments

Describe the bug For multiprojects where one package depends on another inside the project, cabal gen-bounds does not work for projects that have local dependencies.

To Reproduce Steps to reproduce the behavior:

$ tar zxvf gen-bounds.tar.gz
$ cd gen-bounds
$ cabal build all
$ cd package-b
$ cabal gen-bounds
Warning: The package list for 'hackage.haskell.org' is 15 days old.
Run 'cabal update' to get the latest list of available packages.
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: package-b-0.1.0.0 (user goal)
[__1] unknown package: package-a (dependency of package-b)
[__1] fail (backjumping, conflict set: package-a, package-b)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: package-b, package-a

Projects that reference git repositories in cabal.project fail similarly.

Expected behavior cabal should recognise it is in a multiproject and be able to find local dependencies.

System information

  • MacOS (and possibly others)
  • cabal-3.4, ghc-8.10.4

Additional context Attached example code. gen-bounds.tar.gz

newhoggy avatar Aug 03 '21 04:08 newhoggy

Indeed, the use of ComponentRequestedSpec in genBounds seems suspect.

Mikolaj avatar Aug 03 '21 07:08 Mikolaj

I can't reproduce this with Cabal 3.6.0.0 and GHC 9.0.1. I did get an error regarding the base bounds, but I think that is not relevant to this issue. So I fixed it, and everything built.

ysangkok avatar Sep 27 '21 21:09 ysangkok

Actually, I can't reproduce with cabal-3.4 and ghc-8.10.7 (Linux). What was your OS, @ysangkok?

@newhoggy: any reason this can fail only on MacOS? Case sensitivity? Anything else?

Could anybody else wirh MacOS repro? Best if with cabal 3.4 and cabal 3.6.

Mikolaj avatar Sep 28 '21 13:09 Mikolaj

@Mikolaj I tested on Ubuntu 21.04.

ysangkok avatar Sep 28 '21 13:09 ysangkok

@newhoggy could you confirm if it still is reproduced in your macos with other cabal and ghc versions?

jneira avatar May 15 '22 19:05 jneira

This still reproduces with latest cabal (on macOS with GHC 8.10.7). There was a typo in the reproducer (which I edited out just now). The correct reproducer is:

$ cabal build all
$ cd package-b
$ cabal gen-bounds
Error: cabal: Could not resolve dependencies:
[__0] trying: package-b-0.1.0.0 (user goal)
[__1] unknown package: package-a (dependency of package-b)
[__1] fail (backjumping, conflict set: package-a, package-b)

The problem is that local package-a, which package-b depends on, isn't known from the package-b directory as root. It is known from the project root (containing cabal.project), but cabal gen-bounds does not work on projects, only on individual cabal files.

So, the issue is just the same as in the OP.

andreasabel avatar Aug 17 '22 17:08 andreasabel

I can reproduce this problem with cabal 3.2, ghc 8.10.4

zimtsui avatar Sep 30 '22 15:09 zimtsui

@zimtsui: thank you. So that doesn't seem like a recent regression, but probably something deeper.

Mikolaj avatar Sep 30 '22 15:09 Mikolaj

I guess gen-bounds just doesn't use the new-style project orchestration. Ideally, this just about migrating the old code to the new infrastructure.

fendor avatar Sep 30 '22 15:09 fendor

I have a similar/related issue that a cabal.project file referring to a dependency on github prevents gen-bounds from working (though cabal build works fine.)

nuttycom avatar Nov 27 '22 17:11 nuttycom