#36589 [32.x] Guix related backports

ReviewabilityReviewsAgreementSize
#36589 hebasto [32.x] Guix related backportsReady0Crickets4,071 + 682 tests
  • Re-enables deterministic release builds natively on RISC-V hardware for the 32.x branch
  • Fixes Guix build failures under Python 3.12 for release builders
  • Ready for review, with nothing known that would invalidate a review now
  • No substantive review comments yet
  • Noted this backport will not be included in 32.1 (fanquake)
  • Approval without rationale from an account with no project history is omitted (StephenChi-hi)
  • 4,071 lines added or modified outside tests
  • 682 lines added or modified in tests
  • 11 lines removed in total
  • 4 files, 4 commits
Build and CI#7 of 56
P2 · platform fix
  • P2 because it restores broken deterministic release builds on RISC-V hardware
  • Fixes supported platform build failures and Python 3.12 compatibility on the 32.x branch
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.

Goal

Backports Guix build configuration updates from master to the 32.x maintenance branch. It bumps the Guix time-machine commit, skips tests that fail during native builds on riscv64, explicitly declares python-setuptools, and updates certvalidator for Python 3.12 compatibility.

Problem: Deterministic release binaries cannot be built natively on RISC-V hardware on the 32.x branch due to package test failures and Guix time-machine limitations. In addition, updating to Python 3.12 broke Guix builds requiring setuptools and the test loader in certvalidator.

Evidence of importance:

  • Commit a5e6a09956 notes it 'is necessary to unblock building on RISC-V systems' and fixes issue #36232.
  • Commit 58938225a1 explains that python-lief and nsis-x86_64 transitively pull in packages whose tests fail when building natively on riscv64.
  • PR description states: 'These backports re-enable building release binaries on RISC-V hardware.'

Scope: The 4 commits in the PR only touch 4 Guix files (+42/-11), but the diff provided against the merge base includes numerous unrelated branch commits from 32.x vs master.

Risk of a mistake: medium (build). Mistakes in Guix manifests or time-machine revisions affect release binary reproducibility and builder toolchains.

Reviewability

Ready

Nothing known that would invalidate a review now.

Waiting on (from the thread read):

  • reviewer: review and verification of backports and Guix build results 2026-10-24

Agreement

Crickets

no substantive comment either way

Thread notes: Author provided Guix build outputs on x86_64 and riscv64 confirming matching hashes.

Objections, suggestions, and questions: none recorded.

Participants:

  • StephenChi-hi (none, support, 1 statements 2026-10-21 to 2026-10-21): Concept ACK with no rationale
  • fanquake (member, neutral, 1 statements 2026-10-21 to 2026-10-21): noted this is not a candidate for 32.1 and removed it from the milestone

Files

