Repository navigation
ci: unpin the toolchain drift that is failing lint and test-lib - #115
Merged
Merged
Conversation
Two failures on every PR, neither from the code.
test-lib (macos-latest): the runner image is now macOS 26, whose dyld
refuses a binary with no LC_UUID load command, so every test binary
aborts at launch -- "missing LC_UUID load command", 0.003s, across all of
lib. setup-go installed 1.21.13, but go.work asks for 1.22.5 and the
toolchain auto-switch downloaded it, and go1.22.5's darwin linker does
not emit LC_UUID. Checked which does, on macOS arm64:
go1.22.5 LC_UUID 0 go1.23.12 LC_UUID 0
go1.22.7 LC_UUID 0 go1.24.0 LC_UUID 1
So the matrix moves to 1.24.x, the first that works. This is the
toolchain only -- lib/go.mod still declares go 1.22.0, which is still
the language version the code is compiled against.
lint: the job had no setup-go, so golangci-lint type-checked against the
runner's preinstalled Go, which has moved to 1.26, while the action's
"latest" resolves to golangci-lint 1.64.8 built with go1.24 -- "file
requires newer Go version go1.26 (application built with go1.24)".
Pin both, so they cannot drift apart again.
That makes lint run for the first time in a while, and it reports 16
issues, all of them in bio/slow5/svb -- vendored stream-vbyte SIMD and
cpuid code with its own README and Apache-2.0 LICENSE. Excluded in a new
lib/.golangci.yml rather than reformatting a third-party copy away from
upstream. lib itself is clean.
Verified locally on macOS: the full lib suite passes under go1.24.0, and
golangci-lint v1.64.8 exits 0 with this config.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two checks fail on every PR right now, neither of them from the code under test. Both are toolchain drift.
test-lib (macos-latest)— macOS 26 rejects the binariesmacos-latestis now macOS 26.6.2 (macos-26-arm64). Its dyld refuses a Mach-O with noLC_UUIDload command, so every test binary aborts at launch:Not two packages — all of
lib.The toolchain is the cause, and it is not the one the matrix names.
setup-goinstalls 1.21.13, thengo.work'sgo 1.22.5triggers the auto-switch (go: downloading go1.22.5 (darwin/arm64)), and that linker emits noLC_UUID. Measured on macOS arm64 withotool -l | grep -c LC_UUID:So bumping 1.21 → 1.22 would not have fixed it. The matrix moves to 1.24.x, the first that works. This is the toolchain, not the language version:
lib/go.modstill declaresgo 1.22.0, and that is still what the code is compiled against.lint— the linter is older than the Go it readsThe job had no
setup-go, so golangci-lint type-checked against the runner's preinstalled Go, which has moved to 1.26, whilegolangci-lint-action@v2.5.2withversion: latestresolves to golangci-lint 1.64.8, built with go1.24. A linter cannot read a standard library newer than the one it was built against.Pinned both —
go-version: 1.24.xandversion: v1.64.8— so they cannot drift apart again, and modernised the two actions.The consequence: lint runs for the first time in a while
It reports 16 issues, every one of them in
bio/slow5/svb— vendored stream-vbyte SIMD and cpuid code that carries its own README and Apache-2.0 LICENSE. They are naming,gofmtand unused-symbol style. Reformatting a third-party copy only diverges it from upstream, so a newlib/.golangci.ymlexcludes that directory. First-partylibis clean.Verified locally (macOS 15.6.1, arm64)
go test ./lib/...passes underGOTOOLCHAIN=go1.24.0.golangci-lint v1.64.8exits 0 with this config.LC_UUIDtable above is fromotoolon binaries built by each toolchain.Separate from #114, which is a library fix; this is only CI. Landing this first would give #114 a clean board.