-
Notifications
You must be signed in to change notification settings - Fork 697
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
Show constraint sources in dependency solver errors #10524
base: master
Are you sure you want to change the base?
Conversation
4811a3c
to
0c8471d
Compare
We have a lot of `showType` functions that are effectively a `Pretty` instance but less composable. Let's make them proper `Pretty` instances. Split off of haskell#10524
9ebbba8
to
522bec9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can take this opportunity to rename this file to all-test-suite.out
instead? the name has a typo
[__0] rejecting: my-lib; 2.0, 1.0 | ||
(constraint from cabal.project requires ==0.9) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have not checked the code, but this output looks very good. I don't know why the newline though instead of printing it in the same line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I quite like the new line fwiw. Of course, it’s impossible to find a consensus around such things…
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This very nice output formatting is thanks to @philderbeast in #9578 😁
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know why the newline though instead of printing it in the same line.
The rejecting message (the rejected versions part) can be quite long and looks alright with a flow layout but showing project and config constraints with their "imported by" parent chain didn't so I went with an indented layout for those, starting on a new line:
cabal/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out
Lines 242 to 253 in c3a9dd7
[__1] rejecting: hashable-1.4.3.0 | |
(constraint from oops/oops-9.config requires ==1.4.2.0) | |
imported by: oops-8.config | |
imported by: oops/oops-7.config | |
imported by: oops-6.config | |
imported by: oops/oops-5.config | |
imported by: oops-4.config | |
imported by: oops/oops-3.config | |
imported by: oops-2.config | |
imported by: oops/oops-1.config | |
imported by: oops-0.project | |
[__1] rejecting: hashable-1.4.2.0 |
@jasagredo just a heads-up: on the last Cabal meeting @9999years asked to not comment on their PRs while a PR is in the draft mode. I remember it because I’m guilty in it more than many! |
522bec9
to
e52d016
Compare
c10bd7d
to
9854c9d
Compare
Needs a release note. |
9854c9d
to
9492b41
Compare
Before: [__0] rejecting: memory-0.18.0 (constraint from user target requires ==0.17.0) After: [__0] rejecting: memory-0.18.0 (constraint from cabal.project requires ==0.17.0)
9492b41
to
b27b413
Compare
Before:
After:
First shot at #10519. Seems unavoidably large.
Builds off of #9578.
Future work: Propagate line numbers into these constraints!
Implementation strategy:
Propagate provenance (
ProjectConfigPath
/ConstraintSource
) into project config types (Distribution.Client.ProjectConfig
,D.C.ProjectConfig.Legacy
)Extract and attach that information in
D.C.ProjectConfig.findProjectPackages
Attach that information to
ProjectPackageLocation
(returned fromfindProjectPackages
). Note: Might be worth unifying that withPackageLocation
, would make the new typePackageLocationProvenance
.Use that information to write better
ConstraintSource
s into the solver; this is mostly implemented.Overall it seems like all the information exists, but it takes a lot of work to propagate it into the right parts of the system.