make-derivation.nix: allow equality-test of meta-check-failing derivations#213096
Conversation
This allows the conditions `assert`ed for `drvPath` and `outPath` to be set individually.
…tions This allows checking the equality of derivations whose meta-checks fail. A `throw` still occurs if you try to instantiate or build a meta-check-failing derivation, or a derivation which uses such a derivation as an `inputDrv`.
|
This also improves the eval report numbers by 5%-10%, which is totally plausible. The only eval changes are:
|
Wow! |
alyssais
left a comment
There was a problem hiding this comment.
LGTM but I'm hoping for more eyes in case there's some non-obvious problem with this a non-expert like me would miss.
Yeah, that was too good to be true. Disabling the meta checks entirely gives about the same improvement. I thought it was much worse. I need to take a closer look at this. |
|
I did some investigation of how many packages would have their evaluation fixed when cross-compiling: This fixes evaluation of 3066 packages when cross-compiling from For a cross case that's more typical of most Nixpkgs users, |
|
When this is ready, it should include a revert of b682fef, which it will obsolete. |
|
Yeah unfortunately I fear that this PR's fix might just be skipping some of the meta checks entirely. I'm about to leave town so I won't be able to investigate this with the care it deserves for another week or two. You should definitely merge your PR. |
Already done. :) |
|
@amjoseph-nixpkgs are you still planning on looking at this? Just hit a case where it would be useful ( |
|
I do plan on coming back to this, but not until after 23.05 branches off, and didn't plan on making it a particularly high priority. But I can adjust that. What did you have in mind? |
Just that it would be useful to be able to check whether Musl is supported on the current architecture, to opportunistically use static builds in some special cases. |
Description of changes
This allows checking the equality of derivations whose meta-checks fail.
A
throwstill occurs if you try to instantiate or build a meta-check-failing derivation, or a derivation which uses such a derivation as aninputDrv.This PR is a more general fix for the issue that #212832 solves; both of them result in the following no longer incorrectly failing:
#212832 also cleans up some really hard-to-read expressions in
interpreters/python, so this is not a replacement for it. However this PR will prevent similar problems from arising in the future.Things done