RISE GCC pre-commit CI

RISE GCC pre-commit CI

Overview

The RISE Build Farm hosts a pre-merge CI build system for GCC. (For more information on GCC and why it’s important, see https://lf-rise.atlassian.net/wiki/spaces/HOME/pages/585629707 .)

RISE’s pre-merge CI build system helps answer the question of whether a proposed patch meets the minimum requirements to be merged into GCC, as an aid to maintainers and developers.

Project Leaders

  • Edwin Lu (Rivos)

  • Patrick O’Neill (Rivos)

Value

This automated pre-commit CI process saves developers hours of what would be manual testing time, accelerating the development of GCC and increasing codebase quality with consistent testing. It helps reviewers understand whether a patch is suitable for inclusion in the codebase.

Reports

Process

When a new patch with "RISC-V" in the title is submitted to the mailing list the precommit pulls it from patchworks. A variety of checks are then run using the post-commit CI as a baseline and source-of-truth for expected failures. The checks include:

  • Does the patch apply?

  • Does the patch pass lint checks?

  • Does the patch build, after applying?

  • Does the patched compiler work?

 

The build/test logic is as follows:

if patch_applies_to_baseline:     perform build+test, comparing testsuite results with the baseline testsuite results if patch_does_not_apply_to_baseline and patch_applies_to_trunk:     perform build if patch_does_not_apply_to_baseline_or_trunk:     report a warning

Results are reported to patchworks and may be manually interpreted/directly emailed to upstream maintainers.

The pre-commit CI focuses on a variety of GCC targets, including application processors, long vector accelerators, and microcontrollers.

Future Work

  • Can we add a dashboard / set of charts to depict progress over time?

References