#35855 guix: update time-machine

full analysis

https://github.com/bitcoin/bitcoin/pull/35855 · fanquake · +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:

ReviewerKindHarmStatusBlockingAuthor repliedQuote
hebastocorrectnessGuix build failed on aarch64 hosts during gcc-cross-sans-libc build due to missing system headers in fixincludesresolvednono2026-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
janb84correctnessGuix build fails on an aarch64 host because BUILD_SYSTEM_HEADER_DIR (/usr/include) does not exist during gcc-cross-sans-libc buildopenyesno[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-arkcorrectnessBuilding packages from manifest_codesign.scm fails because python-elfesteem requires python-setuptools which is not declared as a dependencyopenyesno[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.
maflckocorrectnessGuix time-machine fails on riscv64 with an unbound spawn variable erroropennono[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.

Data

dossier JSON · extract JSON · model openrouter/google/gemini-3.8-flash, generated 2026-09-17T21:43, confidence high, input hash 19527cfa6d90a155