Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(39)

Side by Side Diff: misc/dashboard/builder/main.go

Issue 3473041: code review 3473041: builder: Allow buildroot to be passed as command-line a... (Closed)
Patch Set: code review 3473041: builder: Allow buildroot to be passed as command-line a... Created 14 years, 3 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 package main 1 package main
2 2
3 import ( 3 import (
4 "container/vector" 4 "container/vector"
5 "flag" 5 "flag"
6 "fmt" 6 "fmt"
7 "io/ioutil" 7 "io/ioutil"
8 "log" 8 "log"
9 "os" 9 "os"
10 "path" 10 "path"
(...skipping 19 matching lines...) Expand all
30 codePassword string 30 codePassword string
31 } 31 }
32 32
33 type BenchRequest struct { 33 type BenchRequest struct {
34 builder *Builder 34 builder *Builder
35 commit Commit 35 commit Commit
36 path string 36 path string
37 } 37 }
38 38
39 var ( 39 var (
40 buildroot = flag.String("buildroot", path.Join(os.TempDir(), "gobuil der"), "Directory under which to build")
40 dashboard = flag.String("dashboard", "godashboard.appspot.com", "Go Dashboard Host") 41 dashboard = flag.String("dashboard", "godashboard.appspot.com", "Go Dashboard Host")
41 runBenchmarks = flag.Bool("bench", false, "Run benchmarks") 42 runBenchmarks = flag.Bool("bench", false, "Run benchmarks")
42 buildRelease = flag.Bool("release", false, "Build and upload binary rel ease archives") 43 buildRelease = flag.Bool("release", false, "Build and upload binary rel ease archives")
43 buildRevision = flag.String("rev", "", "Build specified revision and exi t") 44 buildRevision = flag.String("rev", "", "Build specified revision and exi t")
44 buildCmd = flag.String("cmd", "./all.bash", "Build command (specify absolute or relative to go/src/)") 45 buildCmd = flag.String("cmd", "./all.bash", "Build command (specify absolute or relative to go/src/)")
45 ) 46 )
46 47
47 var ( 48 var (
48 » buildroot = path.Join(os.TempDir(), "gobuilder") 49 » goroot string
49 » goroot = path.Join(buildroot, "goroot")
50 releaseRegexp = regexp.MustCompile(`^release\.[0-9\-]+`) 50 releaseRegexp = regexp.MustCompile(`^release\.[0-9\-]+`)
51 benchRequests vector.Vector 51 benchRequests vector.Vector
52 ) 52 )
53 53
54 func main() { 54 func main() {
55 flag.Usage = func() { 55 flag.Usage = func() {
56 fmt.Fprintf(os.Stderr, "usage: %s goos-goarch...\n", os.Args[0]) 56 fmt.Fprintf(os.Stderr, "usage: %s goos-goarch...\n", os.Args[0])
57 flag.PrintDefaults() 57 flag.PrintDefaults()
58 os.Exit(2) 58 os.Exit(2)
59 } 59 }
60 flag.Parse() 60 flag.Parse()
61 if len(flag.Args()) == 0 { 61 if len(flag.Args()) == 0 {
62 flag.Usage() 62 flag.Usage()
63 } 63 }
64 goroot = path.Join(*buildroot, "goroot")
64 builders := make([]*Builder, len(flag.Args())) 65 builders := make([]*Builder, len(flag.Args()))
65 for i, builder := range flag.Args() { 66 for i, builder := range flag.Args() {
66 b, err := NewBuilder(builder) 67 b, err := NewBuilder(builder)
67 if err != nil { 68 if err != nil {
68 log.Exit(err) 69 log.Exit(err)
69 } 70 }
70 builders[i] = b 71 builders[i] = b
71 } 72 }
72 » if err := os.RemoveAll(buildroot); err != nil { 73 » if err := os.RemoveAll(*buildroot); err != nil {
73 » » log.Exitf("Error removing build root (%s): %s", buildroot, err) 74 » » log.Exitf("Error removing build root (%s): %s", *buildroot, err)
74 } 75 }
75 » if err := os.Mkdir(buildroot, mkdirPerm); err != nil { 76 » if err := os.Mkdir(*buildroot, mkdirPerm); err != nil {
76 » » log.Exitf("Error making build root (%s): %s", buildroot, err) 77 » » log.Exitf("Error making build root (%s): %s", *buildroot, err)
77 } 78 }
78 » if err := run(nil, buildroot, "hg", "clone", hgUrl, goroot); err != nil { 79 » if err := run(nil, *buildroot, "hg", "clone", hgUrl, goroot); err != nil {
79 log.Exit("Error cloning repository:", err) 80 log.Exit("Error cloning repository:", err)
80 } 81 }
81 // if specified, build revision and return 82 // if specified, build revision and return
82 if *buildRevision != "" { 83 if *buildRevision != "" {
83 c, err := getCommit(*buildRevision) 84 c, err := getCommit(*buildRevision)
84 if err != nil { 85 if err != nil {
85 log.Exit("Error finding revision: ", err) 86 log.Exit("Error finding revision: ", err)
86 } 87 }
87 for _, b := range builders { 88 for _, b := range builders {
88 if err := b.buildCommit(c); err != nil { 89 if err := b.buildCommit(c); err != nil {
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 func (b *Builder) buildCommit(c Commit) (err os.Error) { 230 func (b *Builder) buildCommit(c Commit) (err os.Error) {
230 defer func() { 231 defer func() {
231 if err != nil { 232 if err != nil {
232 err = fmt.Errorf("%s buildCommit: %d: %s", b.name, c.num , err) 233 err = fmt.Errorf("%s buildCommit: %d: %s", b.name, c.num , err)
233 } 234 }
234 }() 235 }()
235 236
236 log.Println(b.name, "building", c.num) 237 log.Println(b.name, "building", c.num)
237 238
238 // create place in which to do work 239 // create place in which to do work
239 » workpath := path.Join(buildroot, b.name+"-"+strconv.Itoa(c.num)) 240 » workpath := path.Join(*buildroot, b.name+"-"+strconv.Itoa(c.num))
240 err = os.Mkdir(workpath, mkdirPerm) 241 err = os.Mkdir(workpath, mkdirPerm)
241 if err != nil { 242 if err != nil {
242 return 243 return
243 } 244 }
244 benchRequested := false 245 benchRequested := false
245 defer func() { 246 defer func() {
246 if !benchRequested { 247 if !benchRequested {
247 os.RemoveAll(workpath) 248 os.RemoveAll(workpath)
248 } 249 }
249 }() 250 }()
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 331
331 func isDirectory(name string) bool { 332 func isDirectory(name string) bool {
332 s, err := os.Stat(name) 333 s, err := os.Stat(name)
333 return err == nil && s.IsDirectory() 334 return err == nil && s.IsDirectory()
334 } 335 }
335 336
336 func isFile(name string) bool { 337 func isFile(name string) bool {
337 s, err := os.Stat(name) 338 s, err := os.Stat(name)
338 return err == nil && (s.IsRegular() || s.IsSymlink()) 339 return err == nil && (s.IsRegular() || s.IsSymlink())
339 } 340 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b