Come trasformare i sorgenti in un pacchetto che gli utenti possono lanciare
senza installare Python. Su Windows viene generato
HiresChess-windows.zip; su macOS viene generato HiresChess-macos.dmg con
HiresChess.app. Si usa
PyInstaller con lo spec già presente nel repo
(chessMain.spec).
- Aver completato l'installazione da sorgente (vedi
INSTALL.md sezione B) con l'ambiente
envattivo. Su macOS usa Python 3.12 o 3.13 per la release: con Python 3.14pygamepuo' non avere wheel disponibili e provare a compilare SDL da sorgente. - Installare gli strumenti di build:
(include
pip install -r requirements-dev.txt
pyinstaller; opzionale: UPX nel PATH per comprimere i binari — lo spec haupx=True, se UPX manca viene solo ignorato).
Con l'ambiente attivo, dalla cartella del progetto:
python release.pyLo script controlla prima che le dipendenze runtime (pygame, pygame_menu,
pygame_gui, ecc.) siano installate nell'ambiente attivo: se mancano, si
ferma prima di creare un pacchetto rotto.
Per fermarti dopo il build PyInstaller, senza creare zip/DMG:
python release.py --build-onlyRisultato Windows (modalità onedir):
dist/
└── chessMain/
├── chessMain.exe <- l'eseguibile
└── _internal/ <- librerie, Python embedded, immagini
Lo spec impacchetta automaticamente le immagini dei pezzi (images/*.png) e
lo splash (pic-chess.png).
Risultato macOS:
dist/
└── HiresChess.app/
└── Contents/
python release.py produce dist/HiresChess-windows.zip già pronto:
dentro una cartella HiresChess/ ci sono l'eseguibile, le sue librerie
(_internal/), un config.json pulito, un LEGGIMI.txt, e le cartelle utente
engines/ books/ data/ pgn/ openings/ endgames/ — ognuna con il proprio
README/nota (copiati dal repo da stage_user_folders in release.py). Non
devi aggiungere nulla a mano.
Stockfish NON è incluso (scelta: zip più leggero, nessuna questione di
licenza GPL): l'utente lo scarica e lo mette in engines/ seguendo il
LEGGIMI.txt (vedi anche INSTALL.md). Se in futuro volessi
includerlo, ricorda la licenza GPLv3 (vedi sotto).
Stockfish è GPLv3, questa app è MIT. Lo chiami come processo separato (UCI), quindi il tuo codice resta MIT. Ma se distribuisci il binario di Stockfish nel pacchetto devi rispettare la GPLv3:
- includi il testo della licenza accanto al binario (es.
engines/Stockfish-LICENSE.txt); - indica dove trovare i sorgenti: https://github.com/official-stockfish/Stockfish.
In alternativa non impacchettare Stockfish e fai scaricare/scegliere il motore all'utente al primo avvio (vedi INSTALL.md).
Due strade:
A) Automatica (consigliata). Fai push di un tag v*
(git tag v1.1.0 && git push origin v1.1.0): il workflow
.github/workflows/release.yml builda Windows +
macOS con release.py e pubblica la release con gli asset allegati.
B) Manuale. python release.py crea dist/HiresChess-windows.zip; poi su
GitHub Releases → Draft a new release, crea il tag, allega lo zip e
pubblica. Vedi anche docs/RELEASE_CHECKLIST.md.
| Sintomo | Soluzione |
|---|---|
| L'exe si chiude subito | Lascia console=True nello spec (già impostato) per leggere il traceback; quasi sempre è l'import pgn non rimosso o un engines/ mancante. |
Failed to execute script chessMain |
Dipendenza non rilevata: aggiungila a hiddenimports in chessMain.spec. |
| Immagini dei pezzi mancanti | Controlla la sezione datas in chessMain.spec e che images/*.png esista. |
| Antivirus segnala l'exe | Falso positivo comune con PyInstaller; firma il binario o documenta l'eccezione. |
Android (sperimentale). Esiste un buildozer.spec per un eventuale port mobile, ma non è un percorso supportato/testato: questo documento copre solo la build Windows.