Revert #6204 to fix regression, add nixpkgs/lib/tests as regression test#7621
Conversation
7ba89ab to
4941ee0
Compare
4941ee0 to
620e4fb
Compare
|
Successfully created backport PR #7622 for |
|
Other than that, Do we really want to revert this PR on master? It's obviously important on the release branch, but keeping it for a couple days on master and try to directly fix the bug might have been simpler given the size of the change (and the likelyness of merge conflicts once we want to re-merge it). Maybe we should un-revert it if there's a reasonable guaranty that the bug can be fixed quickly? |
|
I'm not happy about reverting this on master, instead of actually fixing the bug. This applies the code churn of the original PR all over again. For instance, I spent a non-trivial amount of time last week syncing master into lazy-trees after the original PR got merged. The revert probably will cause a similar amount of merge conflicts to be resolved, and presumably again once we re-apply the PR. |
| import (nixpkgs + "/lib/tests/release.nix") | ||
| { pkgs = nixpkgsFor.${system}; } | ||
| ); | ||
|
|
There was a problem hiding this comment.
I don't think this test works, because it's evaluated by the Nix of the CI, not the Nix we're building.
Maybe this should just extend tests.evalNixpkgs?
There was a problem hiding this comment.
nixpkgsForincludes our nix by overlay
Just confirmed that it catches the regression. I've also merged a PR upstream so that we can pass it directly, which is more explicit.
Maybe this should just extend
tests.evalNixpkgs?
Reusing the whole upstream expression helps with making sure that the release can make its way into Nixpkgs.
There was a problem hiding this comment.
the Nix of the CI
The real testing happens in the sandbox. The Nix of the CI only builds the new Nix and provides the environment, but the new Nix is used for the actual testing.
That is a good question to ask. I think it's important to keep master in a regression free state.
I'd prefer for this to happen on a feature branch. In the end it's the commits that matter, not really the name of the branch.
Reverting the PR only took only two or three conflicts. I don't expect many conflicts reverting the revert.
Neither am I. I've spent about an hour trying to find the problem after bisecting.
It should be in a mergeable state as soon as the revert is reverted, shouldn't it? |
|
@roberth is this a regression in behavior or in the error message? It's just that the nixpkgs test is a bit convoluted to unwrap. |
|
@tomberek while it is true that it is a regression in the error message, it seems to be a regression that causes the error context to not be displayed, which is definitely a notable regression since it would break custom errors in nixpkgs modules, regressing UX. |
@lf- Please confirm. Is the resulting error worse? The relevant PR was specifically improvements to error messages. |
|
@roberth Thanks for catching this, and sorry for the fuss. I could not reproduce the infinite execution / strictness issue you mentioned. Does it happen in the same tests ? |
|
I am just going off the output posted in the ofborg failure, which should say which module was being evaluated due to the added error context. I've not done any tests myself. |
|
The difference in error output re-ordering and the following line with 2.12.0and 2.13.0 |
|
#7641 is my best fix right now. And passes the old and the new tests. |
Motivation
The latest release causes an undue infinite recursion error and another undue error in a select expression (but possibly not caused by ExprSelect)
This reverts the PR that causes the problem and adds the nixpkgs/lib test suite to help make sure we don't break the evaluator or nixpkgs/lib as easily.
Troubleshooting, bisect, etc
TODO
fix"fix" the issueforce*calls in the diffNixpkgs diff
Context
Log: https://gist.github.com/GrahamcOfBorg/fc8358d3707cca3d7aa55f38d6b9da4d
Checklist for maintainers
agreed on ideanixpkgsForincludes our nix by overlayunitteststests/**.sh)