#35855 guix: update time-machine

ReviewabilityReviewsAgreementSize
#35855 fanquake guix: update time-machineReady0Blocked0 + 27 tests
  • Update the pinned Guix build environment to newer upstream revisions and toolchains
  • Keeps release builds current with newer compilers and removes custom package overrides
  • Ready to review
  • No review verdicts recorded
  • Verified by testing clean Guix builds with matching output hashes on x86_64 (0xB10C, willcl-ark)
  • Unaddressed objection: Guix fails on riscv64 with an unbound variable error (maflcko)
  • Unaddressed objection: build fails on aarch64 hosts due to missing system headers (janb84, hebasto)
  • Unaddressed objection: python-elfesteem fails due to a missing setuptools dependency (willcl-ark)
  • 0 lines added or modified outside tests
  • 27 lines added or modified in tests
  • 31 lines removed in total
  • 8 files, 6 commits
Build and CI#16 of 56
P3 · platform fix
  • P3 because updating release toolchains is valuable maintenance but deferrable without an impending release
  • Provides access to newer compilers and CMake while resolving upstream module deprecation warnings
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

Updates the Guix time-machine pinned commit to a newer upstream revision and adjusts build manifests for updated package recipes. It switches the build environment to CMake 4.3.3 with CMAKE_LINK_WARNING_AS_ERROR, drops a custom osslsigncode definition in favor of upstream Guix, updates python-lief to 1.0.0, and disables fixincludes on gcc-sans-libc.

Problem: The pinned Guix build environment lacks newer toolchains such as GCC 16 and Clang 22/23, relies on an out-of-date CMake version, triggers deprecation warnings on package module imports, and requires an in-tree package override for osslsigncode that upstream Guix now provides natively.

Evidence of importance:

  • PR description highlights upstream toolchain upgrades: "cmake `3.31.10` -> `4.3.3`", "Default Clang/LLVM updated to `22.x` and `23.x` available", "GCC 16 now available", and "python-lief `0.17.6` -> `1.0.0`".
  • Commit 1fdb268244 addresses an upstream deprecation warning: "manifest_build.scm:279:8: warning: 'ninja' is deprecated, use '(@ (gnu packages build-tools) ninja)' instead".

Scope: Touches only deterministic Guix build scripts, package manifests, and the lint dependency requirement for lief.

Risk of a mistake: medium (build). Flaws in Guix manifests or toolchain definitions could break deterministic release builds or produce broken release binaries.

