Files
Martin Pham 20dd7fe082 Home screen forwarders start a game with --rom and --core
From mihawk-99/PS5_RetroArch#34 (Martin Pham). A forwarder, a small app
with a home screen tile of its own, starts the title with --rom <file>
[--core <core>] [--exit-after-game] (each also as --x=<value>). On a
launch that names no mode, src/frontend_mode_ps5.cpp takes it as game
mode takes a frontend's request: the content (absolute, or inside
/app0/content/ and never above it) and the core are checked by
ps5_game_check, RetroArch starts with -L, and afterwards the title
opens as from the home screen, or closes with --exit-after-game.
Without --core the playlists choose, else the one core whose info file
lists the extension (Genesis Plus GX for the Mega Drive extensions both
Sega cores list) or, for a folder, the one core that opens folders. A
refusal goes to trace.txt and the launch goes on as from the home
screen; a handover's --ps5-mode wins over --rom.

Changed from the pull request: its README examples and test fixtures no
longer name games and use the ES-DE folder names content/ has now; one
header comment is moved to its declaration. Its line-ending rewrites of
the PowerShell scripts are dropped (they are gone, 8f14452), and its
GitHub workflow is parked in parked/github-build-workflow, with what
would finish it at the top of build.yml: it cannot run here, and it
does not fetch PS5_MihawkGen, which the frontend compiles now.

To prove it on a console, whose control payload launches without
arguments: the relaunch test takes its restarts' arguments from the
lines after the arm line, and tools/run-title.sh --relaunch-arg writes
them.

Evidence: tests/frontend_mode_ps5_test.cpp (parsing, paths, cores by
playlist, extension and folder, refusals, after the game);
tests/relaunch_ps5_test.cpp (arguments carried; a control character or
a ninth argument arms nothing). Gates: format, unit (204), build
(staged cores reused), integration, evidence PASS. Console: with this
series' deploy.
2026-10-17 21:42:17 -04:00

37 lines
1.8 KiB
Bash

#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-3.0-or-later
# libmicrohttpd's release tarball for tools/build-webui-http.sh, put where it looks
# (.deps/webui), so the build does not depend on ftp.gnu.org answering a CI runner. GNU's
# server first, then Ubuntu's archive, whose orig tarball is the same file; either is checked
# against the script's own pin (version, hash) and kept in CI_DOWNLOADS.
#
# .github/scripts/seed-microhttpd.sh
set -euo pipefail
root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)
script=$root/tools/build-webui-http.sh
version=$(sed -n 's/^version=\([0-9.]*\)$/\1/p' "$script")
hash=$(sed -n 's/^hash=\([0-9a-f]\{64\}\)$/\1/p' "$script")
[[ -n $version && -n $hash ]] || { echo "seed-microhttpd: no version or hash in $script" >&2; exit 2; }
target=$root/.deps/webui/libmicrohttpd-$version.tar.gz
check() { printf '%s %s\n' "$hash" "$1" | sha256sum --check --strict --status 2>/dev/null; }
if check "$target"; then
echo "==> [microhttpd] $target is libmicrohttpd $version"
exit 0
fi
cache=${CI_DOWNLOADS:-$HOME/.cache/ps5-retroarch-ci}/libmicrohttpd-$version.tar.gz
mkdir -p "$(dirname -- "$cache")" "$(dirname -- "$target")"
if ! check "$cache"; then
for url in "https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-$version.tar.gz" \
"http://archive.ubuntu.com/ubuntu/pool/universe/libm/libmicrohttpd/libmicrohttpd_$version.orig.tar.gz"; do
if curl --fail --location --retry 3 --connect-timeout 30 --silent --show-error \
-o "$cache.download" "$url" && check "$cache.download"; then
mv -- "$cache.download" "$cache"
echo "==> [microhttpd] from $url"
break
fi
rm -f -- "$cache.download"
done
fi
printf '%s %s\n' "$hash" "$cache" | sha256sum --check --strict
cp -- "$cache" "$target"