Conversation
Install ccache on macOS and MSYS2 (pre-installed on ubuntu-latest), persist the cache directory across runs with actions/cache@v4, and enable save-always so the cache is updated even on exact hits or when a later step (e.g. tests) fails. CMakeLists.txt already auto-detects ccache and sets the compiler launcher, so no cmake flags are needed.
actions/cache save-always is deprecated and will be removed. Use separate actions/cache/restore and actions/cache/save steps instead, with if: always() on the save so it runs even when tests fail.
Use github.run_id in the save key so every run writes a fresh cache entry; restore still falls back via restore-keys to the most recent one. Add a ccache --show-stats step (if: always) after each build to make hit/miss rates visible in the CI logs.
ccache is not pre-installed on ubuntu-latest; add it to the apt deps list.
ccache --show-stats reports cumulative totals including stats saved from previous runs. Zero the counters just before make so the reported hit rate reflects only the current build.
Commits
Build Times per Run
Cold vs Warm SummaryComparing runs 1–2 (cold cache) against runs 9–10 (warm cache), successful jobs only.
|
|
@got3nks , I didn't think this would be ready before release. If you think this is safe and ok, and since you are working in stuff today, we can merge this to spare us some precious compilation time, what do you think? |
|
Reviewed end-to-end — the diff is clean and the last four CI runs (c4-c5 across all six job × build_type cells) all went green in 3-5 minutes, matching the warm-cache numbers in your table. Verified locally that The asymmetric Blast radius is CI-only; if anything regresses, a revert is one click. Safe to merge before 3.0.0 in my book — and it'll measurably speed up the rest of our pre-release iteration loop. Approve. |
…ule-project#912) Extends existing categories (preferring extensions over new lines): - Performance/Upload: amule-project#898 SlotAllocation default raised. - Networking & Discovery: wire-parser hardening list extended with amule-project#879/amule-project#882/amule-project#890/amule-project#886; new amuleweb security hardening bullet consolidating ngosang's amule-project#869-amule-project#874 triage (all landed in amule-project#875); amulegui list extended with amule-project#857; shared-folder watcher extended with amule-project#858. - Packaging: Windows installer i18n line extended with amule-project#899. - Internals & Refactoring: new docs-polish + code-quality bullets covering amule-project#851/amule-project#855/amule-project#862/amule-project#888/amule-project#900/amule-project#866/amule-project#867/amule-project#895 and amule-project#909/amule-project#910/amule-project#912. - Translations: new pre-release final-wave bullet covering amule-project#847/amule-project#856/ amule-project#891/amule-project#908/amule-project#860/amule-project#904/amule-project#859/amule-project#863/amule-project#861/amule-project#880/amule-project#911/amule-project#901/amule-project#902/amule-project#889/amule-project#868/amule-project#853. - Bug Fixes & Stability: amule-project#850/amule-project#854/amule-project#878/amule-project#906. - CI: ccache wiring (amule-project#892, amule-project#903) + CodeQL binutils-dev (amule-project#907). Contributors footer gains mifritscher and nguyenhoangminhhieu2004-gif (both first-time contributors). PR index extended through amule-project#912.
Extends existing categories (preferring extensions over new lines): - Performance/Upload: #898 SlotAllocation default raised. - Networking & Discovery: wire-parser hardening list extended with #879/#882/#890/#886; new amuleweb security hardening bullet consolidating ngosang's #869-#874 triage (all landed in #875); amulegui list extended with #857; shared-folder watcher extended with #858. - Packaging: Windows installer i18n line extended with #899. - Internals & Refactoring: new docs-polish + code-quality bullets covering #851/#855/#862/#888/#900/#866/#867/#895 and #909/#910/#912. - Translations: new pre-release final-wave bullet covering #847/#856/ #891/#908/#860/#904/#859/#863/#861/#880/#911/#901/#902/#889/#868/#853. - Bug Fixes & Stability: #850/#854/#878/#906. - CI: ccache wiring (#892, #903) + CodeQL binutils-dev (#907). Contributors footer gains mifritscher and nguyenhoangminhhieu2004-gif (both first-time contributors). PR index extended through #912.


Summary
ccacheon macOS (brew) and MSYS2 (mingw-w64-x86_64-ccache); it is pre-installed onubuntu-latestactions/cache@v4, keyed on OS + build type + hash of CMake filessave-always: trueensures the cache is written back even on exact key hits or when a later step (e.g. tests) failsCMakeLists.txtalready callsfind_program(CCACHE_PROGRAM ccache)and setsCMAKE_C_COMPILER_LAUNCHER/CMAKE_CXX_COMPILER_LAUNCHERautomaticallyCorrection
ccacheis not pre-installed onubuntu-latest, it did not failed in the first run because CMakeLists.txt fails gracefully on ccache absence and just prints a message and does not use it.Test plan
This PR stays in draft until after we release 3.0.0.