Hmbown/CodeWhale · error
{}
Error message
{} What it means
Thrown before applying an update when the host system's glibc version is older than the minimum the release binary requires. detect_host_glibc() reads the host's glibc version; if it cannot detect one or it is below `required`, the updater aborts with a human-readable compatibility message naming the asset, required version, and detected version.
Solutions
- Read the message for required vs detected glibc and upgrade the OS/distro to one with sufficient glibc.
- Use a build of the CLI targeting older glibc or a musl/static build if available.
- Run via a newer container image instead of upgrading the host.
- Compile the CLI from source against the local toolchain.
Defensive patterns
Strategy: validation
Validate before calling
// Before updating, compare host glibc to the release's requirement
let required = GlibcVersion { major: 2, minor: 31 };
if let Some(host) = detect_host_glibc() {
if host < required {
eprintln!("host glibc {:?} < required {:?}; use a musl/static build or upgrade the OS", host, required);
}
} else {
eprintln!("glibc not detected (musl?); choose a matching build");
} Prevention
- Check `ldd --version` before running self-update on older distros.
- Use musl/static builds on Alpine or minimal container images.
- Prefer updating inside a current base image rather than on aging hosts.
- Pin a CLI version known to work with your distro's glibc.
When it happens
Trigger: Running self-update on a Linux system whose glibc (detected via ldd or similar) is below the version required by the staged release asset, or where glibc detection returned None.
Common situations: Older LTS distributions (e.g. CentOS 7, Ubuntu 18.04) trying to install a binary built against a newer glibc; musl-based systems (Alpine) where glibc detection fails.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- Prebuilt Codewhale asset
- Prebuilt Codewhale Linux binaries require GLIBC_
- Prebuilt Codewhale Linux binaries require GLIBC_
- application not found or name is ambiguous in the AT-SPI…
- AT-SPI action failed
AI-assisted analysis of Hmbown/CodeWhale@73e0f67d83 (2026-09-22).
Data as JSON: /api/errors/d36683f9707e984f.
Report an issue: GitHub.
Appendix: source
Thrown at crates/cli/src/update.rs:1728
}
fn preflight_downloaded_binary(asset_name: &str, bytes: &[u8]) -> Result<()> {
// GNU libc preflight is Linux-only (#4241). Rust treats `target_os = "android"`
// as distinct from `"linux"`, so Termux/Android builds skip this check entirely
// — Android uses Bionic libc, not glibc.
if !cfg!(target_os = "linux") || glibc_check_disabled() {
return Ok(());
}
let Some(required) = highest_required_glibc(bytes) else {
return Ok(());
};
let host = detect_host_glibc();
if host.is_some_and(|host| host >= required) {
return Ok(());
}
bail!(
"{}",
glibc_compatibility_message(asset_name, required, host)
);
}
fn detect_host_glibc() -> Option<GlibcVersion> {
let getconf = std::process::Command::new("getconf")
.arg("GNU_LIBC_VERSION")
.output()
.ok()
.filter(|output| output.status.success())
.and_then(|output| String::from_utf8(output.stdout).ok())
.and_then(|output| parse_glibc_version(&output));
if getconf.is_some() {
return getconf;
}
std::process::Command::new("ldd")View on GitHub (pinned to 73e0f67d83)