Skip to content

buildtest.py: Use ccache#3528

Merged
ralight merged 1 commit intoeclipse-mosquitto:masterfrom
mattst88:use-ccache-in-buildtest.py
Mar 3, 2026
Merged

buildtest.py: Use ccache#3528
ralight merged 1 commit intoeclipse-mosquitto:masterfrom
mattst88:use-ccache-in-buildtest.py

Conversation

@mattst88
Copy link
Contributor

Reduces the time to run ./buildtest.py on my 8-core laptop from 25 minutes to 7 minutes.

 # Before, without ccache
$ time ./buildtest.py
[...]
./buildtest.py  5844.08s user 755.75s system 434% cpu 25:17.99 total

 # After, with ccache, empty cache.
$ time ./buildtest.py
[...]
./buildtest.py  1620.97s user 472.66s system 482% cpu 7:13.54 total

The ccache -s status after building once from an empty cache shows just how much duplicated work is performed: 83.00% cache hits!

$ ccache -s
Cacheable calls:    12538 / 22769 (55.07%)
  Hits:             10407 / 12538 (83.00%)
    Direct:          9093 / 10407 (87.37%)
    Preprocessed:    1314 / 10407 (12.63%)
  Misses:            2131 / 12538 (17.00%)
Uncacheable calls:  10231 / 22769 (44.93%)
Local storage:
  Cache size (GiB):   0.1 /   5.0 ( 1.97%)
  Hits:             10407 / 12538 (83.00%)
  Misses:            2131 / 12538 (17.00%)

Thank you for contributing your time to the Mosquitto project!

Before you go any further, please note that we cannot accept contributions if
you haven't signed the Eclipse Contributor Agreement.
If you aren't able to do that, or just don't want to, please describe your bug
fix/feature change in an issue. For simple bug fixes it is can be just as easy
for us to be told about the problem and then go fix it directly.

Then please check the following list of things we ask for in your pull request:

  • Have you signed the Eclipse Contributor Agreement, using the same email address as you used in your commits?
  • Do each of your commits have a "Signed-off-by" line, with the correct email address? Use "git commit -s" to generate this line for you.
  • If you are contributing a new feature, is your work based off the develop branch?
  • If you are contributing a bugfix, is your work based off the fixes branch?
  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you successfully run make test with your changes locally?

Reduces the time to run `./buildtest.py` on my 8-core laptop from 25
minutes to 7 minutes.

```
 # Before, without ccache
$ time ./buildtest.py
[...]
./buildtest.py  5844.08s user 755.75s system 434% cpu 25:17.99 total

 # After, with ccache, empty cache.
$ time ./buildtest.py
[...]
./buildtest.py  1620.97s user 472.66s system 482% cpu 7:13.54 total
```

The `ccache -s` status after building once from an empty cache shows
just how much duplicated work is performed: 83.00% cache hits!

```
$ ccache -s
Cacheable calls:    12538 / 22769 (55.07%)
  Hits:             10407 / 12538 (83.00%)
    Direct:          9093 / 10407 (87.37%)
    Preprocessed:    1314 / 10407 (12.63%)
  Misses:            2131 / 12538 (17.00%)
Uncacheable calls:  10231 / 22769 (44.93%)
Local storage:
  Cache size (GiB):   0.1 /   5.0 ( 1.97%)
  Hits:             10407 / 12538 (83.00%)
  Misses:            2131 / 12538 (17.00%)
```

Signed-off-by: Matt Turner <mattst88@gmail.com>
@mattst88
Copy link
Contributor Author

Noticed this opportunity when looking at the CI results for #3525 -- the build variants workflow took 44 minutes. The next longest was 20 minutes, and everything else was < 10 minutes.

@mattst88
Copy link
Contributor Author

"Build variants" finished in 13 minutes :)

@codecov
Copy link

codecov bot commented Feb 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ralight
Copy link
Contributor

ralight commented Mar 3, 2026

Lovely. The run time of this has been bugging me for a while but I didn't want to give it up.

@ralight ralight merged commit 9560fc2 into eclipse-mosquitto:master Mar 3, 2026
12 of 13 checks passed
@mattst88 mattst88 deleted the use-ccache-in-buildtest.py branch March 3, 2026 15:16
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