Stefan O'Rear wrote:
On Thu, May 31, 2007 at 02:54:13PM +0100, Simon Marlow wrote:
Neil Mitchell wrote:
Hi
The disadvantage is that you need quite a bit of disk space, and that
if a buildbot is dead for a long time the "works" tree may get quite
old.
I wondered about this too, but I was worrying about ensuring atomicity
during
the push, especially since we have multiple repos. Maybe it's not a
serious
problem.
The push from active to works? My thought was that each buildbot would
have its own pair of repos, so you don't run into this problem.
The "works" repo has to be public (otherwise nobody can use it), and hence
the push has to be atomic with respect to pulls. I was thinking in terms
of having the "works" repos on darcs.haskell.org, but of course they could
be local to the builder if you have a way of exporting them.
mv ~/public/works ~/public/works.locked
(cd build/repo1; darcs push ~/public/works.locked/repo1)
(cd build/repo2; darcs push ~/public/works.locked/repo2)
(cd build/repo3; darcs push ~/public/works.locked/repo3)
mv ~/public/works.locked ~/public/works
Directory renames are atomic on *NIX.
Not quite - you made it atomic with respect to pushing, but not with respect to
users running 'darcs-all pull'. The failure case is this:
- user starts "darcs-all pull", pulls from ghc
- buildbot pushes to all repos, atomically
- user pulls from packages/base
I realise it's likely that the darcs-all will fail due to the repos
disappearing, rather than succeed with inconsistent repos, but there's no
guarantee that it will fail.
Cheers,
Simon
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc