ci: ship the Linux release as a static musl binary#28
Conversation
The `x86_64-unknown-linux-gnu` release tarball is built on ubuntu-22.04 and requires GLIBC_2.32+, so it fails to run on older but still common distros (e.g. Ubuntu 20.04 / glibc 2.31) with `version 'GLIBC_2.3x' not found`. Switch the Linux target to `x86_64-unknown-linux-musl`, which links fully statically and runs anywhere regardless of glibc version. rusqlite already uses its `bundled` SQLite and ureq uses rustls (both pure-Rust-ish, no system libs), so the only new build dependency is `musl-tools` for musl-gcc, which compiles the bundled SQLite amalgamation and ring's C/asm. - release.yml: Linux matrix target → musl, plus a musl-tools install step. - install.sh: Linux x86_64 now resolves the musl tarball. - README(.zh): document the musl target as static / glibc-independent. Co-Authored-By: Claude <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 55 minutes and 39 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Problem
The
x86_64-unknown-linux-gnurelease tarball is built on ubuntu-22.04 and requiresGLIBC_2.32+. On older-but-common distros it dies before printing anything:Hit firsthand installing onto an Ubuntu 20.04 / glibc 2.31 host.
Fix
Switch the Linux target to
x86_64-unknown-linux-musl— a fully static binary with no glibc version dependency, runs on any x86_64 Linux.This is cheap here because the deps are already static-friendly:
rusqliteuses itsbundledSQLite (compiles the amalgamation, no system libsqlite3),urequses rustls (no OpenSSL/native-tls).So the only new build requirement is
musl-tools(musl-gcc) to compile the bundled SQLite amalgamation and ring's C/asm.release.yml: Linux matrix target → musl, + amusl-toolsinstall step (guarded oncontains(matrix.target, 'musl')).install.sh: Linux x86_64 now resolves the…-linux-musltarball.README(.zh): document the target as static / glibc-independent.Verification
Triggered the workflow via
workflow_dispatchon this branch (run 27144151007) — run succeeded:Build x86_64-unknown-linux-musljob: success (Install musl-tools ✓ → Build ✓ → Package ✓)Publish GitHub Releasejob: skipped (gated on av*tag, so no release was cut)Once this and #27 merge and a new tag is cut, the dev host (glibc 2.31) can install via the normal one-liner — no more local source builds.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com