CI: skip the workflows a push's samples and workflow files do not touch

Every push ran every workflow. tools/ci_paths.py now writes each
workflow's push and pull_request paths filter: everything, less the
samples trees and the other workflow files, plus the sample
directories its jobs build or run (through the scripts they call and
the paths those directories name in turn) and the workflow itself. A
push to one sample runs the full-tree builds no longer, only the
workflows that run that sample; a push to one workflow runs it alone;
any other change runs everything as before. Jobs that call a tool or
CI script, walk the samples trees or read the workflow files keep
those whole, and workflows with a filter of their own keep it.

The CI local runner workflow runs tools/ci_paths.py --check, which
fails when a filter no longer matches what its workflow names, and
tools/ci_local.py which reads past a generated filter to the coverage.
This commit is contained in:
LibretroAdmin authored and libretroadmin committed 2026-11-04 16:30:17 +01:00
1 parent 9d368e7145
commit 58106ef61c
76 files changed
+1458

No files matched your search

+16
View File
@@ -3,7 +3,23 @@ name: CI 3DS
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/3DS.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/3DS.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+12
View File
@@ -3,7 +3,19 @@ name: CI Android
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Android.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Android.yml'
# ci_paths: end
workflow_dispatch:
repository_dispatch:
types: [run_build]
+16
View File
@@ -12,7 +12,23 @@ name: CI Apple
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Apple.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Apple.yml'
# ci_paths: end
permissions:
contents: read
+10
View File
@@ -71,6 +71,16 @@ jobs:
python3 tools/ci_apt_check.py --selftest
python3 tools/ci_apt_check.py
- name: Every workflow's paths filter names the samples it runs
shell: bash
run: |
set -eu
# A workflow skips a push that touches only samples it does not
# build or run; a step that starts naming another sample, or a
# sample's files that start reaching into another, leave the
# filter written by tools/ci_paths.py out of date.
python3 tools/ci_paths.py --check
- name: compile_commands.py self-test
shell: bash
run: |
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Compile-Matrix.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Compile-Matrix.yml'
# ci_paths: end
permissions:
contents: read
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Ctx-Presentable-Check.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Ctx-Presentable-Check.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+16
View File
@@ -3,7 +3,23 @@ name: CI DOS/DJGPP
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/DOS-DJGPP.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/DOS-DJGPP.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI Emscripten
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Emscripten.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Emscripten.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Extern-C-Prototype-Check.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Extern-C-Prototype-Check.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+16
View File
@@ -15,7 +15,23 @@ name: CI FreeBSD
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/FreeBSD.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/FreeBSD.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI GameCube
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/GameCube.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/GameCube.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -4,9 +4,25 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-Headless.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-Headless.yml'
# ci_paths: end
permissions:
contents: read
+16
View File
@@ -3,7 +3,23 @@ name: CI Linux (aarch64, OpenXR)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-aarch64.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-aarch64.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
workflow_dispatch:
+16
View File
@@ -40,9 +40,25 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-asan-ubsan.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-asan-ubsan.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -3,8 +3,20 @@ name: CI Linux native audio transport
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-audio-transport.yml'
# ci_paths: end
pull_request:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-audio-transport.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-autoconf-tests.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-autoconf-tests.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-driver-vtables.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-driver-vtables.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -19,9 +19,123 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'libretro-common/samples/encodings/rbzip2/**'
- 'samples/runloop/auto_state_load/**'
- 'samples/runloop/autosave_snapshot/**'
- 'samples/runloop/cloudsync_unload/**'
- 'samples/runloop/content_closing/**'
- 'samples/runloop/core_status_defer/**'
- 'samples/runloop/frontend_overhead/**'
- 'samples/runloop/hw_context_request/**'
- 'samples/runloop/log_ring/**'
- 'samples/runloop/pacing/**'
- 'samples/tasks/autodetect_handoff/**'
- 'samples/tasks/bluetooth_scan/**'
- 'samples/tasks/bps_patch/**'
- 'samples/tasks/bsv_checkpoint/**'
- 'samples/tasks/bsv_replay/**'
- 'samples/tasks/bsv_replay_init/**'
- 'samples/tasks/bsv_statestream/**'
- 'samples/tasks/cloudsync/**'
- 'samples/tasks/content_load/**'
- 'samples/tasks/content_prefetch/**'
- 'samples/tasks/core_backup/**'
- 'samples/tasks/core_updater/**'
- 'samples/tasks/database/**'
- 'samples/tasks/decompress/**'
- 'samples/tasks/exit_drain/**'
- 'samples/tasks/file_transfer/**'
- 'samples/tasks/http/**'
- 'samples/tasks/http_emscripten/**'
- 'samples/tasks/image_decode_slice/**'
- 'samples/tasks/input_remap/**'
- 'samples/tasks/natt_desc/**'
- 'samples/tasks/netplay_nat/**'
- 'samples/tasks/ordering/**'
- 'samples/tasks/overlay/**'
- 'samples/tasks/patch_stream/**'
- 'samples/tasks/pl_thumbnail/**'
- 'samples/tasks/playlist_manager/**'
- 'samples/tasks/progress_push/**'
- 'samples/tasks/save_state/**'
- 'samples/tasks/steam_dlc/**'
- 'samples/tasks/subtitle_load/**'
- 'samples/tasks/translation_reply/**'
- 'samples/tasks/turbo_bind/**'
- 'samples/tasks/video_shader_parse/**'
- 'samples/tasks/wait_timeout/**'
- 'samples/tasks/watchdog/**'
- 'samples/tasks/wifi_tasks/**'
- 'samples/runloop/**'
- 'samples/tasks/**'
- '.github/workflows/Linux-frontend-overhead.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'libretro-common/samples/encodings/rbzip2/**'
- 'samples/runloop/auto_state_load/**'
- 'samples/runloop/autosave_snapshot/**'
- 'samples/runloop/cloudsync_unload/**'
- 'samples/runloop/content_closing/**'
- 'samples/runloop/core_status_defer/**'
- 'samples/runloop/frontend_overhead/**'
- 'samples/runloop/hw_context_request/**'
- 'samples/runloop/log_ring/**'
- 'samples/runloop/pacing/**'
- 'samples/tasks/autodetect_handoff/**'
- 'samples/tasks/bluetooth_scan/**'
- 'samples/tasks/bps_patch/**'
- 'samples/tasks/bsv_checkpoint/**'
- 'samples/tasks/bsv_replay/**'
- 'samples/tasks/bsv_replay_init/**'
- 'samples/tasks/bsv_statestream/**'
- 'samples/tasks/cloudsync/**'
- 'samples/tasks/content_load/**'
- 'samples/tasks/content_prefetch/**'
- 'samples/tasks/core_backup/**'
- 'samples/tasks/core_updater/**'
- 'samples/tasks/database/**'
- 'samples/tasks/decompress/**'
- 'samples/tasks/exit_drain/**'
- 'samples/tasks/file_transfer/**'
- 'samples/tasks/http/**'
- 'samples/tasks/http_emscripten/**'
- 'samples/tasks/image_decode_slice/**'
- 'samples/tasks/input_remap/**'
- 'samples/tasks/natt_desc/**'
- 'samples/tasks/netplay_nat/**'
- 'samples/tasks/ordering/**'
- 'samples/tasks/overlay/**'
- 'samples/tasks/patch_stream/**'
- 'samples/tasks/pl_thumbnail/**'
- 'samples/tasks/playlist_manager/**'
- 'samples/tasks/progress_push/**'
- 'samples/tasks/save_state/**'
- 'samples/tasks/steam_dlc/**'
- 'samples/tasks/subtitle_load/**'
- 'samples/tasks/translation_reply/**'
- 'samples/tasks/turbo_bind/**'
- 'samples/tasks/video_shader_parse/**'
- 'samples/tasks/wait_timeout/**'
- 'samples/tasks/watchdog/**'
- 'samples/tasks/wifi_tasks/**'
- 'samples/runloop/**'
- 'samples/tasks/**'
- '.github/workflows/Linux-frontend-overhead.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+16
View File
@@ -4,9 +4,25 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-griffin.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-griffin.yml'
# ci_paths: end
permissions:
contents: read
@@ -13,9 +13,31 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/network/cheevos_login/**'
- 'samples/network/smb_retro/**'
- 'samples/network/tls_retro/**'
- '.github/workflows/Linux-library-net-backends.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/network/cheevos_login/**'
- 'samples/network/smb_retro/**'
- 'samples/network/tls_retro/**'
- '.github/workflows/Linux-library-net-backends.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-libretro-common-samples.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-libretro-common-samples.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -10,9 +10,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-libretro-common-tests.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-libretro-common-tests.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-libretro-db-samples.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-libretro-db-samples.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-mcp-stdio.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-mcp-stdio.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -2,8 +2,20 @@ name: CI fullscreen media menu
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-menu-media.yml'
# ci_paths: end
pull_request:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-menu-media.yml'
# ci_paths: end
workflow_dispatch:
permissions:
contents: read
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-msvc6-standin.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-msvc6-standin.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+18
View File
@@ -4,9 +4,27 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/network/netplay_e2e/**'
- '.github/workflows/Linux-netplay-e2e.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/network/netplay_e2e/**'
- '.github/workflows/Linux-netplay-e2e.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -10,9 +10,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-network-clients.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-network-clients.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+18
View File
@@ -4,9 +4,27 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/frontend/dbus_runtime/**'
- '.github/workflows/Linux-no-pkg-config.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/frontend/dbus_runtime/**'
- '.github/workflows/Linux-no-pkg-config.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-openxr-input.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-openxr-input.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -19,9 +19,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-pace-shadow.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-pace-shadow.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-qnx-standin.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-qnx-standin.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-qt-companion.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-qt-companion.yml'
# ci_paths: end
permissions:
contents: read
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-audio.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-audio.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-formats.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-formats.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-gfx.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-gfx.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-input.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-input.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -4,9 +4,43 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/network/cheevos_login/**'
- 'samples/network/gdrive_backup/**'
- 'samples/network/net_http_semantics/**'
- 'samples/network/nfs_backup/**'
- 'samples/network/s3_backup/**'
- 'samples/network/smb_backup/**'
- 'samples/network/webdav_backup/**'
- 'samples/network/webdav_options/**'
- 'samples/network/webdav_reauth/**'
- '.github/workflows/Linux-samples-network.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/network/cheevos_login/**'
- 'samples/network/gdrive_backup/**'
- 'samples/network/net_http_semantics/**'
- 'samples/network/nfs_backup/**'
- 'samples/network/s3_backup/**'
- 'samples/network/smb_backup/**'
- 'samples/network/webdav_backup/**'
- 'samples/network/webdav_options/**'
- 'samples/network/webdav_reauth/**'
- '.github/workflows/Linux-samples-network.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-settings.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-samples-settings.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+86
View File
@@ -4,9 +4,95 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'libretro-common/samples/encodings/rbzip2/**'
- 'samples/menu/dirwalk/**'
- 'samples/playlist/playlist_parity_test.c/**'
- 'samples/tasks/autodetect_handoff/**'
- 'samples/tasks/bluetooth_scan/**'
- 'samples/tasks/bps_patch/**'
- 'samples/tasks/bsv_checkpoint/**'
- 'samples/tasks/bsv_replay/**'
- 'samples/tasks/bsv_replay_init/**'
- 'samples/tasks/bsv_statestream/**'
- 'samples/tasks/cloudsync/**'
- 'samples/tasks/content_prefetch/**'
- 'samples/tasks/core_backup/**'
- 'samples/tasks/core_updater/**'
- 'samples/tasks/database/**'
- 'samples/tasks/decompress/**'
- 'samples/tasks/file_transfer/**'
- 'samples/tasks/http/**'
- 'samples/tasks/http_emscripten/**'
- 'samples/tasks/image_decode_slice/**'
- 'samples/tasks/input_remap/**'
- 'samples/tasks/natt_desc/**'
- 'samples/tasks/netplay_nat/**'
- 'samples/tasks/ordering/**'
- 'samples/tasks/overlay/**'
- 'samples/tasks/patch_stream/**'
- 'samples/tasks/pl_thumbnail/**'
- 'samples/tasks/playlist_manager/**'
- 'samples/tasks/save_state/**'
- 'samples/tasks/turbo_bind/**'
- 'samples/tasks/video_shader_parse/**'
- 'samples/tasks/wait_timeout/**'
- 'samples/tasks/watchdog/**'
- 'samples/tasks/wifi_tasks/**'
- 'samples/playlist/**'
- '.github/workflows/Linux-samples-tasks.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'libretro-common/samples/encodings/rbzip2/**'
- 'samples/menu/dirwalk/**'
- 'samples/playlist/playlist_parity_test.c/**'
- 'samples/tasks/autodetect_handoff/**'
- 'samples/tasks/bluetooth_scan/**'
- 'samples/tasks/bps_patch/**'
- 'samples/tasks/bsv_checkpoint/**'
- 'samples/tasks/bsv_replay/**'
- 'samples/tasks/bsv_replay_init/**'
- 'samples/tasks/bsv_statestream/**'
- 'samples/tasks/cloudsync/**'
- 'samples/tasks/content_prefetch/**'
- 'samples/tasks/core_backup/**'
- 'samples/tasks/core_updater/**'
- 'samples/tasks/database/**'
- 'samples/tasks/decompress/**'
- 'samples/tasks/file_transfer/**'
- 'samples/tasks/http/**'
- 'samples/tasks/http_emscripten/**'
- 'samples/tasks/image_decode_slice/**'
- 'samples/tasks/input_remap/**'
- 'samples/tasks/natt_desc/**'
- 'samples/tasks/netplay_nat/**'
- 'samples/tasks/ordering/**'
- 'samples/tasks/overlay/**'
- 'samples/tasks/patch_stream/**'
- 'samples/tasks/pl_thumbnail/**'
- 'samples/tasks/playlist_manager/**'
- 'samples/tasks/save_state/**'
- 'samples/tasks/turbo_bind/**'
- 'samples/tasks/video_shader_parse/**'
- 'samples/tasks/wait_timeout/**'
- 'samples/tasks/watchdog/**'
- 'samples/tasks/wifi_tasks/**'
- 'samples/playlist/**'
- '.github/workflows/Linux-samples-tasks.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -18,9 +18,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-tsan-harness.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-tsan-harness.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -12,9 +12,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-tsan-samples.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-tsan-samples.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -27,9 +27,25 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-tsan-threaded-video.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-tsan-threaded-video.yml'
# ci_paths: end
workflow_dispatch:
permissions:
@@ -88,9 +88,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-vulkan-validation.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux-vulkan-validation.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -3,7 +3,19 @@ name: CI Linux (i686)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Linux.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI Windows (MSVC)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/MSVC.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/MSVC.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+12
View File
@@ -3,7 +3,19 @@ name: CI Windows (MSYS2)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/MSYS2.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/MSYS2.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -18,7 +18,23 @@ name: CI macOS PowerPC (cross)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/MacOS-PPC-Cross.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/MacOS-PPC-Cross.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+12
View File
@@ -3,7 +3,19 @@ name: CI macOS
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/MacOS.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/MacOS.yml'
# ci_paths: end
permissions:
contents: read
+16
View File
@@ -3,7 +3,23 @@ name: CI Miyoo ARM32
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Miyoo.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Miyoo.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
@@ -33,9 +33,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Msg-Hash-Packed-Check.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Msg-Hash-Packed-Check.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+12
View File
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Overlap-Copy-Check.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Overlap-Copy-Check.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+18
View File
@@ -10,7 +10,25 @@ name: CI PS2 runtime
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/frontend/ps2_whole_file/**'
- '.github/workflows/PS2-runtime.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- 'samples/frontend/ps2_whole_file/**'
- '.github/workflows/PS2-runtime.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI PS2
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PS2.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PS2.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI PS3/PSL1GHT
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PS3-PSL1GHT.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PS3-PSL1GHT.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI PS4/ORBIS
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PS4-ORBIS.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PS4-ORBIS.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI PSP
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PSP.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PSP.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI PSVita
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PSVita.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/PSVita.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+8
View File
@@ -10,6 +10,14 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Prune-caches.yml'
# ci_paths: end
schedule:
- cron: '23 * * * *'
workflow_dispatch:
+16
View File
@@ -3,7 +3,23 @@ name: CI RS90 Odbeta MIPS32
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/RS90.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/RS90.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
@@ -30,9 +30,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Removed-Member-Check.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Removed-Member-Check.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+16
View File
@@ -3,7 +3,23 @@ name: CI RetroFW MIPS32
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/RetroFW.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/RetroFW.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
@@ -4,9 +4,21 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Samples-Objdir-Check.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/Samples-Objdir-Check.yml'
# ci_paths: end
workflow_dispatch:
permissions:
+8
View File
@@ -8,6 +8,14 @@ on:
push:
tags:
- "v*.*"
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/SourceRelease.yml'
# ci_paths: end
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
+16
View File
@@ -3,7 +3,23 @@ name: CI Switch/libnx
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Switch-libnx.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Switch-libnx.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI Wii
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Wii.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Wii.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI WiiU
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/WiiU.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/WiiU.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI Windows ARM64 (MSVC)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Windows-ARM64.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Windows-ARM64.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
release:
+16
View File
@@ -3,7 +3,23 @@ name: CI Windows i686 (MXE)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Windows-i686-MXE.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Windows-i686-MXE.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI Windows x64 (MXE)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Windows-x64-MXE.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/Windows-x64-MXE.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+12
View File
@@ -16,7 +16,19 @@ name: CI iOS 6 (armv7)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/iOS-Legacy.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/iOS-Legacy.yml'
# ci_paths: end
repository_dispatch:
types: [run_build]
+16
View File
@@ -3,7 +3,23 @@ name: CI iOS (13)
on:
push:
branches: [master]
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/iOS.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/iOS.yml'
# ci_paths: end
permissions:
contents: read
+16
View File
@@ -6,9 +6,25 @@ on:
push:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/retroarch.yml'
# ci_paths: end
pull_request:
branches:
- master
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!samples/**'
- '!libretro-common/samples/**'
- '!.github/workflows/*.yml'
- '.github/workflows/retroarch.yml'
# ci_paths: end
permissions:
contents: read
+12
View File
@@ -6,7 +6,19 @@ on:
- '*'
branches:
- '*'
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/webOS.yml'
# ci_paths: end
pull_request:
# ci_paths: generated by tools/ci_paths.py, do not edit
paths:
- '**'
- '!.github/workflows/*.yml'
- '.github/workflows/webOS.yml'
# ci_paths: end
release:
types: [ published ]
repository_dispatch:
+4
View File
@@ -1533,6 +1533,10 @@ def job_texts(job):
def paths_filter_hit(wf, rel):
# A filter tools/ci_paths.py wrote takes in everything but other
# samples: the coverage below says more about what the jobs read
if '# ci_paths: generated by tools/ci_paths.py' in wf.text:
return None
trig = wf.triggers()
for ev in ('push', 'pull_request'):
spec = trig.get(ev) or {}
+234
View File
@@ -0,0 +1,234 @@
#!/usr/bin/env python3
"""Write each workflow's push and pull_request paths filters.
A push touching only samples runs only the workflows that build or run
those samples, and a push touching one workflow file runs only that
workflow. Every other change runs everything, as before: the filter is
'**' everything ...
'!samples/**' ... but the samples trees
'!libretro-common/samples/**'
'!.github/workflows/*.yml' ... and the other workflows,
'samples/gfx/foo/**' then the sample directories this
... workflow's jobs name, and those
'.github/workflows/<self>.yml' name in turn, and itself.
The sample directories are what tools/ci_local.py's coverage finds in
the jobs' run: steps and the scripts they call, closed over every path
the files in those directories name (a Makefile reaching into a
neighbouring sample, a fixture script another one runs). A workflow
whose jobs walk the samples trees or read the workflow files keeps
them whole. Workflows with a filter of their own are left as they are.
tools/ci_paths.py rewrite the generated filters
tools/ci_paths.py --check exit 1 if any is out of date
"""
import os
import re
import sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import ci_local as c # noqa: E402
BEGIN = ' # ci_paths: generated by tools/ci_paths.py, do not edit'
END = ' # ci_paths: end'
TREES = ('samples/', 'libretro-common/samples/')
# Scripts every job calls for its own setup; they read nothing else
INFRA = {'.github/workflows/scripts/apt-cache-key.sh',
'.github/workflows/scripts/apt-install.sh',
'.github/workflows/scripts/use-lld.sh',
'.github/workflows/scripts/wine-server.sh',
'.github/workflows/scripts/ccache-make.sh'}
# A walk over a samples tree as a whole: the word with no directory below it
_ALL_SAMPLES = re.compile(r'(?<![\w.-])(?:libretro-common/)?samples'
r'(?:/\*|/?["\'\s)]|/?$)', re.M)
# A script that lists directories may reach any sample
_WALK = re.compile(r'os\.walk|os\.listdir|\bglob\b|rglob|iterdir|\bfind\s|ls-files'
r'|readdir|\$\(ls\b|\*\*?/|/\*')
_WORKFLOWS = re.compile(r'\.github/workflows(?!/scripts/)(?!/[\w.-]+\.yml)'
r'|\bci_local\b|\bload_workflows\b')
def code(text):
"""A script's text less its comments and the lines that only print."""
return '\n'.join(l for l in text.split('\n')
if not re.match(r'\s*(?:#|//|\*|/\*|echo\b|printf\b|print\()', l))
def sample_dir(rel):
"""The sample directory a path lies in, or None outside the trees."""
for t in TREES:
if rel.startswith(t):
parts = rel[len(t):].split('/')
return t + '/'.join(parts[:2]) if len(parts) >= 2 else t + parts[0]
return None
def read(rel):
try:
with open(os.path.join(c.ROOT, rel), encoding='utf-8', errors='replace') as f:
return f.read()
except OSError:
return ''
def named_paths(text, base):
"""Repository paths a text names, read from base and from the root."""
out = set()
for tok in set(c._PATHISH.findall(text)):
t = tok.strip('"\'(),;:')
if not t:
continue
t = c._strip_vars(t) if '$' in t else t
for b in (base, c.ROOT):
p = os.path.normpath(os.path.join(b, t))
if p.startswith(c.ROOT + os.sep) and os.path.exists(p):
out.add(os.path.relpath(p, c.ROOT).replace(os.sep, '/'))
break
return out
def plan(wf):
"""The generated filter for a workflow, or None to leave it alone."""
trig = wf.triggers()
events = [e for e in ('push', 'pull_request') if e in trig]
if not events:
return None
for e in events:
spec = trig.get(e)
if isinstance(spec, dict) and (spec.get('paths') or spec.get('paths-ignore')) \
and BEGIN not in wf.text:
return None
cov = c.Coverage()
texts = []
for job in wf.jobs.values():
if not isinstance(job, dict) or 'steps' not in job:
return None
for step in job['steps']:
if str(step.get('uses') or '').startswith('./'):
return None
for step, text, wd in c.job_texts(job):
base = os.path.join(c.ROOT, wd) if wd and '${{' not in wd else c.ROOT
cov.add_text(text + '\n' + wd, base, 'run')
texts.append(text + '\n' + wd)
scripts = [f for f in cov.files if f.endswith(('.sh', '.py')) and f not in INFRA]
# A tool or CI script may take its directories from a list or a walk
# no reading of its text can be sure of: it keeps the trees whole
tools = [f for f in cov.files if f.startswith(('tools/', '.github/workflows/scripts/'))
and f not in INFRA]
every = code('\n'.join(texts + [read(f) for f in scripts]))
keep_samples = bool(tools) or bool(_ALL_SAMPLES.search(every)) \
or any(_WALK.search(read(f)) for f in scripts)
keep_workflows = bool(_WORKFLOWS.search(every))
if 'ci_paths' in every:
# The check reads every sample directory and workflow
return []
dirs = set()
for rel in list(cov.files) + list(cov.dirs):
d = sample_dir(rel)
if d:
dirs.add(d)
for src in cov.suffixes:
d = sample_dir(src)
if d:
dirs.add(d)
todo = sorted(dirs)
while todo:
d = todo.pop()
top = os.path.join(c.ROOT, d)
if not os.path.isdir(top):
continue
for at, subdirs, names in os.walk(top):
subdirs[:] = [s for s in subdirs if not s.startswith(('.', 'obj'))]
for n in names:
full = os.path.join(at, n)
if os.path.getsize(full) > 1 << 20:
continue
rel = os.path.relpath(full, c.ROOT).replace(os.sep, '/')
text = read(rel)
if '\0' in text:
continue
if _ALL_SAMPLES.search(code(text)):
keep_samples = True
for p in named_paths(text, at):
nd = sample_dir(p)
if nd and nd not in dirs:
dirs.add(nd)
todo.append(nd)
paths = ['**']
if not keep_samples:
paths += ['!samples/**', '!libretro-common/samples/**']
if not keep_workflows:
paths += ['!.github/workflows/*.yml']
if not keep_samples:
paths += [d + '/**' for d in sorted(dirs) if d.count('/') >= 2]
paths += [d + '/**' for d in sorted(dirs) if d.count('/') < 2]
if not keep_workflows:
paths.append('.github/workflows/' + wf.file)
if paths == ['**']:
return []
return paths
def rewrite(wf, paths):
lines = wf.text.split('\n')
# drop the block written before
out, skip = [], False
for l in lines:
if l == BEGIN:
skip = True
continue
if skip:
if l == END:
skip = False
continue
out.append(l)
lines = out
if not paths:
return '\n'.join(lines)
block = [BEGIN, ' paths:'] + [" - '%s'" % p for p in paths] + [END]
on = lines.index('on:')
i = on + 1
result = lines[:i]
while i < len(lines) and (lines[i].startswith(' ') or lines[i] == ''):
m = re.match(r' (push|pull_request):\s*$', lines[i])
result.append(lines[i])
i += 1
if m:
while i < len(lines) and lines[i].startswith(' '):
result.append(lines[i])
i += 1
result += block
return '\n'.join(result + lines[i:])
def main(argv):
check = '--check' in argv
stale = []
for wf in c.load_workflows():
paths = plan(wf)
if paths is None:
continue
new = rewrite(wf, paths)
if new != wf.text:
stale.append(wf.file)
if not check:
with open(wf.path, 'w', encoding='utf-8') as f:
f.write(new)
if check:
if stale:
for f in stale:
print('ci_paths: %s: the paths filter is out of date' % f)
print('ci_paths: run tools/ci_paths.py and commit the result')
return 1
print('ci_paths: every generated paths filter is current')
return 0
for f in stale:
print('ci_paths: wrote %s' % f)
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))