Skip to content

disk index/runtime log: create record directories at save time #1

disk index/runtime log: create record directories at save time

disk index/runtime log: create record directories at save time #1

name: CI Linux menu harness
# The menu playlist navigation harness links the SHIPPING RetroArch
# objects with only main() replaced, so unlike every other sample it
# needs a full build of the program before it can be built at all.
#
# That is why it lives in its own workflow rather than in
# Linux-samples-tasks: a full build does not fit inside that job's
# ten-minute budget, and putting it there cancelled the whole job -
# every other sample with it - rather than just failing its own step.
# Here it can take the time it needs without being able to take
# anything else down with it.
#
# It also needs a NON-Qt build: with Qt enabled main() lives in
# ui_qt.o and drags the entire Qt UI in with it.
on:
push:
paths:
- 'menu/**'
- 'playlist.c'
- 'playlist.h'
- 'tasks/task_content*'
- 'samples/menu/playlist_nav/**'
- '.github/workflows/Linux-menu-harness.yml'
pull_request:
paths:
- 'menu/**'
- 'playlist.c'
- 'playlist.h'
- 'tasks/task_content*'
- 'samples/menu/playlist_nav/**'
- '.github/workflows/Linux-menu-harness.yml'
workflow_dispatch:
jobs:
menu-harness:
name: Build and run the menu navigation harness
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- name: Install dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y build-essential zlib1g-dev
- name: Checkout
uses: actions/checkout@v3
- name: Build RetroArch headless
shell: bash
run: |
set -eu
# The harness drives the menu with the null drivers, so
# everything that draws or talks to the network is dead
# weight here - and building it is the entire cost of this
# workflow. Disabling it takes the build from roughly ten
# minutes to about three, and avoids depending on graphics
# packages the runner may or may not carry: configure found
# X11 and xcb but not libX11-xcb, and the link failed on
# -lX11-xcb.
#
# Qt in particular has to go: with it enabled main() lives
# in ui_qt.o, and the harness replaces main().
./configure --disable-qt --disable-x11 \
--disable-opengl --disable-opengl_core \
--disable-opengl1 --disable-vulkan \
--disable-cheevos --disable-networking \
--disable-ffmpeg
make -j$(nproc)
- name: Build and run menu_playlist_nav_test
shell: bash
run: |
set -eu
# Three field reports came out of the seam between the
# playlist reader and the menu - a stale playlist's entries
# under a new heading, then a blank list the back button
# could not leave, then a list that filled only after the
# user pressed something - and no oracle that stopped at the
# reader could see any of them.
#
# The harness installs a VFS through the seam the frontend
# uses for SAF, returning short reads WITH a per-read delay.
# Short reads alone reproduce SAF's syscall count but not
# its latency, and on local storage the whole playlist still
# fits inside one budget slice - which is exactly why none
# of the three reports reproduced on a desktop.
samples/menu/playlist_nav/build.sh
./samples/menu/playlist_nav/menu_playlist_nav_test
make -C samples/menu/playlist_nav clean