Compilat onefile amb Nuitka (app.py + zstandard) i rutes en mode onefile

This commit is contained in:
2026-05-29 22:52:28 +02:00
parent 667eade660
commit 021e865179
4 changed files with 106 additions and 20 deletions
+26 -3
View File
@@ -64,10 +64,33 @@ Una entrada `[[game]]` por juego. Campos:
| `info_url` | no | API Gitea del repo (def. derivada de `clone_url`) |
| `icon_rel` | no | ruta del icono dentro del repo (def. `release/icons/icon.png`) |
## Compilar a binario (Nuitka)
## Compilar a binario (Nuitka, onefile)
`build.sh` lo hace todo: crea el `.venv`, instala dependencias (PySide6 + Nuitka +
zstandard) y compila un único ejecutable comprimido, empaquetándolo en
`dist/jlauncher-v<versión>-<os>-<arch>.tar.gz` junto a `games.toml`.
```bash
pip install nuitka PySide6
./build.sh
# binario en dist/jlauncher.dist/jlauncher
# binario: dist/jlauncher (+ dist/games.toml)
```
El binario crea `jlauncher_data/` y `settings.json` **junto a sí mismo** (resuelto vía
`NUITKA_ONEFILE_DIRECTORY`). El punto de entrada para empaquetar es `app.py` (desde
fuente se ejecuta con `python -m jlauncher`).
### Prerequisitos del sistema (no los instala el script)
- **Python 3.11+** (usa `tomllib`).
- Un **compilador C**:
- Linux: `gcc` y `patchelf` (p. ej. `apt install build-essential patchelf python3-dev`).
- macOS: **Xcode Command Line Tools** (`xcode-select --install`); aquí *no* hace falta
patchelf (Nuitka usa `install_name_tool`).
- `git` en el PATH.
### macOS
Compila en el propio Mac (Nuitka no compila cruzado): `./build.sh` genera
`jlauncher-v…-darwin-arm64.tar.gz`. Como el binario no va firmado, la primera vez quizá
debas hacer `xattr -dr com.apple.quarantine jlauncher` o abrirlo con clic derecho → Abrir.
Lánzalo desde terminal (`./jlauncher`).