]> Cypherpunks repositories - gostls13.git/commitdiff
builder: build multiple targets in parallel
authorAndrew Gerrand <adg@golang.org>
Wed, 27 Apr 2011 00:12:10 +0000 (10:12 +1000)
committerAndrew Gerrand <adg@golang.org>
Wed, 27 Apr 2011 00:12:10 +0000 (10:12 +1000)
R=rsc, dfc
CC=golang-dev
https://golang.org/cl/4452047

misc/dashboard/builder/main.go

index 3924ff2a004f18b44e8193ce3eecfa01dcaca755..d11cbb1337dd64082bda1e11c13155c72d29e5b5 100644 (file)
@@ -60,6 +60,7 @@ var (
        buildRevision = flag.String("rev", "", "Build specified revision and exit")
        buildCmd      = flag.String("cmd", "./all.bash", "Build command (specify absolute or relative to go/src/)")
        external      = flag.Bool("external", false, "Build external packages")
+       parallel      = flag.Bool("parallel", false, "Build multiple targets in parallel")
        verbose       = flag.Bool("v", false, "verbose")
 )
 
@@ -133,9 +134,19 @@ func main() {
                        continue
                }
                built := false
-               for _, b := range builders {
-                       if b.build() {
-                               built = true
+               if *parallel {
+                       done := make(chan bool)
+                       for _, b := range builders {
+                               go func(b *Builder) {
+                                       done <- b.build()
+                               }(b)
+                       }
+                       for _ = range builders {
+                               built = <-done || built
+                       }
+               } else {
+                       for _, b := range builders {
+                               built = b.build() || built
                        }
                }
                // only run benchmarks if we didn't build anything