diff --git a/ui/build/dumpvars.go b/ui/build/dumpvars.go index a559330cb..7dc4915e2 100644 --- a/ui/build/dumpvars.go +++ b/ui/build/dumpvars.go @@ -54,18 +54,16 @@ func DumpMakeVars(ctx Context, config Config, goals, vars []string) (map[string] var ret map[string]string if len(makeVars) > 0 { + // It's not safe to use the same TMPDIR as the build, as that can be removed. tmpDir, err := ioutil.TempDir("", "dumpvars") if err != nil { return nil, err } defer os.RemoveAll(tmpDir) - // It's not safe to use the same TMPDIR as the build, as that can be removed. - config.Environment().Set("TMPDIR", tmpDir) + SetupLitePath(ctx, config, tmpDir) - SetupLitePath(ctx, config) - - ret, err = dumpMakeVars(ctx, config, goals, makeVars, false) + ret, err = dumpMakeVars(ctx, config, goals, makeVars, false, tmpDir) if err != nil { return ret, err } @@ -82,7 +80,7 @@ func DumpMakeVars(ctx Context, config Config, goals, vars []string) (map[string] return ret, nil } -func dumpMakeVars(ctx Context, config Config, goals, vars []string, write_soong_vars bool) (map[string]string, error) { +func dumpMakeVars(ctx Context, config Config, goals, vars []string, write_soong_vars bool, tmpDir string) (map[string]string, error) { ctx.BeginTrace(metrics.RunKati, "dumpvars") defer ctx.EndTrace() @@ -98,6 +96,9 @@ func dumpMakeVars(ctx Context, config Config, goals, vars []string, write_soong_ cmd.Environment.Set("WRITE_SOONG_VARIABLES", "true") } cmd.Environment.Set("DUMP_MANY_VARS", strings.Join(vars, " ")) + if tmpDir != "" { + cmd.Environment.Set("TMPDIR", tmpDir) + } cmd.Sandbox = dumpvarsSandbox output := bytes.Buffer{} cmd.Stdout = &output @@ -253,7 +254,7 @@ func runMakeProductConfig(ctx Context, config Config) { "BUILD_BROKEN_USES_BUILD_STATIC_LIBRARY", }, exportEnvVars...), BannerVars...) - make_vars, err := dumpMakeVars(ctx, config, config.Arguments(), allVars, true) + make_vars, err := dumpMakeVars(ctx, config, config.Arguments(), allVars, true, "") if err != nil { ctx.Fatalln("Error dumping make vars:", err) } diff --git a/ui/build/path.go b/ui/build/path.go index 7122927a6..6f5cf78b1 100644 --- a/ui/build/path.go +++ b/ui/build/path.go @@ -55,8 +55,9 @@ func parsePathDir(dir string) []string { } // A "lite" version of SetupPath used for dumpvars, or other places that need -// minimal overhead (but at the expense of logging). -func SetupLitePath(ctx Context, config Config) { +// minimal overhead (but at the expense of logging). If tmpDir is empty, the +// default TMPDIR is used from config. +func SetupLitePath(ctx Context, config Config, tmpDir string) { if config.pathReplaced { return } @@ -65,8 +66,11 @@ func SetupLitePath(ctx Context, config Config) { defer ctx.EndTrace() origPath, _ := config.Environment().Get("PATH") - myPath, _ := config.Environment().Get("TMPDIR") - myPath = filepath.Join(myPath, "path") + + if tmpDir == "" { + tmpDir, _ = config.Environment().Get("TMPDIR") + } + myPath := filepath.Join(tmpDir, "path") ensureEmptyDirectoriesExist(ctx, myPath) os.Setenv("PATH", origPath)