OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |