#!/usr/bin/env bash # Gera o singularity.pgapp do Endgame: Singularity 1.1 (commit 99729e8 do github.com/singularity/singularity: codigo # GPL-2+, dados e sons CC BY-SA 3.0, fontes e imagens listados no LICENSE.txt do projeto) com a musica de Max McCracken # do repositorio singularity/singularity-music (commit 025e269, CC BY-SA 3.0): so quatro faixas (tres de jogo, uma de # vitoria e uma de derrota). O nosso singularity/web.patch (porta para o navegador): laco de dialogos assincrono (os # dialogos que a logica do jogo pede no meio de um tick ficam numa fila e abrem em seguida), sem numpy (npshim.py, um # substituto em Python puro das poucas chamadas que o jogo usa; a mascara de dia e noite do mapa e desenhada em linhas # com pygame), sem linha de comando nem polib, saves e preferencias em /saves (pelo $HOME e o XDG que o main.py aponta # para la). Fora do pacote: as traducoes (so ingles), testes, docs, utils e os fontes do Psycle/Renoise. # Zip deterministico (Builds/pgapp.py). # # src/FredGames.Bundler/Builds/build-singularity.sh # # Saida: artifacts/build/singularity-99729e8/singularity.pgapp set -euo pipefail GAME_COMMIT=99729e859b400e8271445458995a1dc4951ee321 GAME_SHA256=fa7383342e837e4dc89681ef777ca96fb2d423b0bb6a34aa77816618a4b1f33d MUSIC_COMMIT=025e2696638bcc3bf7690679c3a17c0b46823bbe MUSIC_SHA256=928e04965755c1659a750390c150424e88067614559b2ad7deb158b9719ce6dc here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/singularity-99729e8" cache="$root/artifacts/build/cache" mkdir -p "$cache" fetch() { [ -f "$cache/$1" ] || curl -fsSL "$2" -o "$cache/$1"; echo "$3 $cache/$1" | shasum -a 256 -c -; } fetch singularity-99729e8.tar.gz "https://github.com/singularity/singularity/archive/$GAME_COMMIT.tar.gz" "$GAME_SHA256" fetch singularity-music-025e269.tar.gz "https://github.com/singularity/singularity-music/archive/$MUSIC_COMMIT.tar.gz" "$MUSIC_SHA256" rm -rf "$out" mkdir -p "$out/src" "$out/music" "$out/tree" tar -xzf "$cache/singularity-99729e8.tar.gz" -C "$out/src" --strip-components 1 tar -xzf "$cache/singularity-music-025e269.tar.gz" -C "$out/music" --strip-components 1 cd "$out/src" patch -p1 -s < "$here/singularity/web.patch" # o pacote do jogo: so o que roda cp -R singularity "$out/tree/singularity" cp main.py npshim.py LICENSE.txt LICENSE.CC-BY-SA-3.txt LICENSE.cc0.txt LICENSE.gpl.txt AUTHORS.txt "$out/tree/" cd "$out/tree" find singularity/i18n -mindepth 1 -maxdepth 1 ! -name AUTHORS.txt ! -name languages.json -exec rm -rf {} + rm -f singularity/__main__.py find . -name __pycache__ -prune -exec rm -rf {} \; # a musica mkdir -p singularity/music/win singularity/music/lose for t in "Awakening" "Enemy Unknown" "Orbital Elevator"; do cp "$out/music/music/$t.ogg" "singularity/music/$t.ogg"; done cp "$out/music/music/win/Apex Aleph.ogg" singularity/music/win/ cp "$out/music/music/lose/Chimes They Fade.ogg" singularity/music/lose/ cp "$out/music/README.txt" singularity/music/README.txt python3 -I "$here/pgapp.py" "$out/tree" "$out/singularity.pgapp" shasum -a 256 "$out/singularity.pgapp" ls -la "$out/singularity.pgapp"