[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