Skip to content

Conversation

@Meinersbur
Copy link
Member

@Meinersbur Meinersbur commented Nov 6, 2025

Allow the main llvm-project repository to contain the buildbot builder instructions, instead of storing them in llvm-zorg. The corresponding llvm-project PR is llvm/llvm-project#166809.

Using polly-x86_64-linux-test-suite as a proof-of-convept because that builder is currently offline, I am its maintainer, and is easier to build than an configuration supporting offload. Once the disign has been decided, more builders can follow.

Advantages are:

  • Are easier to make on the llvm-project repository. There are more reviewers than for the llvm-zorg repository
  • Buildbot changes can be made in the same PR with changes that require updating the buildbot, e.g. changing the name of a CMake option.
  • Some builders store a CMake cache file in the llvm-project repository for the reasons above. However, the number of changes that can be made with a CMake cache file alone are limited

Compared to AnnotatedBuilder, advantages are:

  • Reproducing a buildbot configuration locally made easy: just execute the script in-place. No llvm-zorg, local buildbot worker, or buildbot master needed.
  • Same for testing a change of a builder before landing it in llvm-zorg. Doing so wuth an AnnotatedBuilder requires two llvm-zorg checkouts: One for making the change of the builder script itself, which then is pushed to a private llvm-zorg branch on GitHub, and a second that is modified to fetch that branch instead of https://github.com/llvm/llvm-zorg/tree/main.
  • The AnnotatedBuilder scripts are located in the llvm-zorg repository and the buildbot-workers always checkout the top-of-trunk. This means that a buildbot configuration is split over three checkouts:
    • The checkout of llvm-zorg that the buildbot-master is running, which is updated only when the master is manually restarted.
    • The checkout of llvm-zorg by the buildbot-worker fetches; always the top-of-trunk and connot be selected using the buildbot master's "Force build" feature, .i.e may not match the revision of llvm-project that is executed such as the CMake cache files located there.
    • The checkout of llvm-project to be tested
  • The "Force Build" feature also allows for test-building any llvm-project PR. This is correctly handled by zorg's addGetSourcecodeSteps, but does not work with AnnotatedBuilders that checkout the llvm-project source on their own.

The goal is to move as much as possible into the llvm-project repository such that there cannot be a mismatch between checkouts of the different repository. Ideally, the buildbot-master only needs to be updated+restarted for adding/removing workers, not for build configuration changes.

This has been discussed in the Bi-Weekly LLVM Offload Meeting (Agenda item 13). There were no concerns.

cleanup

testbot: undo

cleanup
Copy link
Contributor

@boomanaiden154 boomanaiden154 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this over an annotated builder with the script in zorg?

@Meinersbur
Copy link
Member Author

Why this over an annotated builder with the script in zorg?

The other part is in llvm/llvm-project#166809 which includes the motivation. Both are currently explicitly in draft mode to collect feedback

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