902 lines under test/bench/ci.

  • doc/man/bitcoin-qt.1 +885/-3
  • doc/man/bitcoind.1 +863/-3
  • share/examples/bitcoin.conf +738/-1
  • doc/release-notes.md +578/-0
  • doc/man/bitcoin-cli.1 +214/-3
  • doc/man/bitcoin-tx.1 +157/-3
  • test/functional/interface_http.py +102/-56
  • doc/man/bitcoin-wallet.1 +118/-3
  • test/functional/feature_fee_estimation.py +105/-10
  • doc/release-notes-empty-template.md +0/-108
  • test/functional/p2p_private_broadcast_completion.py +99/-0
  • src/test/fuzz/private_broadcast.cpp +52/-39
  • doc/man/bitcoin-util.1 +80/-3
  • src/private_broadcast.cpp +49/-17
  • doc/man/bitcoin.1 +57/-3
  • src/test/private_broadcast_tests.cpp +41/-11
  • src/net_processing.cpp +28/-23
  • src/private_broadcast.h +40/-11
  • src/torcontrol.cpp +16/-33
  • test/functional/feature_init.py +23/-25
  • src/wallet/walletutil.h +32/-14
  • src/init.cpp +19/-22
  • contrib/guix/manifest_gui.scm +30/-5
  • src/test/denialofservice_tests.cpp +34/-1
  • contrib/guix/manifest_codesign.scm +26/-5
  • src/rpc/fees.cpp +17/-12
  • ci/test/02_run_container.py +21/-7
  • contrib/devtools/shell-win64-cross.nix +21/-7
  • src/policy/fees/estimator_man.cpp +15/-12
  • src/script/descriptor.cpp +22/-4
  • src/test/node_init_tests.cpp +24/-0
  • test/functional/feature_asmap.py +18/-6
  • test/functional/wallet_backwards_compatibility.py +10/-14
  • src/wallet/walletutil.cpp +16/-1
  • test/functional/feature_torcontrol.py +16/-0
  • doc/asmap-data.md +13/-1
  • src/policy/fees/estimator_man.h +12/-2
  • src/rpc/net.cpp +8/-5
  • src/netgroup.cpp +11/-1
  • src/rpc/mempool.cpp +7/-5
  • src/test/util/script.h +6/-6
  • test/functional/feature_bind_port_discover.py +7/-5
  • src/httpserver.cpp +10/-0
  • src/util/fees.cpp +6/-4
  • src/test/fees_util_tests.cpp +6/-3
  • test/functional/feature_bind_port_externalip.py +5/-4
  • test/get_previous_releases.py +9/-0
  • src/netgroup.h +2/-6
  • src/policy/fees/mempool_estimator.cpp +8/-0
  • src/wallet/walletdb.cpp +4/-4
  • contrib/guix/libexec/codesign.sh +6/-1
  • src/wallet/rpc/spend.cpp +3/-3
  • test/functional/rpc_estimatefee.py +4/-2
  • src/util/fees.h +3/-2
  • src/util/sock.cpp +5/-0
  • .github/actions/configure-docker/action.yml +4/-0
  • CMakeLists.txt +2/-2
  • src/bitcoin-util.cpp +3/-1
  • src/net.cpp +2/-2
  • src/rpc/rawtransaction.cpp +2/-2
  • src/rpc/server.cpp +2/-2
  • src/wallet/test/wallet_tests.cpp +2/-2
  • src/wallet/wallet.h +2/-2
  • src/httpserver.h +3/-0
  • src/wallet/scriptpubkeyman.cpp +1/-2
  • test/functional/interface_bitcoin_cli.py +3/-0
  • ci/lint/requirements.txt +1/-1
  • contrib/guix/libexec/prelude.bash +1/-1
  • src/bitcoin-tx.cpp +2/-0
  • src/bitcoin-wallet.cpp +2/-0
  • src/clientversion.cpp +1/-1
  • src/net.h +1/-1
  • src/node/interfaces.cpp +1/-1
  • src/node/miner.cpp +1/-1
  • src/rpc/blockchain.cpp +1/-1
  • src/script/descriptor.h +1/-1
  • src/test/fuzz/fees.cpp +1/-1
  • test/functional/data/util/getchainparams-mainnet.json +1/-1
  • test/functional/data/util/getchainparams-regtest.json +1/-1
  • test/functional/data/util/getchainparams-signet-custom.json +1/-1
  • test/functional/data/util/getchainparams-signet.json +1/-1
  • test/functional/data/util/getchainparams-testnet.json +1/-1
  • test/functional/data/util/getchainparams-testnet4.json +1/-1
  • test/functional/feature_config_args.py +1/-1
  • test/functional/rpc_openrpc.py +1/-1
  • doc/bips.md +1/-0
  • src/logging.cpp +1/-0
  • src/logging/categories.h +1/-0
  • src/policy/fees/mempool_estimator.h +1/-0
  • test/functional/test_runner.py +1/-0

Card

The short text the ranking pass compares across PRs.

Backports Guix build configuration fixes from master to the 32.x maintenance branch to re-enable building release binaries on RISC-V hardware. It updates the Guix time-machine commit, skips failing tests for packages on riscv64, and addresses Python 3.12 incompatibilities with setuptools and certvalidator. This backports upstream fixes from PR #36233 and PR #36425, resolving issue #36232 for the 32.x release cycle.

Data

dossier JSON · extract JSON · model ledger, generated 2026-10-25T01:14, confidence high, input hash 3d5fc9d391522aa1
thread read through 2026-10-24 (5 statements), head 7ec938c5cc
labels: Build system, Backport

Categories

Build and CI

P2 · platform fix

Fixes release binary building on RISC-V hardware and resolves Guix build failures under Python 3.12 for the 32.x release branch. The PR description notes that these backports 're-enable building release binaries on RISC-V hardware' and fix broken builds, addressing supported-platform build failures.

Membership: Has the Build system label and updates Guix manifests in contrib/guix/ to restore release builds on RISC-V and Python 3.12.

Factors: security/stability 0, bug 1, performance 0, user value 1, leverage 1