You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
#!/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
|
|
|