This makes AnnotatedBuilder derive from LLVMBuildFactory
instead of the standard buildbot factory. This means it will have
the same properties and methods as the other builders - in particular,
depends_on_projects, which is used for scheduling.
Details
Diff Detail
- Build Status
Buildable 7127 Build 7127: arc lint + arc unit
Event Timeline
Do you think we should use LLVMBuildFactory.addSVNSteps to drive the checkout process, or is it better to keep that as part of the annotator script? Keeping it in the script lets us add more repos without doing buildmaster restarts, which is nice, but if we do that, then the scheduling logic gets out of sync.
Suppose ThinLTO develops a dependency on libprofile in compiler-rt. If we update the annotator script to check out compiler-rt without updating the depends_on_projects list on the buildmaster, then builds will not be scheduled after compiler-rt changes. By using depends_on_projects, we're moving the knowledge of what source to check out back into the build master config. If adding a new subproject dependency requires a buildmaster restart, maybe we should go back to using the master side SVN checkout steps.
I see. Yes, it's unfortunate that this essentially repeats the list of projects in multiple places. On the other hand, I like having as much as possible in the part that can be modified without requiring a buildmaster reload, which would speak for leaving the checkout code in the builder. This is also what the sanitizer builders do. They trigger on changes to any of llvm, cfe, compiler-rt, libcxx, libcxxabi, libunwind, and lld, which we could also do here. It's basically triggering on everything, which is safe. Theoretically, it might increase resource usage a bit, but the ThinLTO builder as-is is basically always building, so the number of builds triggered and the amount of work the worker does should be the same. Would you like me to make that change?