Backport nix-eval-jobs --no-instantiate #987
Labels
No labels
Affects/CppNix
Affects/Nightly
Affects/Only nightly
Affects/Stable
Area/build-packaging
Area/cli
Area/evaluator
Area/fetching
Area/flakes
Area/language
Area/lix ci
Area/nix-eval-jobs
Area/profiles
Area/protocol
Area/releng
Area/remote-builds
Area/repl
Area/repl/debugger
Area/store
bug
Context
contributors
Context
drive-by
Context
maintainers
Context
RFD
crash 💥
Cross Compilation
devx
docs
Downstream Dependents
E/easy
E/hard
E/help wanted
E/reproducible
E/requires rearchitecture
Feature/S3
imported
Language/Bash
Language/C++
Language/NixLang
Language/Python
Language/Rust
Needs Langver
OS/Linux
OS/macOS
performance
regression
release-blocker
stability
Status
blocked
Status
invalid
Status
postponed
Status
wontfix
testing
testing/flakey
Topic/Large Scale Installations
ux
No milestone
No project
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lix-project/lix#987
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Is your feature request related to a problem? Please describe.
Using
nix-eval-jobsfor pure Eval often has a bottleneck with writing.drvfiles to disk. This considerably slows down the whole thing. This was the main reason whynix-eval-jobswasn't used in GitHub Actions as a replacement for OfBorg, but why we ended up with the current "chunked evaluation" strategy.nix-eval-jobsintroduced a--no-instantiateflag recently in https://github.com/nix-community/nix-eval-jobs/pull/379 and the follow up https://github.com/nix-community/nix-eval-jobs/pull/380. My tests in https://github.com/nix-community/nix-eval-jobs/pull/379#issuecomment-3244806892 show that this can even speed up current Evaluation in Nixpkgs.In https://github.com/NixOS/nixpkgs/pull/433057#issuecomment-3180220683 I outlined a plan to run both Lix and Nix for Eval in Nixpkgs on each PR without needing more resources. To be able to use
nix-eval-jobs, this would need to be supported by both.Describe the solution you'd like
Please backport the two PRs mentioned above / add the same feature to Lix'
nix-eval-jobs.Describe alternatives you've considered
Keeping two different Eval mechanisms around in Nixpkgs forever and not being able to run Lix in the Merge Queue.
Additional context
Introducing
nix-eval-jobsto Nixpkgs CI also has additional benefits on top of performance: It will allow us to catch evaluation errors much better, because these are streamed as json output as well, from what I can tell. That means we can treat some of these as "expected", for example "broken", "unsupported", "unfree" etc. - but still report others like failing asserts etc. as actual eval failures. This is currently not consistently possibly in Nixpkgs, not with a lot of work and introducing more complex logic than we'd want in a lot of places (my first step towards that was in https://github.com/NixOS/nixpkgs/pull/426629, but that's only a fraction of what's needed with the currentnix-envbased approach).@ma27 Can you work on a port of this?
Sure.
This issue was mentioned on Gerrit on the following CLs:
--no-instantiateflag")Thank you for the very quick turn-around, much appreciated. I will make sure to test this very soon!