#!/usr/bin/env bash # Compila i-20000 para Arduboy (i4arduboy, da Planet Marimo, MIT) do commit 60e156f de # github.com/d371ed/i4arduboy, com versoes fixas: o nucleo Arduino AVR 1.8.6 (LGPL-2.1; avr-gcc 7.3.0) e a biblioteca # Arduboy 1.1.1 (BSD-3; a parte de som, ArduboyTunes, e GPL-3), pelo arduino-cli 1.5.1. O codigo do jogo # entra sem alteracoes. O autor nao publicou .hex no repositorio; servimos este build, cujo fonte completo # hospedamos junto: o jogo no commit, a biblioteca, o nucleo AVR e este script. Dois builds seguidos dao o # mesmo sha256. # # src/FredGames.Bundler/Builds/build-i4arduboy.sh # # Saida: artifacts/build/i4arduboy-60e156f/i4arduboy.hex set -euo pipefail CLI=1.5.1 CLI_SHA256=cb952e8c1621c95ef5f1d17831c945e3d0ec5973f89c557a7ec8feb9c4f7d4c9 CORE=1.8.6 GAME_URL=https://github.com/d371ed/i4arduboy/archive/60e156f4a01d1db1a71d990f2577496eebd43bdb.tar.gz GAME_SHA256=652ce5a74fd9d558d6e178138d4d661e42866b16c4be2a2ae8a9c1e75f5feda8 SKETCH_DIR="." SKETCH=i4arduboy LIB0=("Arduboy" "https://github.com/Arduboy/Arduboy/archive/refs/tags/1.1.1.tar.gz" "44337659a8033482caf69df2e484c5b232ab5173c75cf82c379e7cf5ba12cc7e" "Arduboy-1.1.1.tar.gz") here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/i4arduboy-60e156f" cache="$root/artifacts/build/cache" tools="$root/artifacts/tools/arduino-$CLI" fetch() { # url sha256 arquivo [ -f "$cache/$3" ] || curl -fsSL "$1" -o "$cache/$3" echo "$2 $cache/$3" | shasum -a 256 -c - >/dev/null } mkdir -p "$cache" "$tools" fetch "https://github.com/arduino/arduino-cli/releases/download/v$CLI/arduino-cli_${CLI}_macOS_ARM64.tar.gz" "$CLI_SHA256" "arduino-cli_${CLI}_macOS_ARM64.tar.gz" fetch "$GAME_URL" "$GAME_SHA256" "i4arduboy-60e156f.tar.gz" tar -xzf "$cache/arduino-cli_${CLI}_macOS_ARM64.tar.gz" -C "$tools" arduino-cli export ARDUINO_DIRECTORIES_DATA="$tools/data" ARDUINO_DIRECTORIES_DOWNLOADS="$tools/staging" ARDUINO_DIRECTORIES_USER="$tools/user" "$tools/arduino-cli" core update-index >/dev/null "$tools/arduino-cli" core install "arduino:avr@$CORE" >/dev/null rm -rf "$out" mkdir -p "$out/repo" "$out/src/$SKETCH" "$out/lib" "$out/hex" tar -xzf "$cache/i4arduboy-60e156f.tar.gz" -C "$out/repo" --strip-components 1 cp -R "$out/repo/$SKETCH_DIR/." "$out/src/$SKETCH/" libs=() for v in LIB0; do eval "lib=(\"\${$v[@]}\")" fetch "${lib[1]}" "${lib[2]}" "${lib[3]}" mkdir -p "$out/lib/${lib[0]}" tar -xzf "$cache/${lib[3]}" -C "$out/lib/${lib[0]}" --strip-components 1 libs+=(--library "$out/lib/${lib[0]}") done "$tools/arduino-cli" compile -b arduino:avr:leonardo "${libs[@]}" \ --output-dir "$out/hex" "$out/src/$SKETCH" >/dev/null cp "$out/hex/$SKETCH.ino.hex" "$out/i4arduboy.hex" shasum -a 256 "$out/i4arduboy.hex"