diff options
Diffstat (limited to 'misc/dashboard/builder/main.go')
-rw-r--r-- | misc/dashboard/builder/main.go | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/misc/dashboard/builder/main.go b/misc/dashboard/builder/main.go index c1536abb2..5ba5c11c3 100644 --- a/misc/dashboard/builder/main.go +++ b/misc/dashboard/builder/main.go @@ -12,6 +12,7 @@ import ( "os" "path" "regexp" + "runtime" "strconv" "strings" "time" @@ -347,6 +348,9 @@ func (b *Builder) buildHash(hash string) (err os.Error) { // envv returns an environment for build/bench execution func (b *Builder) envv() []string { + if runtime.GOOS == "windows" { + return b.envvWindows() + } e := []string{ "GOOS=" + b.goos, "GOARCH=" + b.goarch, @@ -358,6 +362,42 @@ func (b *Builder) envv() []string { return e } +// windows version of envv +func (b *Builder) envvWindows() []string { + start := map[string]string{ + "GOOS": b.goos, + "GOARCH": b.goarch, + "GOROOT_FINAL": "/c/go", + } + for _, name := range extraEnv { + start[name] = os.Getenv(name) + } + skip := map[string]bool{ + "GOBIN": true, + "GOROOT": true, + "INCLUDE": true, + "LIB": true, + } + var e []string + for name, v := range start { + e = append(e, name+"="+v) + skip[name] = true + } + for _, kv := range os.Environ() { + s := strings.Split(kv, "=", 2) + name := strings.ToUpper(s[0]) + switch { + case name == "": + // variables, like "=C:=C:\", just copy them + e = append(e, kv) + case !skip[name]: + e = append(e, kv) + skip[name] = true + } + } + return e +} + func isDirectory(name string) bool { s, err := os.Stat(name) return err == nil && s.IsDirectory() @@ -455,7 +495,7 @@ func commitPoll(key string) { // Pass 1. Fill in parents and add new log entries to logsByHash. // Empty parent means take parent from next log entry. - // Non-empty parent has form 1234:hashhashhash; we weant full hash. + // Non-empty parent has form 1234:hashhashhash; we want full hash. for i := range logs { l := &logs[i] log.Printf("hg log: %s < %s\n", l.Hash, l.Parent) @@ -516,7 +556,7 @@ func addCommit(hash, key string) bool { // Create commit. if err := postCommit(key, l); err != nil { - log.Printf("faield to add %s to dashboard: %v", err) + log.Printf("failed to add %s to dashboard: %v", key, err) return false } return true |