From c1d029018554da9421283ea6e2007f6ae86f610e Mon Sep 17 00:00:00 2001 From: Daniel Noland Date: Sun, 16 Aug 2026 20:34:20 -0600 Subject: [PATCH 1/2] build(deps): take bolero from a fork that tolerates an unresolvable corpus Bolero canonicalizes the remapped file path to find an optional corpus and aborts when archived tests cannot resolve that path, so affected property tests never run. Use a fork based exactly on the published 0.13.4 tree that treats an unresolvable corpus like an absent one. Pinning its revision avoids both force-push drift and unrelated unreleased changes. Co-authored-by: Codex Signed-off-by: Daniel Noland --- Cargo.lock | 26 +++++++++----------------- Cargo.toml | 4 +++- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f749e2afd5..bcfb506431 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -471,8 +471,7 @@ checksum = "b1b08cb4ecbb540b940016b0a0f35b7e48ab0cc372ab88150c351de4cc469959" [[package]] name = "bolero" version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ff44d278fc0062c95327087ed96b3d256906d1d8f579e534a3de8d6b386913a" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "bolero-afl", "bolero-engine", @@ -487,8 +486,7 @@ dependencies = [ [[package]] name = "bolero-afl" version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bf4cbd0bacf9356d3c7e5d9d088480f2076ba3c595c15ee9a6a378cdd7b297" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "bolero-engine", "cc", @@ -497,8 +495,7 @@ dependencies = [ [[package]] name = "bolero-engine" version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca199170a7c92c669c1019f9219a316b66bcdcfa4b36cac5a460a4c1a851aba" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "anyhow", "bolero-generator", @@ -511,8 +508,7 @@ dependencies = [ [[package]] name = "bolero-generator" version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98a5782f2650f80d533f58ec339c6dce4cc5428f9c2755894f98156f52af81f2" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "bolero-generator-derive", "either", @@ -524,8 +520,7 @@ dependencies = [ [[package]] name = "bolero-generator-derive" version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a21a3b022507b9edd2050caf370d945e398c1a7c8455531220fa3968c45d29e" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "proc-macro-crate 2.0.2", "proc-macro2", @@ -536,8 +531,7 @@ dependencies = [ [[package]] name = "bolero-honggfuzz" version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a118ef27295eddefadc6a99728ee698d1b18d2e80dc4777d21bee3385096ffd" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "bolero-engine", ] @@ -545,8 +539,7 @@ dependencies = [ [[package]] name = "bolero-kani" version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852ea5784a9f3e68bfd302ca80b8b863bce140593eb5770fee6ab110899c28fc" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "bolero-engine", ] @@ -554,8 +547,7 @@ dependencies = [ [[package]] name = "bolero-libfuzzer" version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "858dc57c11725c52662501fa79fdbc6f7050339a05ca1bf1e587add0fed40d62" +source = "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" dependencies = [ "bolero-engine", "cc", @@ -5621,7 +5613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand 2.5.0", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", "rustix", "windows-sys 0.59.0", diff --git a/Cargo.toml b/Cargo.toml index 15b1006473..686c76a128 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -121,7 +121,9 @@ axum-server = { version = "0.8.0", default-features = false, features = [] } bindgen = { version = "0.72.1", default-features = false, features = [] } bitflags = { version = "2.13.1", default-features = false, features = [] } bnum = { version = "0.14.4", default-features = false, features = [] } -bolero = { version = "0.13.4", default-features = false, features = [] } +# The fork treats an unresolvable optional corpus as absent, allowing remapped +# and archived tests to run. Pin the revision so branch changes cannot alter it. +bolero = { git = "https://github.com/githedgehog/bolero.git", rev = "2fa595633a72e9b30721f9d37f0014a6ae8f77d4", default-features = false, features = [] } bytecheck = { version = "0.8.3", default-features = false, features = [] } bytes = { version = "1.12.1", default-features = false, features = [] } caps = { version = "0.5.6", default-features = false, features = [] } From a36ddba7f3811f007ac6ec7d68534dfc41f2f2e2 Mon Sep 17 00:00:00 2001 From: Daniel Noland Date: Sun, 16 Aug 2026 22:48:45 -0600 Subject: [PATCH 2/2] build(nix): pin git dependencies by hash Without hashes, crane clones complete git repositories during evaluation into a machine-local cache that Cachix cannot serve. Every CI evaluation therefore repeats network work before building. Hash every git dependency so crane uses fixed-output derivations. The lookup keys use Cargo.lock source strings with percent-decoded branch names, matching crane rather than the lockfile spelling. Co-authored-by: Codex Signed-off-by: Daniel Noland --- default.nix | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/default.nix b/default.nix index acadbf858e..19dffb5037 100644 --- a/default.nix +++ b/default.nix @@ -231,11 +231,33 @@ let src = lib.cleanSource ./.; name = "source"; }; + # Hash every git dependency so crane uses cacheable fixed-output derivations + # instead of cloning whole repositories during evaluation. Keys must match + # Cargo.lock sources after percent-decoding branch names: a wrong hash fails + # when `vendor-cargo-deps` is realised, but a key that stops matching -- which + # a branch rename does -- only warns and silently falls back to the + # evaluation-time clone this is meant to avoid. cargoVendorDir = craneLib.vendorMultipleCargoDeps { cargoLockList = [ ./Cargo.lock "${pkgs.rust-toolchain.passthru.availableComponents.rust-src}/lib/rustlib/src/rust/library/Cargo.lock" ]; + outputHashes = { + "git+https://github.com/githedgehog/bolero.git?rev=2fa595633a72e9b30721f9d37f0014a6ae8f77d4#2fa595633a72e9b30721f9d37f0014a6ae8f77d4" = + "sha256-ipue/XsDxOeO4lThRcIdpQsztC5AbAkgwUHDYWTH9qY="; + "git+https://github.com/githedgehog/dplane-rpc.git?branch=pr/daniel-noland/bumps#6c84b7aff35abb4e94fbb0d09870a0b4a2322913" = + "sha256-YOCcWOynWN49KKY17KfP31QBK1ZM6x6Xl4/tdfNwgIs="; + "git+https://github.com/githedgehog/fixin?branch=main#5e0de31606466b17372f8a2cff090cc0461d572c" = + "sha256-GfBnaL6ke3ekm+HbV34yXdF4ArYHismxbPHF5/M94yk="; + "git+https://github.com/githedgehog/left-right.git?branch=fredi/fix-writehandle-drop#765813aa25c8328746e93a7a5ccc75deb57b1d80" = + "sha256-GVP11hLRmHip5+MH9U1bD4bANxDpdnkN9cvMo6RDFfY="; + "git+https://github.com/githedgehog/netlink-packet-route.git?branch=pr/daniel-noland/swing6#9a257c60e25bc5db50a1cd14aa493d6ec294c23d" = + "sha256-w5dK1IfqR1kJDa4ugbvEC4VIASwGlKU6oxEd9USUwMw="; + "git+https://github.com/githedgehog/rtnetlink.git?branch=hh/tc-actions4#c6b8d9865858c458e7f27fa67469f2171e1644a4" = + "sha256-u14ugCKWU4nwXkQdlleThJLYU4Ft/LJNTKywMUlwxPM="; + "git+https://github.com/githedgehog/testn.git?tag=v0.0.10#e49aba8400beb2cb117a3f542b114080cf572283" = + "sha256-XwEKLdc2Y7fteSKKOERgjKTdxELy7K/wOVuB/SSj3ng="; + }; }; # For wasm32, pkgs is the host nixpkgs (no pkgsCross), so ctarget resolves to the # host platform (e.g. x86_64-unknown-linux-gnu). That means is-cross-compile is @@ -519,12 +541,7 @@ let ++ cargo-cmd-prefix-tests )) # Record the remapped source root without changing normal archives. - + ( - if instrumentation == "coverage" then - "; echo -n '${src}' > $out/source-prefix" - else - "" - ); + + (if instrumentation == "coverage" then "; echo -n '${src}' > $out/source-prefix" else ""); }; };