À propos du projet
Ce projet fournit un build modifié de [Bun](https://bun.sh) qui tourne nativement sur Android/Termux (aarch64) en utilisant Bionic libc. Pas de proot, pas de glibc-runner, pas de LD_PRELOAD, pas de termux-exec — tous les correctifs sont compilés directement dans le binaire via des branches Rust `#[cfg(target_os = "android")]`.
### Ce que cela résout
Le build Android de Bun 1.4 en amont rencontre trois problèmes restants sur Termux :
- `bun install` plante avec SIGSYS car le profil seccomp du zygote Android piège `fchmodat2` et `openat2` au lieu de renvoyer `ENOSYS`, empêchant les mécanismes de repli de s'exécuter.
- `bunx <pkg>` échoue avec ENOENT car les shims npm portent des shebangs `#!/usr/bin/env node` et Android n'a pas de `/usr/bin`.
- `bun:ffi cc()` signale TinyCC désactivé car l'amont verrouille cette fonctionnalité sur Android.
Ce fork applique sept correctifs au niveau source contre Bun v1.4.0 pour résoudre chaque problème.
### Fonctionnalités
- **Support FFI complet** : `dlopen`, `cc()` et `JSCallback` fonctionnent tous.
- **TinyCC activé sur Android** : mémoire JIT compatible SELinux via `memfd_create` + veneers d'appel long ARM64 pour les appels BL hors de portée.
- **Contournement du piège seccomp** : `lchmod` utilise `fchmodat(AT_SYMLINK_NOFOLLOW)` au lieu de `fchmodat2` piégé ; les parcours du résolveur utilisent `openat` simple au lieu de `openat2` piégé.
- **Réécriture des shebangs** : les scripts avec interpréteurs manquants voient leurs chemins réécrits, par exemple `/usr/bin` vers `$PREFIX/bin`.
- **`bunx` fonctionne** : le lanceur définit correctement `argv[0]` pour le lancement de scripts.
### Compatibilité
| Élément | Statut |
|---|---|
| Architecture | `aarch64` (arm64) |
| Android | 10+ (API 29+, SELinux untrusted_app_27+) |
| Version de Bun | 1.4.0 |
| `bun install` | Fonctionne (contournement seccomp) |
| `bun run` / `bunx` | Fonctionne |
| `bun build --compile` | Fonctionne (corrigé en amont) |
| `bun:ffi` `dlopen` / `cc()` / `JSCallback` | Fonctionne |
| opentui TUI | Fonctionne |
### Installation
bash
curl -fsSL https://raw.githubusercontent.com/bd-loser/bun-termux/main/scripts/install.sh | bash
Installe `bun` et `bunx` dans `$PREFIX/bin`.
### Compilation depuis les sources
Nécessite Rust, NDK r27c, clang 18, CMake, Ninja et Bun pour l'amorçage. Voir [docs/BUILD.md](docs/BUILD.md) pour les instructions complètes.
### Licence
MIT pour les correctifs du fork ; les composants TinyCC sous LGPL-2.1 ; Bun amont sous MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.