You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.9 KiB
2.9 KiB
Piano di distribuzione ARM con AppImage
Questo repository ora e pronto per essere portato dentro un bundle AppImage senza dipendere dalla directory corrente e senza scrivere nel filesystem montato in sola lettura dell'AppImage.
Stato attuale
- Le risorse di runtime vengono risolte a partire dal root del progetto tramite
MICE_PROJECT_ROOT. - I dati persistenti (
scores.txt,user_profiles.json) vengono scritti in una directory utente persistente:MICE_DATA_DIR, se impostata.- altrimenti
${XDG_DATA_HOME}/mice. - fallback:
~/.local/share/mice.
- E presente uno scaffold di packaging in
packaging/.
Strategia consigliata
- Costruire l'AppImage su una macchina
aarch64reale o in una chroot/container ARM. - Creare dentro
AppDirun ambiente Python copiato localmente conpython -m venv --copies. - Installare le dipendenze Python da
requirements.txtdentro quel Python locale. - Copiare il gioco e gli asset in
AppDir/usr/share/mice. - Bundlare le librerie native richieste da SDL2 e dai wheel Python dentro
AppDir/usr/lib. - Usare
AppRunper esportareLD_LIBRARY_PATH,MICE_PROJECT_ROOTeMICE_DATA_DIRprima del lancio dirats.py. - Generare il file finale con
appimagetool.
Perche costruire nativamente su ARM
- Un AppImage deve contenere binari della stessa architettura del target.
PySDL2,numpyePillowportano con se librerie native o dipendenze native.- Il cross-build da
x86_64aaarch64e possibile, ma aumenta molto il rischio di incompatibilita suglibc,libSDL2e wheel Python.
Comando di build
Da una macchina Linux aarch64 con python3, rsync, ldd, ldconfig e appimagetool disponibili:
./packaging/build_appimage_aarch64.sh
Output previsto:
dist/AppDirdist/Mice-aarch64.AppImage
Dipendenze host richieste al builder ARM
Serve un sistema di build ARM con almeno:
python3python3-venvrsyncglibcuserland standardappimagetool- librerie di sviluppo/runtime installate sul builder, in particolare:
libSDL2libSDL2_ttf
Test minimi da fare sul target ARM
- Avvio del gioco da shell.
- Caricamento font e immagini.
- Riproduzione audio WAV.
- Salvataggio punteggi in
~/.local/share/mice/scores.txt. - Creazione e lettura profili in
~/.local/share/mice/user_profiles.json. - Cambio livello da
assets/Rat/level.dat.
Rischi residui
- La relocazione di un venv copiato dentro AppImage e pratica, ma va verificata sul target reale.
- Se il target ARM ha un userland molto vecchio, conviene costruire l'AppImage su una distro ARM con
glibcpiu vecchia del target. - Se emergono problemi di relocazione del Python del venv, il passo successivo corretto e passare a un Python relocatable tipo
python-build-standalonemantenendo invariato il launcher.
File introdotti
runtime_paths.pypackaging/appimage/AppRunpackaging/appimage/mice.desktoppackaging/build_appimage_aarch64.sh