{"record":{"id":"eb6bae883f0141da","repo":"denoland/deno","slug":"no-bundled-appimage-runtime-for-arch-other-su","errorCode":null,"errorMessage":"No bundled AppImage runtime for arch '{other}'; supported: x86_64, aarch64","messagePattern":"No bundled AppImage runtime for arch '(.+?)'; supported: x86_64, aarch64","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/desktop.rs","lineNumber":3570,"sourceCode":"  0x00, 0x00, 0x00, 0x1f, 0x15, 0xc4, 0x89, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x44,\n  0x41, 0x54, 0x78, 0x9c, 0x63, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0d,\n  0x0a, 0x2d, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,\n  0x60, 0x82,\n];\n\n/// Pick the Type-2 runtime stub for the requested target. Falls back to the\n/// host arch when `target` is None. The triple's leading component is the\n/// arch (e.g. `x86_64-unknown-linux-gnu` → `x86_64`).\nfn appimage_runtime_for_target(\n  target: Option<&str>,\n) -> Result<Vec<u8>, AnyError> {\n  let arch = target\n    .and_then(|t| t.split('-').next())\n    .unwrap_or(std::env::consts::ARCH);\n  let compressed = match arch {\n    \"x86_64\" => APPIMAGE_RUNTIME_X86_64,\n    \"aarch64\" => APPIMAGE_RUNTIME_AARCH64,\n    other => bail!(\n      \"No bundled AppImage runtime for arch '{other}'; supported: x86_64, aarch64\"\n    ),\n  };\n  let uncompressed_len =\n    u32::from_le_bytes(compressed[..4].try_into().unwrap());\n  zstd::bulk::decompress(&compressed[4..], uncompressed_len as usize)\n    .with_context(|| {\n      format!(\"Failed to decompress AppImage runtime for {arch}\")\n    })\n}\n\n/// Unix mode bits for a filesystem entry. On non-Unix hosts (cross-compiling\n/// a Linux AppImage from Windows/macOS) we don't have real mode bits, so fall\n/// back to a reasonable default: 0o755 for dirs, 0o644 for files.\nfn unix_mode_of(meta: &std::fs::Metadata) -> u16 {\n  #[cfg(unix)]\n  {\n    use std::os::unix::fs::PermissionsExt;","sourceCodeStart":3552,"sourceCodeEnd":3588,"githubUrl":"https://github.com/denoland/deno/blob/f7822238cab635a3a19f99f493f675fa81a7f9d8/cli/tools/desktop.rs#L3552-L3588","documentation":"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.","triggerScenarios":"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.","commonSituations":"Targeting ARM boards (armv7 Raspberry Pi), 32-bit builds, or exotic-arch CI hosts; forgetting to pass --target on an unusual build machine.","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."],"exampleFix":"# before\ndeno desktop --target armv7-unknown-linux-gnu ...\n\n# after\ndeno desktop --target aarch64-unknown-linux-gnu ...","handlingStrategy":"validation","validationCode":"SUPPORTED=(x86_64 aarch64)\nARCH=\"${TARGET%%-*}\"   # leading component of the triple, or host arch if unset\n[[ \" ${SUPPORTED[*]} \" == *\" $ARCH \"* ]] || { echo \"unsupported arch for AppImage: $ARCH\"; exit 1; }","typeGuard":"function isSupportedDesktopArch(target?: string): boolean {\n  const arch = (target ?? Deno.build.arch).split(\"-\")[0];\n  return arch === \"x86_64\" || arch === \"aarch64\";\n}","tryCatchPattern":null,"preventionTips":["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."],"tags":["desktop","linux","appimage","architecture","packaging"],"backgroundTag":"unsupported-target-arch","analyzedSha":"f7822238cab635a3a19f99f493f675fa81a7f9d8","analyzedAt":"2026-08-20T13:07:44.778Z","contentChangedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}