#35855 guix: update time-machine
https://github.com/bitcoin/bitcoin/pull/35855 · · +47/-32 in 7 files, 11 commits · labels: Build system · draft
Goal
- Update the Guix time-machine snapshot to newer compiler toolchains.
- Fix Guix build failures on non-x86 platforms like RISC-V and keep release builds current.
Updates the Guix time-machine pin to commit 8c2f8fe81bba0aed6c6b235325156960bdef834c. The update bumps binutils to 2.47, transitions Guix to cmake-minimal-4 (4.3.3), updates python-lief to 1.0.0, and adds workarounds to disable fixincludes on gcc-sans-libc and skip psutil tests during native builds.
Problem: Older Guix time-machine pins prevent building release binaries on newer host architectures such as RISC-V, and contain older toolchains lacking support for newer compiler suites.
Category: Build and CI (#7 of 55)
P2 · platform fix
- P2 because it resolves Guix build breakages on architectures like RISC-V.
- Bumps core toolchains and build tools to unblock ongoing build system improvements.
Resolves supported-platform failures in the Guix build environment: commit 7ec683756a notes 'This is necessary to unblock building on RISC-V systems. Fixes #36232', while also bumping release toolchains including CMake 4 and binutils 2.47.
Membership: Modifies Guix manifests and prelude scripts in contrib/guix and CI lint requirements.
Factors: security/stability 1, bug 2, performance 0, user value 1, leverage 2
Reviewability: Ready
- Ready for review and cross-platform verification, despite draft status.
Although marked draft, the PR is clean, has active author maintenance, and has successfully produced matching Guix build outputs on x86_64.
Author status: active, force-pushing fixes and responding to review comments
Resolved concerns:
- Guix build failed on aarch64 hosts during gcc-cross-sans-libc build due to fixincludes expecting host system headers; resolved by passing --disable-fixincludes.
Agreement: Blocked
- General consensus favors keeping the Guix environment updated.
- Verified matching deterministic x86_64 build hashes (0xB10C, willcl-ark)
- Helped diagnose and troubleshoot AArch64 cross-compilation failures (hebasto, janb84)
- Suggested splitting some fixes into standalone PRs (maflcko)
Blocked: blocking objection open with no author reply (janb84, willcl-ark)
Reviewers have actively tested Guix builds with matching SHA256 sums, and reported cross-compilation errors have been addressed by follow-up commits.
- 0xB10C and willcl-ark posted identical output hashes for x86_64 builds
- hebasto and janb84 reported aarch64 issues which prompted toolchain fixes
Objections:
| Reviewer | Kind | Harm | Status | Blocking | Author replied | Quote |
|---|---|---|---|---|---|---|
| hebasto | correctness | Guix build failed on aarch64 hosts during gcc-cross-sans-libc build due to missing system headers in fixincludes | resolved | no | no | 2026-08-04 hebasto: 'guix shell: error: build of glibc-cross-aarch64-linux-gnu-2.31.drv failed' Settled: 2026-08-12 willcl-ark: 'ISTM that a compiler with a static libc should have no includes to fix, so not running fixincludes should be the goal' followed by author commit eb7c1195f7 |
| janb84 | correctness | Guix build fails on an aarch64 host because BUILD_SYSTEM_HEADER_DIR (/usr/include) does not exist during gcc-cross-sans-libc build | open | yes | no | [2026-08-04] i'm having some difficulties building on aarch64 (tried 2x) guix shell: error: build of `/gnu/store/4h3gfkxbwqbkkzc89rsc431vk8kbr30n-glibc-cross-aarch64-linux-gnu-2.31.drv' failed |
| willcl-ark | correctness | Building packages from manifest_codesign.scm fails because python-elfesteem requires python-setuptools which is not declared as a dependency | open | yes | no | [2026-08-12] When building packages from _manifest_codesign.scm_ (I think) I'm hitting a new error where `python-elfesteem` is using _setup.py_ but does not declare `python-setuptools` as a dependency, causing a failure. |
| maflcko | correctness | Guix time-machine fails on riscv64 with an unbound spawn variable error | open | no | no | [2026-08-01] Not sure if related, but on riscv64, I get: ... ERROR: In procedure %resolve-variable: error: spawn: unbound variable |
Support:
- 0xB10C: Successfully built and matched Guix output SHA256 hashes on x86_64
- willcl-ark: Successfully built and matched Guix output SHA256 hashes on x86_64
Participants: maflcko (objection), 0xB10C (support), willcl-ark (objection), janb84 (objection), hebasto (objection)
State derived from the lists: blocking objection open with no author reply (janb84, willcl-ark) (model's own read: Positive)
Review verdicts (DrahtBot): 0
Dependencies
Enables:
- #36232
- Guix building on RISC-V systems
Files
79 lines under test/bench/ci.
- contrib/guix/manifest_build.scm +18/-7
- contrib/guix/manifest_gui.scm +21/-4
- contrib/guix/manifest_codesign.scm +1/-15
- contrib/guix/libexec/build_linux.sh +3/-3
- contrib/guix/libexec/build_win.sh +2/-1
- ci/lint/requirements.txt +1/-1
- contrib/guix/libexec/prelude.bash +1/-1
Card
Updates the Guix time-machine pin to a newer Codeberg commit, upgrading core build tools including binutils 2.47, CMake 4.3.3, and Python LIEF. The update is required to resolve Guix build failures on RISC-V hosts (fixing #36232) and includes workarounds for aarch64 GCC build failures. Multiple contributors have verified reproducible build hashes on x86_64, and the branch is actively maintained and ready for further cross-platform testing.