roc-toolkit icon indicating copy to clipboard operation
roc-toolkit copied to clipboard

Enable ccache in GitHub Actions

Open gavv opened this issue 5 years ago • 3 comments

Intro

Currently our CI builds take ~15-20 minutes, and we're planning to add more jobs.

I suspect that we could speed up them significantly by employing ccache and preserving cache between builds.

Our builds include building third-party dependencies, like sox and pulseaudio. They are built many times because we check builds on many environments (different Linux distros, different macOS versions, etc). Most of the time the results of building a dependency on some fixed environment are identical because we change versions and options of dependencies very rarely.

Steps

  • Check if scons will work with ccache smoothly. I hope that just exporting corresponding variables would be enough, but maybe we'll have to fix some issues.

  • Enable ccache in CI builds.

  • Preserve ccache directory between builds.

Documentation

Ccache: https://ccache.dev/

Roc:

gavv avatar Jul 12 '20 08:07 gavv

Hello, I'm a beginner. I would love to give this a try. Just need a little more clarification and help. Here's what I have so far -

  • scons supports ccache integration
  • 3rd party dependencies build results are stored in ./3rdparty/<host>/rpath

Ring-A-Bell avatar Mar 13 '21 20:03 Ring-A-Bell

@Ring-A-Bell Hi, feel free to ask if you have specific questions ;)

gavv avatar Mar 22 '21 10:03 gavv

Enabling SCons cache maybe an easier way out https://github.com/godotengine/godot/pull/13299

abitrolly avatar Apr 09 '22 11:04 abitrolly

@abitrolly Sounds interesting, but the main purpose is to cache builds of 3rd-parties, which don't use scons. And using ccache would be a universal solution, it would cache both 3rd-parties and roc.

gavv avatar Dec 25 '22 10:12 gavv

I've added ccache support to scons. I'll create a new issue for using ccache in CI.

gavv avatar Nov 10 '23 22:11 gavv