[zorg] Proposal to add Repo selection to buildmasters.

Rick Foos rfoos at codeaurora.org
Thu Oct 2 15:06:47 PDT 2014


This proposal covers two issues:
1) A common Cmake build factory, or for that matter any common factory, 
needs a way to select the projects required to build the source tree.

Many of the two stage builds could be done with a common factory for 
multiple projects. The start of this is in 
ClangBuilder.getClangCMakeBuildFactory.

2) Zorg supports defining multiple buildmasters sharing the same 
factories. When using zorg in other locations, it may be more desirable 
to use Git instead of SVN for a variety of reasons.

The existing set of Git mirrors can be used, for builds, essentially the 
same way as svn. Schedulers can point to Git, and all source repos can 
fetch from Git.

I've done this, and schedulers and builders work with all the correct 
revision info when using Git or SVN. Mixing git schedulers with svn 
repos trigger correctly but the branch/revision info doesn't make sense. 
Another reason why switching between the two makes sense.

Some buildmasters already use Git repos, and a unified way to do this in 
Zorg would be useful.

One proposal Renato thought of looks like this:

---
Repos {
  SVN { llvm : SVN(.../llvm/trunk...), clang : SVN(.../cfe/trunk) ... }
  GIT { llvm : GIT(.../llvm/master...) ... }
}

...

if (useSVN):
   Repo = Repos.SVN
else if (useGIT):
   Repo = Repos.GIT
else:
   ERROR

Builder.addStep(Repo.llvm);
Builder.addStep(Repo.clang);
if (extraTools):
   Builder.addStep(Repo.clang_extra);
---

This works for the SVN repos mirrored to Git. A small number of repos 
cannot be switched.

FixedRepos { isl : GIT(...), cloog: GIT(...) }

A method to select a set of these into a source tree and pass that to a 
Factory would finish the work:

SourceTree = [ Repo.llvm, Repo.clang, Repo.clang_extra ]

This is quite rough, any thoughts/improvements on these ideas?

Thank you,
Rick



More information about the llvm-commits mailing list