aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2018-01-04 08:13:57 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-04 08:15:35 -0800
commita495baef6d63cedb589024c34108d34559e36a78 (patch)
treecfa7fe42a729d1bd1ebe429b173b9a1c35289048 /src/main/java/com
parentf475101aaf046a897660fb737d0c444411a3bc15 (diff)
Extract LocalEnvProvider members to classes.
Create a PosixLocalEnvProvider and WindowsLocalEnvProvider class, with singleton instances for now. This refactoring should not change functionality, it's just a requirement for an upcoming change. That upcoming change is for these classes to respect the client environment's TMPDIR or TMP/TEMP envvars. See https://github.com/bazelbuild/bazel/issues/4376 Change-Id: I032bb6f18adf8af9e43e6bc543c09c58adae3863 PiperOrigin-RevId: 180799936
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/local/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/local/LocalEnvProvider.java30
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java41
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/local/WindowsLocalEnvProvider.java45
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextProvider.java6
9 files changed, 102 insertions, 41 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/BUILD b/src/main/java/com/google/devtools/build/lib/exec/local/BUILD
index a320ea95de..e6b708149d 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/BUILD
@@ -11,6 +11,8 @@ java_library(
srcs = [
"LocalEnvProvider.java",
"LocalSpawnRunner.java",
+ "PosixLocalEnvProvider.java",
+ "WindowsLocalEnvProvider.java",
],
data = [
"//src/main/tools:process-wrapper",
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/LocalEnvProvider.java b/src/main/java/com/google/devtools/build/lib/exec/local/LocalEnvProvider.java
index e0bda380c3..f235aa0ec4 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/LocalEnvProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/LocalEnvProvider.java
@@ -13,8 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.exec.local;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
import com.google.devtools.build.lib.vfs.Path;
import java.io.IOException;
import java.util.Map;
@@ -35,34 +33,6 @@ public interface LocalEnvProvider {
}
};
- public static final LocalEnvProvider ADD_TEMP_POSIX =
- new LocalEnvProvider() {
- @Override
- public Map<String, String> rewriteLocalEnv(
- Map<String, String> env, Path execRoot, Path tmpDir, String productName)
- throws IOException {
- ImmutableMap.Builder<String, String> result = ImmutableMap.builder();
- result.putAll(Maps.filterKeys(env, k -> !k.equals("TMPDIR")));
- result.put("TMPDIR", tmpDir.getPathString());
- return result.build();
- }
- };
-
- public static final LocalEnvProvider ADD_TEMP_WINDOWS =
- new LocalEnvProvider() {
- @Override
- public Map<String, String> rewriteLocalEnv(
- Map<String, String> env, Path execRoot, Path tmpDir, String productName)
- throws IOException {
- ImmutableMap.Builder<String, String> result = ImmutableMap.builder();
- result.putAll(Maps.filterKeys(env, k -> !k.equals("TMP") && !k.equals("TEMP")));
- String tmpPath = tmpDir.getPathString().replace('/', '\\');
- result.put("TMP", tmpPath);
- result.put("TEMP", tmpPath);
- return result.build();
- }
- };
-
/** Rewrites the environment if necessary. */
Map<String, String> rewriteLocalEnv(
Map<String, String> env, Path execRoot, Path tmpDir, String productName) throws IOException;
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java b/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java
new file mode 100644
index 0000000000..7673a6937a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java
@@ -0,0 +1,41 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.exec.local;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+import com.google.devtools.build.lib.vfs.Path;
+import java.io.IOException;
+import java.util.Map;
+
+/** {@link LocalEnvProvider} implementation for actions running on Unix-like platforms. */
+public final class PosixLocalEnvProvider implements LocalEnvProvider {
+
+ public static final PosixLocalEnvProvider INSTANCE = new PosixLocalEnvProvider();
+
+ /**
+ * Compute an environment map for local actions on Unix-like platforms (e.g. Linux, macOS).
+ *
+ * <p>Returns a map with the same keys and values as {@code env}. Overrides the value of TMPDIR
+ * (or adds it if not present in {@code env}) by {@code tmpDir}.
+ */
+ @Override
+ public Map<String, String> rewriteLocalEnv(
+ Map<String, String> env, Path execRoot, Path tmpDir, String productName) throws IOException {
+ ImmutableMap.Builder<String, String> result = ImmutableMap.builder();
+ result.putAll(Maps.filterKeys(env, k -> !k.equals("TMPDIR")));
+ result.put("TMPDIR", tmpDir.getPathString());
+ return result.build();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/WindowsLocalEnvProvider.java b/src/main/java/com/google/devtools/build/lib/exec/local/WindowsLocalEnvProvider.java
new file mode 100644
index 0000000000..661345a3e8
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/WindowsLocalEnvProvider.java
@@ -0,0 +1,45 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.exec.local;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+import com.google.devtools.build.lib.vfs.Path;
+import java.io.IOException;
+import java.util.Map;
+
+/** {@link LocalEnvProvider} implementation for actions running on Windows. */
+public final class WindowsLocalEnvProvider implements LocalEnvProvider {
+
+ public static final WindowsLocalEnvProvider INSTANCE = new WindowsLocalEnvProvider();
+
+ /**
+ * Compute an environment map for local actions on Windows.
+ *
+ * <p>Returns a map with the same keys and values as {@code env}. Overrides the value of TMP and
+ * TEMP (or adds them if not present in {@code env}) by {@code tmpDir}.
+ *
+ * <p>The values for TMP and TEMP will use backslashes as directory separators.
+ */
+ @Override
+ public Map<String, String> rewriteLocalEnv(
+ Map<String, String> env, Path execRoot, Path tmpDir, String productName) throws IOException {
+ ImmutableMap.Builder<String, String> result = ImmutableMap.builder();
+ result.putAll(Maps.filterKeys(env, k -> !k.equals("TMP") && !k.equals("TEMP")));
+ String tmpPath = tmpDir.getPathString().replace('/', '\\');
+ result.put("TMP", tmpPath);
+ result.put("TEMP", tmpPath);
+ return result.build();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java
index 4c727c0e69..3f1ec63026 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.actions.Spawns;
import com.google.devtools.build.lib.actions.UserExecException;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
+import com.google.devtools.build.lib.exec.local.PosixLocalEnvProvider;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.LinuxSandboxUtil;
import com.google.devtools.build.lib.shell.Command;
@@ -166,7 +167,7 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
this.inaccessibleHelperFile = inaccessibleHelperFile;
this.inaccessibleHelperDir = inaccessibleHelperDir;
this.timeoutKillDelay = timeoutKillDelay;
- this.localEnvProvider = LocalEnvProvider.ADD_TEMP_POSIX;
+ this.localEnvProvider = PosixLocalEnvProvider.INSTANCE;
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java
index 832760332b..8a82f4a177 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java
@@ -19,6 +19,7 @@ import com.google.devtools.build.lib.actions.Spawn;
import com.google.devtools.build.lib.actions.SpawnResult;
import com.google.devtools.build.lib.exec.apple.XCodeLocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
+import com.google.devtools.build.lib.exec.local.PosixLocalEnvProvider;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.ProcessWrapperUtil;
import com.google.devtools.build.lib.util.OS;
@@ -88,9 +89,7 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne
this.timeoutKillDelay = timeoutKillDelay;
this.processWrapper = ProcessWrapperUtil.getProcessWrapper(cmdEnv);
this.localEnvProvider =
- OS.getCurrent() == OS.DARWIN
- ? new XCodeLocalEnvProvider()
- : LocalEnvProvider.ADD_TEMP_POSIX;
+ OS.getCurrent() == OS.DARWIN ? new XCodeLocalEnvProvider() : PosixLocalEnvProvider.INSTANCE;
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java
index a520552b52..d4747c2243 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.exec.apple.XCodeLocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalExecutionOptions;
import com.google.devtools.build.lib.exec.local.LocalSpawnRunner;
+import com.google.devtools.build.lib.exec.local.PosixLocalEnvProvider;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.vfs.Path;
@@ -98,9 +99,7 @@ final class SandboxActionContextProvider extends ActionContextProvider {
LocalExecutionOptions localExecutionOptions =
env.getOptions().getOptions(LocalExecutionOptions.class);
LocalEnvProvider localEnvProvider =
- OS.getCurrent() == OS.DARWIN
- ? new XCodeLocalEnvProvider()
- : LocalEnvProvider.ADD_TEMP_POSIX;
+ OS.getCurrent() == OS.DARWIN ? new XCodeLocalEnvProvider() : PosixLocalEnvProvider.INSTANCE;
return
new LocalSpawnRunner(
env.getExecRoot(),
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
index 15afb0c4da..f5c45af117 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
@@ -32,6 +32,8 @@ import com.google.devtools.build.lib.exec.apple.XCodeLocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalExecutionOptions;
import com.google.devtools.build.lib.exec.local.LocalSpawnRunner;
+import com.google.devtools.build.lib.exec.local.PosixLocalEnvProvider;
+import com.google.devtools.build.lib.exec.local.WindowsLocalEnvProvider;
import com.google.devtools.build.lib.rules.cpp.IncludeScanningContext;
import com.google.devtools.build.lib.rules.cpp.SpawnGccStrategy;
import com.google.devtools.build.lib.rules.test.ExclusiveTestStrategy;
@@ -104,8 +106,8 @@ public class StandaloneActionContextProvider extends ActionContextProvider {
OS.getCurrent() == OS.DARWIN
? new XCodeLocalEnvProvider()
: (OS.getCurrent() == OS.WINDOWS
- ? LocalEnvProvider.ADD_TEMP_WINDOWS
- : LocalEnvProvider.ADD_TEMP_POSIX);
+ ? WindowsLocalEnvProvider.INSTANCE
+ : PosixLocalEnvProvider.INSTANCE);
return
new LocalSpawnRunner(
env.getExecRoot(),
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextProvider.java
index e6e9382fc6..5d48840b7e 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextProvider.java
@@ -24,6 +24,8 @@ import com.google.devtools.build.lib.exec.apple.XCodeLocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalExecutionOptions;
import com.google.devtools.build.lib.exec.local.LocalSpawnRunner;
+import com.google.devtools.build.lib.exec.local.PosixLocalEnvProvider;
+import com.google.devtools.build.lib.exec.local.WindowsLocalEnvProvider;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.util.OS;
@@ -58,8 +60,8 @@ final class WorkerActionContextProvider extends ActionContextProvider {
OS.getCurrent() == OS.DARWIN
? new XCodeLocalEnvProvider()
: (OS.getCurrent() == OS.WINDOWS
- ? LocalEnvProvider.ADD_TEMP_WINDOWS
- : LocalEnvProvider.ADD_TEMP_POSIX);
+ ? WindowsLocalEnvProvider.INSTANCE
+ : PosixLocalEnvProvider.INSTANCE);
return new LocalSpawnRunner(
env.getExecRoot(),
localExecutionOptions,