#!/usr/bin/env bash # Gera o pathological.pgapp do Pathological 1.1.3 (John-Paul Gignac, GPL-2.0-ou-posterior; trilha de Matthias Le Bidan, # logo de Carrie Bloomfield, efeitos tambem do CannonSmash e do Gnibbles, GPL) a partir do tarball do Debian # (pathological_1.1.3.orig.tar.gz) com seis patches do pacote Debian 1.1.3-18 (GPL-2+: pontuacao, sem placa de som, # pygame 1.8.1, musica em ogg, porta para Python 3) e o nosso pathological/web.patch (lacos assincronos, saves em /saves, # tela cheia a cargo da pagina, "Quit Game" volta ao menu). As duas musicas .xm viram .ogg aqui (Builds/pygame-music: # modrender, da libxmp 4.6.2, e wav2ogg, da libvorbis 1.3.7, em artifacts/tools/; mesmos bytes a cada execucao). # O fonte vai de ISO-8859-1 para UTF-8 (o pygbag nao le a linha de coding). Zip deterministico (Builds/pgapp.py). # # src/FredGames.Bundler/Builds/build-pathological.sh # # Saida: artifacts/build/pathological-1.1.3/pathological.pgapp set -euo pipefail ORIG_SHA256=b29b3d11a924269658bc89298172ae2509501dcd5a55d176c3cf397639400f93 DEBIAN_SHA256=ba1194323561d272cfd7fe5ab72caacea19605487821b8f7021a24fd9112abbb here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/pathological-1.1.3" cache="$root/artifacts/build/cache" tools="$root/artifacts/tools/pygame-music" [ -x "$tools/modrender" ] && [ -x "$tools/wav2ogg" ] || { echo "Compile antes as ferramentas de musica: $here/pygame-music/README" >&2; exit 1; } mkdir -p "$cache" orig="$cache/pathological_1.1.3.orig.tar.gz" deb="$cache/pathological_1.1.3-18.debian.tar.xz" [ -f "$orig" ] || curl -fsSL "http://deb.debian.org/debian/pool/main/p/pathological/pathological_1.1.3.orig.tar.gz" -o "$orig" [ -f "$deb" ] || curl -fsSL "http://deb.debian.org/debian/pool/main/p/pathological/pathological_1.1.3-18.debian.tar.xz" -o "$deb" echo "$ORIG_SHA256 $orig" | shasum -a 256 -c - echo "$DEBIAN_SHA256 $deb" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" "$out/debian" tar -xzf "$orig" -C "$out/tree" --strip-components 1 tar -xJf "$deb" -C "$out/debian" cd "$out/tree" for p in 20_highscores.patch 30_no_soundcard.patch 40_pygame_181.patch define-music_pending_song.patch 60_use_ogg_music.patch python3.patch; do patch -p1 < "$out/debian/debian/patches/$p" done patch -p1 < "$here/pathological/web.patch" for n in background intro; do "$tools/modrender" "music/$n.xm" "$out/$n.wav" 400 "$tools/wav2ogg" "$out/$n.wav" "music/$n.ogg" 0.2 done rm -f music/*.xm pathological pathological.py.orig pathological.6.gz pathological.ico pathological.xpm Makefile makehtml write-highscores.c rm -rf html find . -name __pycache__ -prune -exec rm -rf {} \; # o pygbag le o fonte como UTF-8 (o original e ISO-8859-1) iconv -f ISO-8859-1 -t UTF-8 pathological.py | sed 's/coding: iso-8859-1/coding: utf-8/' > main.py rm pathological.py python3 -I "$here/pgapp.py" "$out/tree" "$out/pathological.pgapp" shasum -a 256 "$out/pathological.pgapp"