#!/usr/bin/env bash # Gera o hexoshi.pgapp do Hexoshi (The Diligent Circle / onpon4, 2019-2023; codigo GPL-3.0 ou posterior; arte, sons e musica # CC0, CC BY 3.0, CC BY-SA 3.0/4.0, GPL e a fonte DejaVu, cada arquivo em data/LICENSES) a partir do commit e821e0f do # repositorio (github.com/hexoshi/hexoshi, 0.3a0: o ultimo, que e a demo jogavel), com a Pygame SGE 2.0.2 e as extensoes # xSGE (LGPL-3.0+) e os nossos patches assincronos (Builds/sge/), mais o hexoshi/web.patch: laco assincrono, sem Quit nem tela # cheia, teclas e controles escolhidos por dialogos sem laco proprio, saves em /saves. O mapa (data/map/*.json) e gerado # aqui, como o README manda ("hexoshi.py -m -q", Python com pygame-ce 2.5.7 em artifacts/tools/venv-pygame): o jogo o # gera na primeira execucao, o que levaria minutos no navegador. Fora do pacote: traducoes (.po), fontes da musica e dos # sons, o SVG do logo e os arquivos de empacotamento. Zip deterministico (Builds/pgapp.py). # # src/FredGames.Bundler/Builds/build-hexoshi.sh # # Saida: artifacts/build/hexoshi-e821e0f/hexoshi.pgapp set -euo pipefail COMMIT=e821e0fb05a9e032798cda093051aa9fd6b2dfd4 SHA256=caa6158a92f9b8498600c126e22ab049a3945266bf4d2bc2f6ea97eb6b96a19b here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/hexoshi-e821e0f" cache="$root/artifacts/build/cache" py="$root/artifacts/tools/venv-pygame/bin/python" [ -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; } source "$here/sge/sge-libs.sh" mkdir -p "$cache" tarball="$cache/hexoshi-e821e0f.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/hexoshi/hexoshi/archive/$COMMIT.tar.gz" -o "$tarball" echo "$SHA256 $tarball" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" "$out/home" tar -xzf "$tarball" -C "$out/tree" --strip-components 1 cd "$out/tree" patch -p1 < "$here/hexoshi/web.patch" rm -rf CONTRIBUTING requirements.txt get_ai_data.py get_errors.py data/locale data/music/sources data/sounds/sources \ data/map/null data/images/misc/logo-is.svg sge_libs "$cache" "$out/tree" sge xsge_gui xsge_lighting xsge_particle xsge_path xsge_physics xsge_tiled # o mapa: rooms.json, objects.json e info.json em data/map (mesma saida a cada execucao) HOME="$out/home" PYTHONHASHSEED=0 PYTHONDONTWRITEBYTECODE=1 SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=dummy \ HEXOSHI_ARGS="-p -m -q" "$py" -c "import runpy,sys; sys.path.insert(0,'.'); runpy.run_path('hexoshi.py', run_name='__main__')" > "$out/mapgen.log" 2>&1 \ || { cat "$out/mapgen.log" >&2; exit 1; } for f in rooms objects info; do [ -s "data/map/$f.json" ] || { echo "faltou data/map/$f.json" >&2; exit 1; }; done mv hexoshi.py main.py find . -name __pycache__ -prune -exec rm -rf {} \; python3 -I "$here/pgapp.py" "$out/tree" "$out/hexoshi.pgapp" shasum -a 256 "$out/hexoshi.pgapp"