#!/usr/bin/env bash # Gera o retux.pgapp do ReTux 1.6.2 (onpon4, 2015-2023; codigo GPL-3.0 ou posterior; arte do SuperTux e de outros, sons e # musica de varios autores, cada arquivo em data/LICENSES: GPL-3+, GPL-2+, CC BY-SA 3.0/4.0, CC BY 3.0, CC0) a partir da tag # v1.6.2 do repositorio (github.com/retux-game/retux), com a Pygame SGE 2.0.2 e as extensoes xSGE (LGPL-3.0+) e os nossos # patches assincronos (Builds/sge/), mais o retux/web.patch: laco assincrono, sem Quit, tela cheia nem importar levelsets (o # Tk), teclas e controles escolhidos por dialogos sem laco proprio, dados lidos onde estao (o original os copia para uma # pasta temporaria a cada execucao), saves em /saves. Para o jogo caber no navegador: # - sem a fonte Takao P Gothic + IPA Font License (6 MB, so serve as traducoes japonesas), sem as traducoes (.po), sem # as fontes dos sprites do Tux e do som da mola (sources/) e sem splat.wav e wood.wav (nao usados); # - a musica (24 MB, ~150 kbps) e recodificada a ~70 kbps com Builds/retux/recode-music.py (decodifica com o pygame-ce # e codifica com o libvorbis de Builds/pygame-music/); # - explosion.wav (sem autor nem licenca no LICENSES) vira o efeito gerado por Builds/retux/explosion.py (CC0, nosso). # Zip deterministico (Builds/pgapp.py). # # src/FredGames.Bundler/Builds/build-retux.sh # # Saida: artifacts/build/retux-1.6.2/retux.pgapp set -euo pipefail COMMIT=8b7e9e26dbd4f3c406ed3043a006edf1a6c82865 SHA256=45b81e642edbc9016f33af8056786efe7df2a5233bf3726ce86a115790c65c05 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/retux-1.6.2" cache="$root/artifacts/build/cache" py="$root/artifacts/tools/venv-pygame/bin/python" wav2ogg="$root/artifacts/tools/pygame-music/wav2ogg" [ -x "$py" ] || { echo "Crie antes o venv: python3 -m venv artifacts/tools/venv-pygame && artifacts/tools/venv-pygame/bin/pip install pygame-ce==2.5.7" >&2; exit 1; } [ -x "$wav2ogg" ] || { echo "Compile antes as ferramentas de musica: $here/pygame-music/README" >&2; exit 1; } source "$here/sge/sge-libs.sh" mkdir -p "$cache" tarball="$cache/retux-8b7e9e2.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/retux-game/retux/archive/$COMMIT.tar.gz" -o "$tarball" echo "$SHA256 $tarball" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" tar -xzf "$tarball" -C "$out/tree" --strip-components 1 cd "$out/tree" patch -p1 < "$here/retux/web.patch" rm -rf setup.py requirements.txt globalize.py localize.py get_errors.py misc data/locale data/fonts \ data/images/objects/tux/sources data/sounds/sources data/sounds/splat.wav data/sounds/wood.wav data/sounds/type.sfxr python3 -I "$here/retux/explosion.py" data/sounds/explosion.wav "$py" -I "$here/retux/recode-music.py" data/music "$wav2ogg" 0.15 "$out/music-tmp" rm -rf "$out/music-tmp" sge_libs "$cache" "$out/tree" sge xsge_gui xsge_lighting xsge_path xsge_physics xsge_tiled mv retux.py main.py find . -name __pycache__ -prune -exec rm -rf {} \; python3 -I "$here/pgapp.py" "$out/tree" "$out/retux.pgapp" shasum -a 256 "$out/retux.pgapp" ls -la "$out/retux.pgapp"