#!/usr/bin/env bash # Compila o Minesweeper do jumbledFox (AGPL-3.0-or-later; macroquad 0.4.5) em WebAssembly, a partir do commit 4682bc7 # de github.com/jumbledFox/minesweeper: "cargo build --release --target wasm32-unknown-unknown" com o Cargo.lock do # autor ("--locked"; o patch so tira dele os crates do webbrowser), Rust 1.92.0 de artifacts/tools. O autor usa # wasm-bindgen so por causa do crate webbrowser; sem ele o jogo roda com o mq_js_bundle.js do proprio macroquad. # # Mudancas (jumbledfox-minesweeper/web.patch e redraw-e.py, publicados junto do fonte, como a AGPL pede): # - sem o crate webbrowser: os links da janela About viram texto (o jogo nao abre outras paginas); # - o item Exit do menu Game sai no navegador (a pagina nao tem janela para fechar); # - a letra "e" minuscula de resources/chars.png, que vinha da fonte 04b03 (outro autor, sem licenca livre), e # redesenhada por redraw-e.py (Pillow de artifacts/tools/venv). # A pagina (macroquad-web/index.html.in) e nossa. O dist/ do repositorio (build do autor) nao e usado. # # src/FredGames.Bundler/Builds/build-jumbledfox-minesweeper.sh # # Saida: artifacts/build/jumbledfox-minesweeper-4682bc7/{jumbledfox-minesweeper-4682bc7-dist.tar.gz, # jumbledfox-minesweeper-4682bc7-src.tar.gz (o fonte ja modificado), licenses.txt}; os .tar.gz saem iguais em dois builds. SLUG=jumbledfox-minesweeper REPO=jumbledFox/minesweeper COMMIT=4682bc71d8f75fbe4255c3b110a998b4eb7d7f5b SHA256=fb38055c46bcb21376339e53b28133485db7d69bf1b09d8b72d14b4644d5fc96 TOOLCHAIN=1.92.0 source "$(dirname "${BASH_SOURCE[0]}")/macroquad-web/common.sh" mq_init rm -rf "$tree/dist" mq_patch "$here/jumbledfox-minesweeper/web.patch" "$tools/venv/bin/python" -I "$here/jumbledfox-minesweeper/redraw-e.py" "$tree/resources/chars.png" # Fonte correspondente (AGPL): a arvore ja modificada, antes de compilar. mkdir -p "$out/srcpkg"; cp -R "$tree" "$out/srcpkg/minesweeper-$short" ( cd "$out/srcpkg" && find "minesweeper-$short" -type f | LC_ALL=C sort > ../srcfiles.txt ) python3 -I "$here/sprig-web/pack-source.py" "$out/$SLUG-$short-src.tar.gz" "$out/srcpkg" $(cat "$out/srcfiles.txt") rm -rf "$out/srcpkg" "$out/srcfiles.txt" mq_cargo minesweeper mq_js 0.4.5 3f01ed16696c43de86e1c9700017f47a958df9b62df7bcf1a125b8b2ad320269 cp "$tree/target/wasm32-unknown-unknown/release/minesweeper.wasm" "$out/dist/" sed -e "s/@TITLE@/Minesweeper (jumbledFox)/g; s/@SLUG@/$SLUG/g; s/@WASM@/minesweeper.wasm/g; s/@BG@/#000/g" \ "$here/macroquad-web/index.html.in" > "$out/dist/index.html" { echo "== Minesweeper de jumbledFox (LICENSE do repositorio, GNU AGPL 3.0 ou posterior)" cat "$tree/LICENSE" echo echo "== Creditos do README do autor" sed -n '/^## *Credits/,$p' "$tree/README.md" echo echo "(A letra \"e\" da fonte 04b03 foi redesenhada pelo FredyGames; o som de explosao e de AyaDrevis, Freesound 649191, CC0.)" echo echo "========================================================================" cat "$out/crates.txt" } > "$out/licenses.txt" mq_pack shasum -a 256 "$out/$SLUG-$short-src.tar.gz"