Skip to content

CI: speed up formatting and check symbol regressions against the base - #162

Merged
Mrkol merged 4 commits into
doldecomp:mainfrom
fjooord:ci/format-and-symbol-regressions
Sep 15, 2026
Merged

Mrkol merged 4 commits into
doldecomp:mainfrom
fjooord:ci/format-and-symbol-regressions

Conversation

@fjooord

@fjooord fjooord commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

1. Check All Formatting in One Container

Run clang-format 21 across all tracked source files in one Docker container. No automatic edits or custom formatting helper.

  • Previous CI: 9m23s, starting a container per file.
  • Local check: 15.7s for 1,475 files, with the image cached. Remote timing pending.
  • Includes the whitespace-only fix in include/JSystem/JAudio/JALibrary/JALList.hpp, the only file failing formatting. The full-tree check now passes locally.

2. Fail on New Symbol Defects

#161 compiled and generated its report, then failed symbol-map validation. Compare against a separately built upstream base: inherited defects become warnings; new missing symbols, ordering errors, or incorrect linkage fail CI.

Previously empty objects get no exemptions. If the base object has no function symbols, its first implementation must pass strict validation.

Compiler errors and missing validation inputs still fail. Standalone validation stays strict. This does not implement missing functions or repair existing symbol defects.

Validation: 15 local checks pass, including empty-baseline behavior. No test files or test steps are added to the PR. Game implementation changes stay in #161.

@fjooord
fjooord marked this pull request as draft September 15, 2026 20:08
Comment thread .github/workflows/build.yml
Comment thread tools/test_symbol_validation.py Outdated
@fjooord

fjooord commented Sep 15, 2026

Copy link
Copy Markdown
Contributor Author

Included the whitespace-only fix in include/JSystem/JAudio/JALibrary/JALList.hpp, the only file failing the full-tree formatting check.

The exact workflow command now passes locally across all 1,475 tracked source files in one Docker container, taking 15.7 seconds with the image cached. Including this fix should let the full-tree formatting job pass when this PR is merged. Remote CI still needs to confirm; this formatting result does not establish build success.

@fjooord
fjooord marked this pull request as ready for review September 15, 2026 20:28
@fjooord
fjooord requested a review from Mrkol September 15, 2026 20:28
@decomp-dev

decomp-dev Bot commented Sep 15, 2026

Copy link
Copy Markdown

Report for GMSJ01 (aeebbbf - 8bfaa54)

📉 Matched code: 39.16% (-0.09%, -3304 bytes)
📉 Matched data: 56.07% (-0.23%, -1480 bytes)

🥀 5 broken matches
Unit Item Bytes Before After
mario/Enemy/BossHanachanSave TBossHanachanChangeSaveParams::TBossHanachanChangeSaveParams(const char*) -1608 100.00% 0.00%
mario/Enemy/BossHanachanSave TBossHanachanCommonSaveParams::TBossHanachanCommonSaveParams(const char*) -1408 100.00% 0.00%
mario/Enemy/BossHanachanSave .rodata -1328 100.00% 0.00%
mario/Enemy/BossHanachanSave .sdata2 -152 100.00% 0.00%
mario/MoveBG/MapObjFloat TMapObjFloatOnSea::initMapObj() -8 100.00% 97.57%
📉 2 regressions in unmatched items
Unit Item Bytes Before After
mario/MarioUtil/EffectUtil SMS_EmitSinkInPollutionEffect(const JGeometry::TVec3<float>&, const JGeometry::TVec3<float>&, bool) -10 98.75% 96.66%
mario/MoveBG/MapObjDolpic TBellDolpic::ring(const JGeometry::TVec3<float>&) -1 99.19% 98.83%

@Mrkol
Mrkol merged commit 92e54e0 into doldecomp:main Sep 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants