#!/bin/bash # Clean up child processes on exit: https://stackoverflow.com/a/2173421/14436105 trap "pkill -P $$" EXIT INT TERM mkdir -p ~/.config/citra-emu cp /app/sdl2-config.ini ~/.config/citra-emu # For some reason, log file is only written when this dir already exists, # but it is only created after the first run of citra (our only run, in the container) mkdir -p ~/.local/share/citra-emu/ ERRS=0 # shellcheck disable=SC2068 for EXE in $@; do VIDEO_OUT="$(dirname "$EXE")/$(basename "$EXE" .elf)_capture.webm" # colored logs would be nice, but we can always just grab the plaintext log file xvfb-run citra \ --appimage-extract-and-run \ --dump-video="$VIDEO_OUT" \ "$EXE" \ &>/dev/null & PID=$! # Citra takes a little while to start up, so wait a little before we try to connect sleep 3 arm-none-eabi-gdb --silent --batch-silent --command /app/test-runner.gdb "$EXE" STATUS=$? if [ $STATUS -ne 0 ]; then echo >&2 "FAILED (exit status $STATUS): $EXE" ERRS=$(( ERRS + 1 )) fi kill -INT $PID &>/dev/null sleep 1 if kill -0 $PID &>/dev/null; then kill -KILL $PID &>/dev/null fi CITRA_LOG=~/.local/share/citra-emu/log/citra_log.txt CITRA_LOG_OUT="$(dirname "$EXE")/$(basename "$EXE" .elf)_citra_log.txt" if test -f "$CITRA_LOG"; then cp "$CITRA_LOG" "$CITRA_LOG_OUT" else echo "WARNING: citra log not found" fi done exit $ERRS