#!/usr/bin/env bash # Compila Glove (homebrew de Arduboy de fuopy, MIT) do commit 81e9988 de # github.com/fuopy/glove, 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-glove.sh # # Saida: artifacts/build/glove-81e9988/Glove.hex set -euo pipefail CLI=1.5.1 CLI_SHA256=cb952e8c1621c95ef5f1d17831c945e3d0ec5973f89c557a7ec8feb9c4f7d4c9 CORE=1.8.6 GAME_URL=https://github.com/fuopy/glove/archive/81e9988fea3fc68edc984260b17d6f52beb5d497.tar.gz GAME_SHA256=dddde10fd527c6bb790e4b8369a2e65e78bb21ece42d43dc9ef227d42dd67e2d SKETCH_DIR="." SKETCH=glove 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/glove-81e9988" 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" "glove-81e9988.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/glove-81e9988.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/Glove.hex" shasum -a 256 "$out/Glove.hex"