build: use Go 1.26.8 and preserve glibc 2.31 compatibility - #4312
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Keep Bullseye's C compiler and libc while copying the Go 1.26.8 toolchain from the official image. Run packaged Linux binaries on Debian 11 and Ubuntu 20.04 before publication. Align the benchmark job inherited from dev with the module-selected Go toolchain.
f583006 to
10b0812
Compare
58da9f7 to
97b4e1c
Compare
# Conflicts: # .github/workflows/client.yml
|
The Go 1.24 Docker builders reject dependency updates that require Go 1.25.7, including the IPLD update discussed in #3991. Raise the module minimum to 1.25.7 and use Go 1.26.8 for the suggested toolchain, both Docker builders, and CI. Go 1.26 is the older supported release line; Go 1.25 left support when Go 1.27 shipped.
The source builder and runtime move to Alpine 3.23. The release builder retains Bullseye's C compiler and glibc 2.31, copying only Go from the official 1.26.8 image. This preserves cgo for native Linux/amd64 releases and compatibility with Debian 11 and Ubuntu 20.04. Both the client and tag-based release workflows now extract the actual Linux release archive and run the binary in both baseline containers before archiving or publishing it.
All
setup-gojobs use v6 and readgo.mod, including the vendored btcec and manual benchmark jobs; v6 honors thetoolchaindirective. The benchmark job now checks out the repository to read that file. Staticcheck moves to 2026.1 for Go 1.26 support.This targets
devand implements the standalone toolchain step of #3991. All module dependency versions andgo.sumremain unchanged; the issue's separate x/crypto, telemetry, and IPLD/libp2p reviews remain follow-ups.Validation:
GLIBC_2.32andGLIBC_2.34symbols, confirming that the added check detects the regression.CGO_ENABLED=1.git diff --checkpass.97b4e1ce5a26a6db467f322e619de059d844b61d.References: Go release policy and versions, Staticcheck 2026.1.
Prepared rebase onto
dev(not pushed yet)This branch conflicts with
dev. A rebase ontodevatbc4a10ewas prepared and verified locally: range-diff and net-diff were checked against the current head97b4e1c, all 3 commits are kept with identical line changes, and nothing from this PR was lost; both workflow YAMLs parse,go build ./...andgo mod tidy -diffpassed (actionlint and a Docker build were not run). It has not been pushed; the branch is unchanged. When pushed, the original head will be kept asbackup/codex/go-toolchain-3991-20260926.Judgment calls for review:
ci: align Go setup in electrum jobs added on dev:electrum-vendor-byte-identity(setup-go@v5 pinned to 1.24.1) andelectrum-lifecycle(setup-go@v5) landed ondevafter this branch was cut. Both now use setup-go@v6 withgo-version-file: go.mod, like every other job in this PR. They would likely still work without it (GOTOOLCHAIN=auto), so drop the commit if you prefer.client-benchpermissions: kept both sides, so the job hasactions: read,contents: read(this PR, for its checkout step) andpull-requests: write(fromdev's ci(benchmark): automate regression baselines #4340), followed bydev's env block.Generated by Claude Code