From ff095e37404735d41b277422b80e3091c1b5b1b0 Mon Sep 17 00:00:00 2001 From: Ue1i7on Date: Fri, 19 Jun 2026 11:50:15 -0300 Subject: [PATCH] feat: add Android/Termux support to postinstall and wrapper On Termux (Android), os.platform() returns 'android', which caused: - postinstall.mjs to look for @mimo-ai/mimocode-android-arm64 (doesn't exist) - bin/mimo wrapper to construct an incorrect lookup path Changes: - postinstall.mjs: map android to linux for binary package lookup - bin/mimo: add android to platformMap for correct binary resolution - bin/mimo: use grun (glibc-runner) on Android to execute glibc-linked binary Linux arm64 binaries are compiled against glibc and need grun to run on Termux, which uses Android's bionic libc. --- packages/opencode/bin/mimo | 6 +++++- packages/opencode/script/postinstall.mjs | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/opencode/bin/mimo b/packages/opencode/bin/mimo index 7f8ab8ae2..65e521b59 100755 --- a/packages/opencode/bin/mimo +++ b/packages/opencode/bin/mimo @@ -6,7 +6,10 @@ const path = require("path") const os = require("os") function run(target) { - const result = childProcess.spawnSync(target, process.argv.slice(2), { + // On Android/Termux, glibc-linked binaries need grun (glibc-runner) + const isAndroid = os.platform() === "android" + const args = isAndroid ? ["grun", target, ...process.argv.slice(2)] : [target, ...process.argv.slice(2)] + const result = childProcess.spawnSync(args[0], args.slice(1), { stdio: "inherit", }) if (result.error) { @@ -35,6 +38,7 @@ const platformMap = { darwin: "darwin", linux: "linux", win32: "windows", + android: "linux", // Termux/Android uses linux binary via grun } const archMap = { x64: "x64", diff --git a/packages/opencode/script/postinstall.mjs b/packages/opencode/script/postinstall.mjs index c75ed2a0f..550dd1661 100644 --- a/packages/opencode/script/postinstall.mjs +++ b/packages/opencode/script/postinstall.mjs @@ -19,6 +19,10 @@ function detectPlatformAndArch() { case "linux": platform = "linux" break + case "android": + // Termux/Android — use linux-arm64 binary via grun (glibc runner) + platform = "linux" + break case "win32": platform = "windows" break