Run CI on pull requests, on the vendored branch, and on Windows - #10
Open
dougchansan wants to merge 1 commit into
Open
Run CI on pull requests, on the vendored branch, and on Windows#10dougchansan wants to merge 1 commit into
dougchansan wants to merge 1 commit into
Conversation
Three gaps, each of which let a break through. Nothing ran on a pull request, so a change reached a branch other people vendor before anything compiled it. A missing include that stopped `core` building got in exactly that way. Only `main` was watched on push, but `moderngekko-vendor` is the branch ModernGekko actually vendors, so the branch being consumed was the one not being checked. Windows was not built at all. That is how the precompiled-header flags being applied to C sources -- GXRuntime handed a C++ PCH, fatal error C1853 -- reached the vendored branch and stopped the downstream launcher compiling. The unit tests also existed without anything running them; `tests` is EXCLUDE_FROM_ALL, so it has to be asked for by name. Linux and Windows now build it and run ctest. Concurrency cancels superseded runs, since these builds are not cheap.
This was referenced Aug 6, 2026
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three gaps in the current workflow, each of which let a break through.
Nothing ran on a pull request — only
pushtomainand manual dispatch. So a change could reach a branch other people vendor before anything compiled it. The missing include that stoppedcorebuilding (#7) got in exactly that way.Only
mainwas watched on push, butmoderngekko-vendoris the branch ModernGekko actually vendors. The branch being consumed was the one not being checked.Windows was not built at all. That is how the precompiled-header flags being applied to C sources — GXRuntime handed a C++ PCH,
fatal error C1853— reached the vendored branch and stopped the downstream launcher from compiling.Also: the unit tests exist and nothing ran them.
testsisEXCLUDE_FROM_ALL, so it has to be asked for by name. Linux and Windows now build it and runctest.Concurrency cancels superseded runs, since these builds are not cheap.
Verified
YAML parses; triggers, watched branches and jobs are what they should be. The
teststarget name and itsEXCLUDE_FROM_ALLstatus are read fromSource/UnitTests/CMakeLists.txtrather than assumed.I have not been able to rehearse the runners themselves. The macOS and Linux jobs are unchanged apart from the test steps, so they should behave as before; the Windows job is new and may need a fixup on its first run.
Note
The Windows job will fail until #7 lands — that is the point of it. Merge #7 first.
How this fits
These land together as a set: savestates working end to end, the Windows build and test suite being usable at all, and CI so none of it regresses unnoticed. This PR is RC #10.
Interpreter.cppincludecoredoes not compile without itCore/SavestateLayout.h, the one definition of where savestates live, what they are called and how they are ordered--load-state--opt-level, default-O2Suggested order: #18 and RC #7, then RC #8, then MG #21; MG #22 before MG #23. The rest are independent.
Verified on three platforms: Windows (MSVC + clang), Linux (g++ 15.2, x86_64) and macOS 26.1 (clang, arm64). The portable pieces - the savestate layout and its tests,
frontend_config,dol_patch- build and pass on all three. Windows-only pieces are guarded and their tests registered behindif(WIN32).