On Fri, Jun 01, 2007 at 05:09:23PM +0100, Simon Peyton-Jones wrote:
> |   1. We tag all the repos after a successful bootstrap on each platform.
> |      Main problem with this: profusion of tags, obscuring 'darcs changes'
> |      and 'darcs query tags'.  Space itself isn't really an issue; a tag
> |      only adds a few hundred bytes.
> |
> |      We could mitigate the effect by rate-limiting the tags, say only tag if
> |      there hasn't been a tag in the last week.  Then we'd get one
> |      guaranteed-buildable state per week or so, which seems reasonable.
> |
> |   2. We keep a separate set of repos that are only updated after a 
> successful
> |      build.  Perhaps one set of repos per platform.
> |      Main problem with this: ensuring atomicity during the update (probably
> |      not likely to be a significant problem in practice).
> |      Second problem: this doesn't store the repo state of every successful
> |      build, only the most recent one.
> |
> | Personally I lean towards (2), as it's much easier to implement.  Any 
> further
> | comments?
> 
> (2) seems good to me.  Furthermore, if we published
>         Last good build is at repo http://darcs.haskell.org/ghc-2007-02-09
> (so the date is in the repo name), and refrain from publishing until the repo 
> is really there, there'd be no atomicity issues would there?
> 
> (We can just delete older ones after a bit.)

3 (mentioned earlier): Like 1, but don't push the tags.  Instead we
darcs send -o them and publish.  The workflow for a checkout is:

darcs get /my/local/fullghc/repo /ghc/build/path
cd /ghc/build/path
wget http://url/of/latest-tag
darcs apply latest-tag
darcs unpull --from-tag=BUILDS

This has the space/network usage of (1) and the infrastructure ease of
(2).

Stefan

_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to