À 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.