Skip to content

fix: remove ICU runtime dependency from linux-amd64 binary#2991

Merged
maphew merged 1 commit into
gastownhall:mainfrom
coffeegoddd:db/fix-linux-icu-2986
Apr 6, 2026
Merged

fix: remove ICU runtime dependency from linux-amd64 binary#2991
maphew merged 1 commit into
gastownhall:mainfrom
coffeegoddd:db/fix-linux-icu-2986

Conversation

@coffeegoddd

Copy link
Copy Markdown
Collaborator

Summary

  • Add gms_pure_go build tag to bd-linux-amd64 in .goreleaser.yml, matching all other CGO-enabled targets (linux-arm64, darwin-arm64, darwin-amd64). This switches from C FFI ICU regex to pure-Go stdlib regexp, eliminating the dynamic libicui18n.so dependency while keeping CGO enabled for embedded Dolt.
  • Remove libicu-dev from release workflow apt install (no longer needed).
  • Add post-build ldd check to verify no Linux binary has ICU runtime deps (mirrors the existing macOS otool check).

Fixes #2986

Test plan

  • CI passes — build with gms_pure_go tag compiles cleanly (verified locally)
  • New ldd verification step catches any ICU linkage regression
  • Smoke test confirms embedded Dolt still works without ICU

🤖 Generated with Claude Code

The linux-amd64 release binary was the only CGO-enabled target missing
the gms_pure_go build tag, causing it to dynamically link against the
CI runner's libicui18n.so.74. Users on distros with newer ICU (e.g.
Arch with ICU 78) got "cannot open shared object file" errors.

Add the tag to match all other targets (linux-arm64, darwin, etc.),
remove the now-unnecessary libicu-dev from the release workflow, and
add a post-build ldd check to catch ICU linkage regressions.

Fixes gastownhall#2986

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

@maphew maphew left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed. Single commit removing ICU linker flags from the linux-amd64 goreleaser target. Validated: builds cleanly with gms_pure_go tag. The goreleaser and workflow changes look correct. ✓

@maphew maphew merged commit 8269ab7 into gastownhall:main Apr 6, 2026
31 checks passed
maphew pushed a commit to maphew/beads that referenced this pull request Apr 6, 2026
…ep (gastownhall#2991)

The linux-amd64 release binary was the only CGO-enabled target missing
the gms_pure_go build tag, causing it to dynamically link against the
CI runner's libicui18n.so.74. Users on distros with newer ICU (e.g.
Arch with ICU 78) got "cannot open shared object file" errors.

Add the tag to match all other targets (linux-arm64, darwin, etc.),
remove the now-unnecessary libicu-dev from the release workflow, and
add a post-build ldd check to catch ICU linkage regressions.

Fixes gastownhall#2986

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
maphew added a commit to maphew/beads that referenced this pull request Apr 8, 2026
…ownhallGH-3126)

Add docs/ICU-POLICY.md as the authoritative reference for how ICU is
handled across all platforms. Update CONTRIBUTING.md and INSTALLING.md
to stop listing ICU as a build requirement (it's test-only since all
builds use gms_pure_go).

Resolves confusion from overlapping PRs (gastownhall#2991, gastownhall#3066, gastownhall#3112) where
agents and contributors were doing/undoing each other's ICU fixes
without a written policy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pre-built Linux binary requires ICU 74, incompatible with Arch Linux ICU 78

2 participants