#!/usr/bin/env bash # Gera o monsterz.pgapp do Monsterz 0.7.1 (Sam Hocevar, codigo e graficos WTFPL; musica de MenTaLguY em dominio # publico; efeitos sonoros do Barrage, OpenOffice.org, Wesnoth e Kismet, GPL/LGPL) a partir do tarball do Debian # (monsterz_0.7.1.orig.tar.gz) com os quatro patches do pacote Debian 0.7.1-16 (GPL-2+: correcao de alinhamento, de # blit, tela de abertura e porta para Python 3) e o nosso monsterz/web.patch (laco assincrono em 12 quadros por # segundo, saves em /saves, sem o menu de tela cheia, "quit" volta ao menu, sombras sem numpy). A musica .s3m vira # .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). Zip deterministico (Builds/pgapp.py). # # src/FredGames.Bundler/Builds/build-monsterz.sh # # Saida: artifacts/build/monsterz-0.7.1/monsterz.pgapp set -euo pipefail ORIG_SHA256=50828b8fa26d107bcc2bd134328f83c905b9f5e124846bdf239daf0eed34973d DEBIAN_SHA256=2e8e4b752fd3198c2dbfb252ca8c1508b09bc911305ef493188b7a82dea909f6 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/monsterz-0.7.1" 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/monsterz_0.7.1.orig.tar.gz" deb="$cache/monsterz_0.7.1-16.debian.tar.xz" [ -f "$orig" ] || curl -fsSL "http://deb.debian.org/debian/pool/main/m/monsterz/monsterz_0.7.1.orig.tar.gz" -o "$orig" [ -f "$deb" ] || curl -fsSL "http://deb.debian.org/debian/pool/main/m/monsterz/monsterz_0.7.1-16.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 010_64-bit-alignment-issues-with-python2.5.diff 020_fix_blit_crash.diff 030_startup_screen.patch python3.patch; do patch -p1 < "$out/debian/debian/patches/$p" done patch -p1 < "$here/monsterz/web.patch" "$tools/modrender" sound/music.s3m "$out/music.wav" "$tools/wav2ogg" "$out/music.wav" sound/music.ogg 0.2 rm -f sound/music.s3m graphics/graphics.svg Makefile monsterz.c INSTALL TODO find . -name __pycache__ -prune -exec rm -rf {} \; mv monsterz.py main.py python3 -I "$here/pgapp.py" "$out/tree" "$out/monsterz.pgapp" shasum -a 256 "$out/monsterz.pgapp"