Changed since the previous assessment: Rebased following the merge of related cleanups (#35869, #35870), with the core time-machine bump and CMake 4 adaptations unchanged.

Reviewability

Ready

Nothing known that would invalidate a review now.

Waiting on (from the thread read):

  • author: address Guix build failures on riscv64 and aarch64 hosts and dependency issue on codesign manifest 2026-08-01

Agreement

Blocked

objection that needs a change, nobody has replied (maflcko, janb84, hebasto, willcl-ark)

Thread notes: Added test report from willcl-ark with Guix build hashes on commit 53d7d42e273c.

Objections, suggestions, and questions:

ReviewerTypeHarm, request, or questionStatusMust beAuthor repliedQuote
maflcko (member)objection, correctnessGuix time-machine fails on riscv64 with an unbound variable erroropenchangedno2026-08-01: 'Not sure if related, but on riscv64, I get: ... ERROR: In procedure %resolve-variable: error: spawn: unbound variable'
maflcko (member)suggestion, maintenanceAdd a trailing comment indicating the version in Guix to keep them matching in ci/lint/requirements.txtanswered · author confirmed and opened PR #35869 to add the commentansweredyes2026-08-01: 'is this meant to exactly match the version in guix? If yes, could add a trailing comment?'
Status from: 2026-08-03: fanquake: 'Yea, I think we should keep this matching. This was actually unused, so opened #35869, and added the comment there.'
janb84 (member)objection, correctnessGuix build fails on an aarch64 host because BUILD_SYSTEM_HEADER_DIR (/usr/include) does not exist during gcc-cross-sans-libc buildopenchangedby others2026-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'
hebasto (member)objection, correctnessGuix build fails on an aarch64 host during gcc-cross-sans-libc build due to missing system headers in fixincludesopenchangedno2026-08-04: 'The directory (BUILD_SYSTEM_HEADER_DIR) that should contain system headers does not exist: /usr/include make[3]: *** [Makefile:3443: stmp-fixinc] Error 1'
janb84 (member)suggestion, approachSuggest a workaround patch for manifest_build.scm using cross-libc with static-bash disabled to allow aarch64 builds to completeanswered · willcl-ark discussed alternative approaches avoiding fixincludesansweredby others2026-08-05: 'If I apply this patch I can do a full build (all targets). It is a workaround (I don’t have enough background on this to be sure if correct fix, but I did want to share it)'
Status from: 2026-08-12: willcl-ark: '@janb84 fix seems interesting (in that it works), but it was a different direction than I was looking.'
maflcko (member)suggestion, maintenanceAdd a trailing version comment in manifest_build.scmanswered · author and reviewer discussed clarification and other PRs covering itansweredyes2026-08-07: 'nit: Could add a trailing comment about the version here too?'
Status from: 2026-09-16: maflcko: 'It is just the trailing version comment:'
maflcko (member)suggestion, maintenanceAdd a trailing version comment in manifest_gui.scmanswered · author replied asking for clarification, reviewer pointed to PR #36233answeredyes2026-08-07: 'Same here?'
Status from: 2026-09-16: maflcko: 'Same: Was included in https://github.com/bitcoin/bitcoin/pull/36233, so maybe that one can be merged first?'
willcl-ark (member)objection, correctnessBuilding packages from manifest_codesign.scm fails because python-elfesteem requires python-setuptools which is not declared as a dependencyopenchangedno2026-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 f'

Support:

  • 0xB10C (member) (2026-08-04) [tested]: Successfully built and matched Guix output SHA256 hashes on x86_64
  • willcl-ark (member) (2026-08-04) [tested]: Successfully built and matched Guix output SHA256 hashes on x86_64
  • willcl-ark (member) (2026-10-28) [tested]: Successfully built Guix outputs on x86_64 for commit 53d7d42e273c

Participants:

  • maflcko (member, objection, 7 statements 2026-08-01 to 2026-09-16): reported build failure on riscv64 and suggested adding version comments
  • 0xB10C (member, support, 1 statements 2026-08-04 to 2026-08-04): tested Guix build and matched hashes on x86_64
  • hebasto (member, objection, 1 statements 2026-08-04 to 2026-08-04): reported build failure on aarch64 host during gcc-cross-sans-libc build
  • janb84 (member, objection, 3 statements 2026-08-04 to 2026-08-05): reported build failure on aarch64 host and offered workaround patch
  • willcl-ark (member, objection, 6 statements 2026-08-04 to 2026-10-28): reported elfesteem dependency issue on codesign manifest, tested Guix builds on x86_64

Files

58 lines under test/bench/ci.

  • contrib/guix/manifest_codesign.scm +1/-15
  • contrib/guix/toolchains.scm +13/-3
  • contrib/guix/manifest_gui.scm +4/-5
  • contrib/guix/libexec/build_linux.sh +3/-3
  • contrib/guix/manifest_build.scm +2/-2
  • contrib/guix/libexec/build_win.sh +2/-1
  • ci/lint/requirements.txt +1/-1
  • contrib/guix/libexec/prelude.bash +1/-1

Card

The short text the ranking pass compares across PRs.

Updates the Guix time-machine pinned commit to a newer upstream revision and updates package definitions across deterministic build manifests. It switches to CMake 4.3.3 with CMAKE_LINK_WARNING_AS_ERROR, reverts osslsigncode to upstream Guix, bumps lief to 1.0.0, and disables fixincludes on cross-gcc. This keeps release builds reproducible on modern toolchains and makes GCC 16 and Clang 22/23 available for Guix builds.

Data

dossier JSON · extract JSON · model ledger, generated 2026-10-30T01:13, confidence high, input hash 8d0b37fd13d2f738
thread read through 2026-10-28 (22 statements), head 53d7d42e27
labels: Build system · draft

Categories

Build and CI

P3 · platform fix

Updates the deterministic Guix environment to modern toolchains including CMake 4.3.3 and Clang 22/23 while dropping in-tree overrides. While valuable for keeping release build environments current and addressing deprecation warnings, updating toolchains without an impending release deadline is deferrable.

Membership: Touches contrib/guix/ manifests and build scripts under the 'Build system' label to bump the pinned Guix time-machine commit.

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