bench-incremental: add nix-dynamic tools (experimental builder)#124
bench-incremental: add nix-dynamic tools (experimental builder)#124aldoborrero wants to merge 2 commits intomainfrom
Conversation
Benchmark Regression Check
Baseline: |
|
|
That truncated error is
This is a pre-existing dynamic-mode limitation (the torture fixture's conflict-a/conflict-b modules are designed to exercise exactly this version-conflict-via-replace pattern; dag mode doesn't hit it because it runs So this PR is correct as far as it goes (probe SKIPs cleanly, bazel still runs); the torture×dynamic comparison stays blocked until that lockfile-format fix lands. |
|
Correction: the lockfile-format change isn't needed. It's a |
Adds nix-dynamic and nix-dynamic-nocgo as buildTool entries that build via buildGoApplicationExperimental (recursive-nix + dynamic-derivations + ca-derivations). The harness probes each tool once at startup and drops a tool with a SKIP notice if its probe build fails — so the dynamic tools degrade gracefully on stores without recursive-nix while the rest of the run continues. writeNixExpr now takes the template as an argument so the dag and experimental templates share the same path. :house: Remote-Dev: homespace
The recursive-nix inner daemon serves the same store the outer build runs against. With NIX_REMOTE=local?root=..., the inner go2nix resolve registers FOD drvs whose inputDrvs aren't all present in the rooted store, so AddToStore fails with "path '...' is not valid". The host store has them (it's where the bench resolved nixpkgs/go2nix-cli from). Dynamic builds are still per-fixture-path so concurrent runs don't interfere; the dag tools keep using the rooted store for isolation. :house: Remote-Dev: homespace
f6b9767 to
4c0f5a1
Compare
|
|
That's the link-drv So torture×dynamic needs both #125 (the two
* deep run-2=2 drvs (iface cutoff after first touch) Dynamic wins the no-edit case (saves the ~0.5s |
Summary
Re-roll of #120 against the post-#121
buildToolinterface.Adds
nix-dynamicandnix-dynamic-nocgotools that build viabuildGoApplicationExperimental(recursive-nix + dynamic-derivations + ca-derivations). Both share the existingnixToolplumbing — only the expression template andextraOptsdiffer.The harness now probes each tool once at startup; if a tool's probe build fails and it opts in via
SkipOnFail(), it's dropped with aSKIPnotice and the rest of the run continues. Sonix-dynamic*degrades gracefully on stores without therecursive-nixsystem feature; other tools still fail fast.writeNixExprnow takes the template as an argument so the dag and experimental templates share the same code path.Test plan
go build && go vetnix build .#checks.x86_64-linux.bench-incremental-helpnix build .#checks.x86_64-linux.formatting--fixture light --tools nix-dynamic --runs 1 --scenario no_change→ probeOK nix-dynamic, no_change 1.01s (eval 0.88s + build 0.13s)--tools bogus→ listsnix-dynamic,nix-dynamic-nocgoin available