denoland/deno · error
No bundled AppImage runtime for arch '{other}'; supported: x
Error message
No bundled AppImage runtime for arch '{other}'; supported: x86_64, aarch64 What it means
AppImage packaging uses vendored Type-2 runtime ELF stubs (from github.com/AppImage/type2-runtime), and only x86_64 and aarch64 builds are bundled in the binary. The arch comes from the leading component of the --target triple, or from the host arch when no target is given; anything else bails immediately.
Source
Thrown at cli/tools/desktop.rs:3570
0x00, 0x00, 0x00, 0x1f, 0x15, 0xc4, 0x89, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x44,
0x41, 0x54, 0x78, 0x9c, 0x63, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0d,
0x0a, 0x2d, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
];
/// Pick the Type-2 runtime stub for the requested target. Falls back to the
/// host arch when `target` is None. The triple's leading component is the
/// arch (e.g. `x86_64-unknown-linux-gnu` → `x86_64`).
fn appimage_runtime_for_target(
target: Option<&str>,
) -> Result<Vec<u8>, AnyError> {
let arch = target
.and_then(|t| t.split('-').next())
.unwrap_or(std::env::consts::ARCH);
let compressed = match arch {
"x86_64" => APPIMAGE_RUNTIME_X86_64,
"aarch64" => APPIMAGE_RUNTIME_AARCH64,
other => bail!(
"No bundled AppImage runtime for arch '{other}'; supported: x86_64, aarch64"
),
};
let uncompressed_len =
u32::from_le_bytes(compressed[..4].try_into().unwrap());
zstd::bulk::decompress(&compressed[4..], uncompressed_len as usize)
.with_context(|| {
format!("Failed to decompress AppImage runtime for {arch}")
})
}
/// Unix mode bits for a filesystem entry. On non-Unix hosts (cross-compiling
/// a Linux AppImage from Windows/macOS) we don't have real mode bits, so fall
/// back to a reasonable default: 0o755 for dirs, 0o644 for files.
fn unix_mode_of(meta: &std::fs::Metadata) -> u16 {
#[cfg(unix)]
{
use std::os::unix::fs::PermissionsExt;View on GitHub (pinned to f7822238ca)
Solutions
- Pass an explicit supported target: `--target x86_64-unknown-linux-gnu` or `--target aarch64-unknown-linux-gnu`.
- If omitting --target, run the build on an x86_64 or aarch64 host.
- For genuinely unsupported arches, produce a plain directory/tar distribution instead of an AppImage.
Example fix
# before deno desktop --target armv7-unknown-linux-gnu ... # after deno desktop --target aarch64-unknown-linux-gnu ...
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED=(x86_64 aarch64)
ARCH="${TARGET%%-*}" # leading component of the triple, or host arch if unset
[[ " ${SUPPORTED[*]} " == *" $ARCH "* ]] || { echo "unsupported arch for AppImage: $ARCH"; exit 1; } Type guard
function isSupportedDesktopArch(target?: string): boolean {
const arch = (target ?? Deno.build.arch).split("-")[0];
return arch === "x86_64" || arch === "aarch64";
} Prevention
- Always pass an explicit --target in CI rather than inheriting the runner's arch.
- Keep a matrix of only x86_64/aarch64 triples for desktop packaging jobs.
When it happens
Trigger: Building an AppImage with `--target` set to an unsupported triple (armv7-unknown-linux-gnu, i686-*, riscv64-*), or running with no --target on a host whose arch isn't x86_64/aarch64.
Common situations: Targeting ARM boards (armv7 Raspberry Pi), 32-bit builds, or exotic-arch CI hosts; forgetting to pass --target on an unusual build machine.
Related errors
- No Debian architecture mapping for arch '{other}'; supported
- No RPM architecture mapping for arch '{other}'; supported: x
- No MSI architecture mapping for arch '{other}'; supported: x
- no .desktop file found in {}
- app name {app_name:?} resolves its runtime library to {runti
AI-assisted analysis of denoland/deno@f7822238ca (2026-08-20).
Data as JSON: /api/errors/eb6bae883f0141da.
Report an issue: GitHub.