#!/usr/bin/env bash # Compila The Romans Are Coming! (WASM-4, de Sander in 't Veld, MIT) a partir do fonte, no commit bae5479 # (v1.1.0), com uma unica mudanca: the-romans-are-coming/no-wreath.patch tira a coroa de louros do menu # (arte de "scribbles pixels", citada no README sem termos de uso), junto do wreath.rs que a embute. O # resto e o "cargo build --release" do repositorio com as flags do .cargo/config.toml dele, sem wasm-opt (a saida ja cabe nos 64 KiB). # O repositorio nao versiona o Cargo.lock; o de Content/games/the-romans-are-coming/Cargo.lock foi gerado # uma vez com o toolchain abaixo e o build usa --locked. # # src/FredGames.Bundler/Builds/build-the-romans-are-coming.sh # # Saida: artifacts/build/the-romans-are-coming/the-romans-are-coming.wasm set -euo pipefail COMMIT=bae54791c0704eee42b5a25305ce52413d0eb5cd SHA256=6c1fd2fe15d6789f01447f12a5b551c42cfc61de929b1c709155efcfa32f17f6 TOOLCHAIN=1.92.0 TARGET=wasm32-unknown-unknown SLUG=the-romans-are-coming here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/$SLUG" cache="$root/artifacts/build/cache" tools="$root/artifacts/tools" lock="$root/src/FredGames.Web/Content/games/$SLUG/Cargo.lock" export RUSTUP_HOME="$tools/rustup" export CARGO_HOME="$tools/cargo" export PATH="$CARGO_HOME/bin:$PATH" if [ ! -x "$CARGO_HOME/bin/rustup" ]; then curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain none fi rustup toolchain install "$TOOLCHAIN" --profile minimal --target "$TARGET" >/dev/null mkdir -p "$cache" fetch() { [ -f "$cache/$2" ] || curl -fsSL --retry 4 "$1" -o "$cache/$2"; echo "$3 $cache/$2" | shasum -a 256 -c -; } fetch "https://github.com/SLiV9/the-romans-are-coming/archive/$COMMIT.tar.gz" "$SLUG-${COMMIT:0:7}.tar.gz" "$SHA256" rm -rf "$out" mkdir -p "$out/tree" tar -xzf "$cache/$SLUG-${COMMIT:0:7}.tar.gz" -C "$out/tree" --strip-components 1 (cd "$out/tree" && patch -p1 -s < "$here/$SLUG/no-wreath.patch" && rm -f src/wreath.rs) locked=() if [ -f "$lock" ]; then cp "$lock" "$out/tree/Cargo.lock" locked=(--locked) fi export CARGO_TARGET_DIR="$out/target" export RUSTUP_TOOLCHAIN="$TOOLCHAIN" export RUSTFLAGS="-Clink-arg=--import-memory -Clink-arg=--initial-memory=65536 -Clink-arg=--max-memory=65536 \ -Clink-arg=-zstack-size=14752 --remap-path-prefix=$out/tree=$SLUG --remap-path-prefix=$CARGO_HOME=cargo \ --remap-path-prefix=$RUSTUP_HOME=rustup" (cd "$out/tree" && cargo build --release --target "$TARGET" ${locked[@]+"${locked[@]}"}) cp "$CARGO_TARGET_DIR/$TARGET/release/cart.wasm" "$out/$SLUG.wasm" [ -f "$lock" ] || echo "Cargo.lock novo: confira e copie $out/tree/Cargo.lock para $lock" ls -l "$out/$SLUG.wasm" shasum -a 256 "$out/$SLUG.wasm"