disk index/runtime log: create record directories at save time #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |