github / github/copilot-cli

Android/Termux support broken in v1.0.48+ (runtime.node requires glibc)

Ouverte
#3,333 5 commentaires 4 réactions 0 personnes assignées Voir sur GitHub
area:installation area:platform-linux
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
6

Description

## Summary

Copilot CLI v1.0.48 introduced a native Rust addon (`runtime.node`) that is compiled against glibc, making it impossible to run on Android/Termux where Node.js uses Bionic libc.

## Environment

- **Platform**: Android (Termux)
- **`process.platform`**: `"android"`
- **`process.arch`**: `"arm64"`
- **Node.js**: v24.x (Termux package)
- **Last working version**: 1.0.45

## Issues by version

### v1.0.45 (workable with patches)

Three fixable issues:
1. **ripgrep**: Looks for `ripgrep/bin/android-arm64/rg` — fixed by copying from `linux-arm64/rg` (statically linked, runs fine)
2. **pty.node**: Looks for `prebuilds/android-arm64/pty.node` — fixed by building `node-pty` from source on Termux
3. **Platform switch**: The native module loader in `app.js`/`index.js`/`sdk/index.js` doesn't handle `case "android"` — fixed by patching the JS

### v1.0.48+ (BROKEN — no workaround)

A new `runtime.node` Rust addon was introduced that handles token counting (tiktoken), MCP config parsing, shell analysis, hooks, and session filesystem. It is linked against glibc:

```
NEEDED: libgcc_s.so.1, libpthread.so.0, libm.so.6, libdl.so.2, libc.so.6
```

This **cannot** run on Android because:
- Android uses Bionic libc, not glibc
- The glibc TLS (Thread-Local Storage) model is incompatible with Android's linker
- You cannot mix glibc and Bionic libraries in the same process
- The binary is closed-source Rust, so we cannot rebuild it

## Request

1. **Ship an Android-compatible `runtime.node`** — Rust supports the `aarch64-linux-android` target natively. Cross-compiling with `cargo build --target aarch64-linux-android` would produce a Bionic-compatible binary.

2. **Add `android-arm64` to the platform matrix** — The optional dependencies (`@github/copilot-linux-arm64`, etc.) should include an `@github/copilot-android-arm64` variant.

3. **Handle `"android"` in the platform switch** — The JS code in `app.js`, `index.js`, and `sdk/index.js` should map `process.platform === "android"` to the appropriate prebuild path.

## Workaround

We are pinned to v1.0.45. Users who accidentally upgrade are stuck.

## Additional context

Termux is a widely-used terminal emulator for Android that provides a Linux-like environment. Node.js runs natively on it. Before v1.0.48, Copilot CLI worked with minor patches. The introduction of the glibc-only native addon broke this entirely.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Inspect app.js, index.js, and sdk/index.js, along with the optional-dependency platform matrix, to trace how native modules are selected. Verify how runtime.node and the android-arm64 package would be provided for Termux, then confirm Android platform mapping and runtime loading without breaking existing targets.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
android, node.js, rust
Domaine
build-system, cli, mobile
Type d'issue
Bug
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.