Revert bitcoind-gunix node sourcing #9
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/revert-gunix-migration"
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?
Owner summary
Undoes the bitcoind-gunix swap (PR #6). Its Cachix has no v31.1 binaries, so
every
devenv shellon the dev VM fell back to a tens-of-GB from-sourcetoolchain build that exceeds the VM's disk — dev work is stalled.
For a running machine: dev shells and deploys fetch the pinned official Core
31.1 binary again, in seconds instead of hours.
Identical: the bitcoin bytes (the restored pin is the same b80d9c3e… hash the
gunix gate enforces), Core 31.1, sv2-tp 1.1.1, and every runtime invocation.
Proof: the tree is byte-identical to pre-migration
7fe5780b(empty diff);devenv shellcompletes in 14 s;bitcoin --versionreports v31.1.0.If wrong: revert this commit — that re-lands the migration exactly.
Refs vnprc/hashpool#4
What changed
One commit, a pure
git revertofc1eca3c3(PR #6), touching the same 12files: restores
bitcoin-node.nix(official-binary fetchurl, sha256-pinned)and the
BITCOIN_VERSIONdownload blocks inscripts/build.sh+scripts/ship.sh; deletesbitcoin-node-gunix.nix; removes thebitcoind-gunixinput fromflake.nix,devenv.yaml, and both lockfiles;drops the README mechanism note.
Faithful-revert note: the dead
bitcoind.nixand itsupdate-bitcoindjustfile recipe come back — PR #6 deleted them as ride-along cleanup. They are
restored deliberately so the tree is byte-identical to the regtest-validated
7fe5780b; re-delete them separately or when the migration re-lands.Why the migration is being backed out
Measured on the dev VM (2026-08-08):
(
/nix/store/wm49ghwqi3wdddalpk2rfd9qkn8vkc4b-bitcoin-31.1-x86_64-linux-gnu.tar.gz)returns 404 from
0xb10c-bitcoind-gunix.cachix.org, and the VM's onlysubstituter is cache.nixos.org — nothing substitutes.
nix build --dry-runon the tarball shows a 25-derivation from-sourceclosure (three cross-GCC 14.3.0 bootstraps, cross binutils/glibc,
bitcoin-31.1-depends,bitcoind). Livedevenv shellruns were caughtcompiling the cross toolchain; the build needs tens of GB against ~22 G free.
outputHash), so the official releasetarball cannot be
nix store add-ed to satisfy it.cost:
devenv shellandnix build .#bitcoin-node-*each want their ownfull toolchain closure.
Validation
On the dev VM, in the change worktree:
git diff 7fe5780b HEAD— empty; the tree is byte-identical to the lastpre-migration state, which vnprc/hashpool#2 validated on regtest.
grep -ri gunixover the tree — no references remain.devenv shell -- true— completes in 13.9 s (previously: interrupted after1194 s still compiling GCC).
bitcoinandbitcoin-cliresolve on the shell PATH from the restoredbitcoin-nodepackage;bitcoin --version→ v31.1.0.Not run here: live
devenv upmining flow and a production deploy — both areunchanged from the
7fe5780bstate that #2's validation covered.Residual risk
No new mechanism: this is the exact tree prod pins were last validated at.
Deploy scripts return to the VPS-side
bitcoincore.orgcurl with the/tmpcache guard. Review finding: neither restored script hash-verifies that
download — checksum enforcement exists only on the nix side
(
bitcoin-node.nix's sha256 pin). This matches the pre-#6 state exactly; anoptional follow-up could add
sha256sum -cto the curl block. Themigration's goals (pin-free sourcing, byte-parity gate)
remain tracked by vnprc/hashpool#4; the recommended re-land shape is a
fetchedadapter variant that reads the expected hash at eval time from thegunix input's checked-in
noncodesigned.SHA256SUMS(gunix ships a parser atnix/lib/sha256sums.nix), keeping the dev loop cheap while the fullfrom-source reproduction stays available to build-capable machines.
Merge
Human merge:
git merge --no-ff agent/revert-gunix-migration+ push. Theowner removed the GPG-signing requirement (2026-08-08), but the secrets repo's
signing-required-branchesat origin/master still listswork/hashpool master— a host whose protected-refs-policy hook reads that file will stilldemand a signed tip until the removal is pushed.
Read-only review
Reviewed the revert commit (
58d00684) and every claim in the PR body. Noblockers. Because the tree is provably byte-identical to
7fe5780b, thereview surface is the body's claims and cross-branch interactions rather than
the diff content itself.
Confirmed:
bitcoin-node.nixpinsha256-uA2cPgTaePtvBWloVnNBjPaG+tupBC2SbRP7h/9QP54=converts(
nix hash convert --to base16) to exactlyb80d9c3e04da78fb6f0569685673418cf686fadba9042d926d13fb87ff503f9e, the samedigest gunix's checked-in
noncodesigned.SHA256SUMSpublishes forbitcoin-31.1-x86_64-linux-gnu.tar.gz. Byte-identity of the sourced binaryacross the revert is a fact, not an intent.
git diff 7fe5780b HEADempty;grep -ri gunixclean (the only hit is theworktree's
.gitgitdir pointer, whose path contains the branch name).devenv shell -- truecompletes in 13.9 s on the dev VM;bitcoinandbitcoin-cliresolve on PATH from the restored package andbitcoin --versionreports v31.1.0. Note for testers: the multiprocesslayout ships
bitcoin/bitcoin-cli/libexec/bitcoin-node— there isno
bitcoindbinary, socommand -v bitcoindis the wrong smoke test.Corrected in the body (was a defect): the original body claimed the deploy
scripts' VPS-side curl has "sha256 verification". False — neither restored
script checksums the download (
grep -c sha256= 0 in both); the only hashgate is the nix-side fetchurl pin. This matches the pre-#6 state exactly, so
nothing regresses, but the claim was corrected rather than left inflated. An
optional follow-up could add
sha256sum -cto the curl block.Cross-branch:
git merge-tree agent/revert-gunix-migration agent/nutxx-lookup-cdk-017merges clean (exit 0) — the two branches'devenv.nixhunks are disjoint. After this PR merges, mergemasterintoagent/nutxx-lookup-cdk-017: its worktree still carries the gunix devenvwiring and will hit the from-source stall until it does.
Known ride-alongs (intentional, stated in body): the dead
bitcoind.nixand its
update-bitcoindjustfile recipe return for byte-fidelity to theregtest-validated pre-migration tree.