Hmbown/CodeWhale · error · anyhow::Error
Linux riscv64 release assets are temporarily unavailable bec
Error message
Linux riscv64 release assets are temporarily unavailable because rquickjs-sys 0.12.0 does not ship riscv64gc-unknown-linux-gnu bindings. See docs/INSTALL.md for the current platform matrix.
What it means
ensure_supported_release_target hard-refuses linux/riscv64 self-updates: rquickjs-sys 0.12.0 does not ship prebuilt riscv64gc-unknown-linux-gnu bindings, so no release asset exists for that target and the updater stops with a pointer to docs/INSTALL.md. This is a deliberate, documented platform gap rather than a transient failure.
Source
Thrown at crates/cli/src/update.rs:952
let bytes = fetch_manifest(candidate)
.with_context(|| format!("failed to fetch {}", candidate.manifest_url))?;
let text = std::str::from_utf8(&bytes)
.with_context(|| format!("{} is not valid UTF-8", candidate.manifest_url))?;
let checksums = parse_checksum_manifest(text)
.with_context(|| format!("failed to parse {}", candidate.manifest_url))?;
if !checksums.contains_key(&candidate.binary_name) {
bail!(
"{} does not list {}",
candidate.manifest_url,
candidate.binary_name
);
}
Ok(checksums)
}
fn ensure_supported_release_target(os: &str, arch: &str) -> Result<()> {
if os == "linux" && arch == "riscv64" {
bail!(
"Linux riscv64 release assets are temporarily unavailable because \
rquickjs-sys 0.12.0 does not ship riscv64gc-unknown-linux-gnu bindings. \
See docs/INSTALL.md for the current platform matrix."
);
}
Ok(())
}
pub(crate) fn release_arch_for_rust_arch(arch: &str) -> &str {
match arch {
"aarch64" => "arm64",
"x86_64" => "x64",
other => other,
}
}
/// Returns true when the binary name belongs to the pre-rebrand `deepseek-tui` era.
pub(crate) fn is_legacy_binary(current_exe: &Path) -> bool {View on GitHub (pinned to 0c42157ee5)
Solutions
- Use the CLI on a supported architecture (see the matrix in docs/INSTALL.md)
- Run under emulation/qemu-user with a supported arch if you must stay on this host
- Track the issue tracker for riscv64 support and upgrade once a release ships bindings
- Do not retry: this refusal is deterministic until the platform matrix changes
Example fix
// before
if let Some(cmd) = parse_cli() {
if cmd.is_update() {
run_update()?; // bails on linux/riscv64
}
}
// after
fn release_target_supported() -> bool {
!(std::env::consts::OS == "linux" && std::env::consts::ARCH == "riscv64")
}
if cmd.is_update() {
if !release_target_supported() {
eprintln!("self-update unavailable on this platform; see docs/INSTALL.md");
} else {
run_update()?;
}
} Defensive patterns
Strategy: validation
Validate before calling
fn release_target_supported() -> bool {
!cfg!(all(target_os = "linux", target_arch = "riscv64"))
&& !(std::env::consts::OS == "linux" && std::env::consts::ARCH == "riscv64")
}
if !release_target_supported() {
eprintln!("self-update unavailable on linux/riscv64; see docs/INSTALL.md");
return Ok(());
} Type guard
fn is_supported_release_target() -> bool {
!(std::env::consts::OS == "linux" && std::env::consts::ARCH == "riscv64")
} Try / catch
Prefer guarding before the call; if the error is reached anyway, catch it and show the docs/INSTALL.md pointer verbatim - the refusal is deterministic, so do not retry.
Prevention
- Gate self-update entry points on the platform matrix
- Track the rquickjs-sys bindings issue for riscv64 support
- Offer a from-source or emulation path for unsupported arches
When it happens
Trigger: Invoking self-update (or anything that validates the release target) on Linux riscv64 - ensure_supported_release_target sees os == "linux" && arch == "riscv64" and bails before any network work.
Common situations: Users on riscv64 hardware or SBCs/containers reporting riscv64 trying the in-app updater.
Related errors
- Android dladdr could not locate the updater's loaded image
- Android dladdr returned an empty loaded-image path
- loaded-image mapping for updater marker is not executable
- loaded-image mapping for updater marker has no file inode
- loaded-image mapping for updater marker has no pathname
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/f88c549d5c5558d9.
Report an issue: GitHub.