From 9543d19b4b2c04e501e1e84f5d42e05af109535f Mon Sep 17 00:00:00 2001 From: "PODISHETTY KUMAR (xWF)" Date: Mon, 2 Sep 2024 03:54:36 +0000 Subject: [PATCH] Revert "Clean environment variables to account for sandbox work directory." This reverts commit 0af8ea14fc950d1121260dc6c02fa9a5b0ceb77d. Reason for revert: Change-Id: Iafba28897ad27df67ef8ae8904454196c482216d --- ui/build/config.go | 55 +++++++++++---------------------------- ui/build/path.go | 18 ------------- ui/build/sandbox_linux.go | 13 ++------- 3 files changed, 17 insertions(+), 69 deletions(-) diff --git a/ui/build/config.go b/ui/build/config.go index 90b98f560..dfe0dfe96 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -214,10 +214,6 @@ func NewConfig(ctx Context, args ...string) Config { sandboxConfig: &SandboxConfig{}, ninjaWeightListSource: DEFAULT, } - wd, err := os.Getwd() - if err != nil { - ctx.Fatalln("Failed to get working directory:", err) - } // Skip soong tests by default on Linux if runtime.GOOS == "linux" { @@ -249,13 +245,17 @@ func NewConfig(ctx Context, args ...string) Config { // Make sure OUT_DIR is set appropriately if outDir, ok := ret.environ.Get("OUT_DIR"); ok { - ret.environ.Set("OUT_DIR", ret.sandboxPath(wd, filepath.Clean(outDir))) + ret.environ.Set("OUT_DIR", filepath.Clean(outDir)) } else { outDir := "out" if baseDir, ok := ret.environ.Get("OUT_DIR_COMMON_BASE"); ok { - outDir = filepath.Join(baseDir, filepath.Base(wd)) + if wd, err := os.Getwd(); err != nil { + ctx.Fatalln("Failed to get working directory:", err) + } else { + outDir = filepath.Join(baseDir, filepath.Base(wd)) + } } - ret.environ.Set("OUT_DIR", ret.sandboxPath(wd, outDir)) + ret.environ.Set("OUT_DIR", outDir) } // loadEnvConfig needs to know what the OUT_DIR is, so it should @@ -350,9 +350,6 @@ func NewConfig(ctx Context, args ...string) Config { // Use config.useN2 instead. "SOONG_USE_N2", - - // Leaks usernames into environment. - "HOME", ) if ret.UseGoma() || ret.ForceUseGoma() { @@ -364,12 +361,12 @@ func NewConfig(ctx Context, args ...string) Config { ret.environ.Set("PYTHONDONTWRITEBYTECODE", "1") tmpDir := absPath(ctx, ret.TempDir()) - ret.environ.Set("TMPDIR", ret.sandboxPath(wd, tmpDir)) + ret.environ.Set("TMPDIR", tmpDir) // Always set ASAN_SYMBOLIZER_PATH so that ASAN-based tools can symbolize any crashes symbolizerPath := filepath.Join("prebuilts/clang/host", ret.HostPrebuiltTag(), "llvm-binutils-stable/llvm-symbolizer") - ret.environ.Set("ASAN_SYMBOLIZER_PATH", ret.sandboxPath(wd, absPath(ctx, symbolizerPath))) + ret.environ.Set("ASAN_SYMBOLIZER_PATH", absPath(ctx, symbolizerPath)) // Precondition: the current directory is the top of the source tree checkTopDir(ctx) @@ -423,18 +420,15 @@ func NewConfig(ctx Context, args ...string) Config { ret.configureLocale(ctx) - newPath := []string{ret.sandboxPath(wd, filepath.Join(absJavaHome, "bin"))} + newPath := []string{filepath.Join(absJavaHome, "bin")} if path, ok := ret.environ.Get("PATH"); ok && path != "" { - entries := strings.Split(path, string(filepath.ListSeparator)) - for _, ent := range entries { - newPath = append(newPath, ret.sandboxPath(wd, ent)) - } + newPath = append(newPath, path) } ret.environ.Unset("OVERRIDE_ANDROID_JAVA_HOME") - ret.environ.Set("JAVA_HOME", ret.sandboxPath(wd, absJavaHome)) - ret.environ.Set("ANDROID_JAVA_HOME", ret.sandboxPath(wd, javaHome)) - ret.environ.Set("ANDROID_JAVA8_HOME", ret.sandboxPath(wd, java8Home)) + ret.environ.Set("JAVA_HOME", absJavaHome) + ret.environ.Set("ANDROID_JAVA_HOME", javaHome) + ret.environ.Set("ANDROID_JAVA8_HOME", java8Home) ret.environ.Set("PATH", strings.Join(newPath, string(filepath.ListSeparator))) // b/286885495, https://bugzilla.redhat.com/show_bug.cgi?id=2227130: some versions of Fedora include patches @@ -450,7 +444,7 @@ func NewConfig(ctx Context, args ...string) Config { ret.buildDateTime = strconv.FormatInt(time.Now().Unix(), 10) } - ret.environ.Set("BUILD_DATETIME_FILE", ret.sandboxPath(wd, buildDateTimeFile)) + ret.environ.Set("BUILD_DATETIME_FILE", buildDateTimeFile) if _, ok := ret.environ.Get("BUILD_USERNAME"); !ok { username := "unknown" @@ -461,7 +455,6 @@ func NewConfig(ctx Context, args ...string) Config { } ret.environ.Set("BUILD_USERNAME", username) } - ret.environ.Set("PWD", ret.sandboxPath(wd, wd)) if ret.UseRBE() { for k, v := range getRBEVars(ctx, Config{ret}) { @@ -1303,19 +1296,6 @@ func (c *configImpl) UseABFS() bool { return err == nil } -func (c *configImpl) sandboxPath(base, in string) string { - if !c.UseABFS() { - return in - } - - rel, err := filepath.Rel(base, in) - if err != nil { - return in - } - - return filepath.Join(abfsSrcDir, rel) -} - func (c *configImpl) UseRBE() bool { // These alternate modes of running Soong do not use RBE / reclient. if c.Queryview() || c.JsonModuleGraph() { @@ -1736,11 +1716,6 @@ func (c *configImpl) EmptyNinjaFile() bool { } func (c *configImpl) SkipMetricsUpload() bool { - // b/362625275 - Metrics upload sometimes prevents abfs unmount - if c.UseABFS() { - return true - } - return c.skipMetricsUpload } diff --git a/ui/build/path.go b/ui/build/path.go index 075bf2eb7..51ebff117 100644 --- a/ui/build/path.go +++ b/ui/build/path.go @@ -57,22 +57,6 @@ func parsePathDir(dir string) []string { return ret } -func updatePathForSandbox(config Config) { - wd, err := os.Getwd() - if err != nil { - return - } - - var newPath []string - if path, ok := config.Environment().Get("PATH"); ok && path != "" { - entries := strings.Split(path, string(filepath.ListSeparator)) - for _, ent := range entries { - newPath = append(newPath, config.sandboxPath(wd, ent)) - } - } - config.Environment().Set("PATH", strings.Join(newPath, string(filepath.ListSeparator))) -} - // SetupLitePath is the "lite" version of SetupPath used for dumpvars, or other // places that does not need the full logging capabilities of path_interposer, // wants the minimal performance overhead, and still get the benefits of $PATH @@ -137,7 +121,6 @@ func SetupLitePath(ctx Context, config Config, tmpDir string) { // Set $PATH to be the directories containing the host tool symlinks, and // the prebuilts directory for the current host OS. config.Environment().Set("PATH", myPath) - updatePathForSandbox(config) config.pathReplaced = true } @@ -282,6 +265,5 @@ func SetupPath(ctx Context, config Config) { // Replace the $PATH variable with the path_interposer symlinks, and // checked-in prebuilts. config.Environment().Set("PATH", myPath) - updatePathForSandbox(config) config.pathReplaced = true } diff --git a/ui/build/sandbox_linux.go b/ui/build/sandbox_linux.go index 6c460000d..d9ca85417 100644 --- a/ui/build/sandbox_linux.go +++ b/ui/build/sandbox_linux.go @@ -187,17 +187,8 @@ func (c *Cmd) readMountArgs() []string { return args } -func (c *Cmd) workDir() string { - if !c.config.UseABFS() { - wd, _ := os.Getwd() - return wd - } - - return abfsSrcDir -} - func (c *Cmd) wrapSandbox() { - wd := c.workDir() + wd, _ := os.Getwd() var sandboxArgs []string sandboxArgs = append(sandboxArgs, @@ -235,7 +226,7 @@ func (c *Cmd) wrapSandbox() { ) sandboxArgs = append(sandboxArgs, - c.readMountArgs()..., + c.readMountArgs()... ) sandboxArgs = append(sandboxArgs,