From 50e65ab30d013955ba46dc6b6c32a6181f3c53b0 Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Wed, 27 Apr 2011 10:12:10 +1000 Subject: [PATCH] builder: build multiple targets in parallel R=rsc, dfc CC=golang-dev https://golang.org/cl/4452047 --- misc/dashboard/builder/main.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/misc/dashboard/builder/main.go b/misc/dashboard/builder/main.go index 3924ff2a00..d11cbb1337 100644 --- a/misc/dashboard/builder/main.go +++ b/misc/dashboard/builder/main.go @@ -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 -- 2.50.0