Switch Linux builds to musl for fully static binaries#93
Merged
Conversation
Linux targets were using gnu libc (dynamically linked), causing the CLI to fail on systems with older glibc versions. Switch to musl targets which produce fully statically linked binaries, matching ClickHouse's approach of maximum portability across Linux distributions. - x86_64-unknown-linux-gnu → x86_64-unknown-linux-musl (now uses cross) - aarch64-unknown-linux-gnu → aarch64-unknown-linux-musl - Updated install.sh to fetch musl binaries Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…atrix Release workflow: - Pin cross to v0.2.5 instead of floating --git - Add static-link verification step (file + ldd) for Linux musl artifacts - Add smoke-test job that runs the built binary in Docker containers across 8 distros: Ubuntu 20.04/22.04/24.04, Debian Bullseye/Bookworm, CentOS 7, Amazon Linux 2, and Alpine 3.18 - Release now depends on smoke tests passing Test-install workflow: - Expand OS matrix: ubuntu-22.04, ubuntu-24.04, macos-13, macos-14, macos-15 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
--tag requires --git flag; --version installs from crates.io which is the correct way to pin a crates.io release. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
iskakaushik
approved these changes
Apr 7, 2026
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.
Summary
*-linux-gnuto*-linux-musl, producing fully statically linked binariescross(pinned to v0.2.5) for both Linux targets to handle the musl toolchaininstall.shto fetch the new musl binary namesfile+ldd) for Linux artifactstest-install.ymlOS matrix to cover more runnersContext
The CLI fails on Linux systems with older glibc:
musl-linked binaries have zero runtime dependencies and work on any Linux distribution regardless of glibc version, similar to how ClickHouse itself ships statically linked binaries.
The project already uses
rustls(no OpenSSL dependency), so the musl build works cleanly.CI improvements
Release workflow (
release.yml):crosstov0.2.5for reproducible buildsfile+lddchecks on every Linux musl binary, fails the build if not statically linked--versionand--helpin Docker containers before release is published:needs: [build, smoke-test])Install test workflow (
test-install.yml):[ubuntu-latest, macos-latest]to[ubuntu-22.04, ubuntu-24.04,macos-14, macos-15]Test plan
x86_64-unknown-linux-muslandaarch64-unknown-linux-musl🤖 Generated with Claude Code