tg.setenv("GOCACHE", "off")
tg.setenv("GOPATH", tg.path("."))
tg.setenv("GOTMPDIR", "tmp")
- tg.runFail("build", "a")
- tg.grepStderr("relative tmpdir", "wrong error")
-
- if runtime.GOOS != "windows" && runtime.GOOS != "plan9" {
- tg.unsetenv("GOTMPDIR")
- tg.setenv("TMPDIR", "tmp")
- tg.runFail("build", "a")
- tg.grepStderr("relative tmpdir", "wrong error")
- }
+ tg.run("build", "-work", "a")
+ tg.grepStderr("WORK=[^t]", "work should be absolute path")
+
+ tg.unsetenv("GOTMPDIR")
+ tg.setenv("TMP", "tmp") // windows
+ tg.setenv("TMPDIR", "tmp") // unix
+ tg.run("build", "-work", "a")
+ tg.grepStderr("WORK=[^t]", "work should be absolute path")
}
// Issue 24704.
)
func (b *Builder) Init() {
- var err error
b.Print = func(a ...interface{}) (int, error) {
return fmt.Fprint(os.Stderr, a...)
}
if cfg.BuildN {
b.WorkDir = "$WORK"
} else {
- b.WorkDir, err = ioutil.TempDir(os.Getenv("GOTMPDIR"), "go-build")
+ tmp, err := ioutil.TempDir(os.Getenv("GOTMPDIR"), "go-build")
if err != nil {
base.Fatalf("%s", err)
}
- if !filepath.IsAbs(b.WorkDir) {
- os.RemoveAll(b.WorkDir)
- base.Fatalf("cmd/go: relative tmpdir not supported")
+ if !filepath.IsAbs(tmp) {
+ abs, err := filepath.Abs(tmp)
+ if err != nil {
+ os.RemoveAll(tmp)
+ base.Fatalf("go: creating work dir: %v", err)
+ }
+ tmp = abs
}
+ b.WorkDir = tmp
if cfg.BuildX || cfg.BuildWork {
fmt.Fprintf(os.Stderr, "WORK=%s\n", b.WorkDir)
}