Split sandbox code from standalone module.
--
MOS_MIGRATED_REVID=97126283
diff --git a/src/main/java/BUILD b/src/main/java/BUILD
index 94e8ae0..7c547f4 100644
--- a/src/main/java/BUILD
+++ b/src/main/java/BUILD
@@ -279,17 +279,82 @@
)
java_library(
+ name = "buildtool-runtime",
+ srcs = glob([
+ "com/google/devtools/build/lib/buildtool/**/*.java",
+ "com/google/devtools/build/lib/runtime/**/*.java",
+ ]),
+ deps = [
+ ":actions",
+ ":analysis-exec-rules-skyframe",
+ ":collect",
+ ":common",
+ ":concurrent",
+ ":docgen",
+ ":events",
+ ":options",
+ ":packages",
+ ":query2",
+ ":server",
+ ":shell",
+ ":skyframe-base",
+ ":vfs",
+ "//src/main/protobuf:proto_build",
+ "//src/main/protobuf:proto_test_status",
+ "//third_party:guava",
+ ],
+)
+
+java_library(
+ name = "docgen",
+ srcs = glob([
+ "com/google/devtools/build/docgen/**/*.java",
+ ]),
+ deps = [
+ ":analysis-exec-rules-skyframe",
+ ":common",
+ ":packages",
+ ":vfs",
+ "//third_party:apache_velocity",
+ "//third_party:guava",
+ ],
+)
+
+java_library(
+ name = "server",
+ srcs = glob([
+ "com/google/devtools/build/lib/server/**/*.java",
+ ]),
+ deps = [
+ ":unix",
+ ":vfs",
+ "//third_party:guava",
+ ],
+)
+
+java_library(
+ name = "webstatusserver",
+ srcs = glob([
+ "com/google/devtools/build/lib/webstatusserver/**/*.java",
+ ]),
+ deps = [
+ ":analysis-exec-rules-skyframe",
+ ":buildtool-runtime",
+ ":events",
+ ":options",
+ ":packages",
+ ":vfs",
+ "//src/main/protobuf:proto_test_status",
+ "//third_party:gson",
+ "//third_party:guava",
+ ],
+)
+
+java_library(
name = "bazel-core",
srcs = glob(
[
- "com/google/devtools/build/docgen/**/*.java",
"com/google/devtools/build/lib/bazel/**/*.java",
- "com/google/devtools/build/lib/buildtool/**/*.java",
- "com/google/devtools/build/lib/runtime/**/*.java",
- "com/google/devtools/build/lib/server/**/*.java",
- "com/google/devtools/build/lib/standalone/*.java",
- "com/google/devtools/build/lib/webstatusserver/**/*.java",
- "com/google/devtools/build/lib/worker/**",
],
exclude = [
"com/google/devtools/build/lib/bazel/repository/MavenConnector.java",
@@ -322,6 +387,7 @@
deps = [
":actions",
":analysis-exec-rules-skyframe",
+ ":buildtool-runtime",
":collect",
":common",
":concurrent",
@@ -336,7 +402,11 @@
":skyframe-base",
":unix",
":vfs",
+ ":webstatusserver",
"//src/java_tools/singlejar:zip",
+ "//src/main/java/com/google/devtools/build/lib/sandbox",
+ "//src/main/java/com/google/devtools/build/lib/standalone",
+ "//src/main/java/com/google/devtools/build/lib/worker",
"//src/main/protobuf:proto_build",
"//src/main/protobuf:proto_crosstool_config",
"//src/main/protobuf:proto_extra_actions_base",
@@ -346,7 +416,6 @@
"//third_party:apache_commons_pool2",
"//third_party:apache_velocity",
"//third_party:auto_value",
- "//third_party:gson",
"//third_party:guava",
"//third_party:joda_time",
"//third_party:jsr305",
@@ -398,7 +467,11 @@
filegroup(
name = "srcs",
- srcs = glob(["**"]),
+ srcs = glob(["**"]) + [
+ "//src/main/java/com/google/devtools/build/lib/sandbox:srcs",
+ "//src/main/java/com/google/devtools/build/lib/standalone:srcs",
+ "//src/main/java/com/google/devtools/build/lib/worker:srcs",
+ ],
visibility = ["//src/test/shell/bazel:__pkg__"],
)
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelMain.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelMain.java
index 318e6ac..958c7ea 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BazelMain.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelMain.java
@@ -36,6 +36,7 @@
com.google.devtools.build.lib.bazel.BazelDiffAwarenessModule.class,
com.google.devtools.build.lib.bazel.BazelRepositoryModule.class,
com.google.devtools.build.lib.bazel.rules.BazelRulesModule.class,
+ com.google.devtools.build.lib.sandbox.SandboxModule.class,
com.google.devtools.build.lib.standalone.StandaloneModule.class,
com.google.devtools.build.lib.runtime.BuildSummaryStatsModule.class,
com.google.devtools.build.lib.webstatusserver.WebStatusServerModule.class,
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/BUILD b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
new file mode 100644
index 0000000..9b549e9
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
@@ -0,0 +1,27 @@
+package(
+ default_visibility = [
+ "//src:__subpackages__",
+ ],
+)
+
+java_library(
+ name = "sandbox",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java:actions",
+ "//src/main/java:analysis-exec-rules-skyframe",
+ "//src/main/java:buildtool-runtime",
+ "//src/main/java:common",
+ "//src/main/java:packages",
+ "//src/main/java:shell",
+ "//src/main/java:unix",
+ "//src/main/java:vfs",
+ "//third_party:guava",
+ ],
+)
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+ visibility = ["//src/main/java:__pkg__"],
+)
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/LinuxSandboxedStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java
similarity index 99%
rename from src/main/java/com/google/devtools/build/lib/standalone/LinuxSandboxedStrategy.java
rename to src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java
index 81c5692..4f7557c 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/LinuxSandboxedStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java
@@ -11,7 +11,7 @@
// 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.standalone;
+package com.google.devtools.build.lib.sandbox;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/NamespaceSandboxRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java
similarity index 99%
rename from src/main/java/com/google/devtools/build/lib/standalone/NamespaceSandboxRunner.java
rename to src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java
index 523fb7e..7720b78 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/NamespaceSandboxRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package com.google.devtools.build.lib.standalone;
+package com.google.devtools.build.lib.sandbox;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java
similarity index 67%
copy from src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java
copy to src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java
index b975a5e..657fb8f 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java
@@ -1,4 +1,4 @@
-// Copyright 2014 Google Inc. All rights reserved.
+// Copyright 2015 Google Inc. 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.
@@ -11,20 +11,22 @@
// 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.standalone;
+package com.google.devtools.build.lib.sandbox;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableMap.Builder;
import com.google.devtools.build.lib.actions.ActionContextConsumer;
import com.google.devtools.build.lib.actions.Executor.ActionContext;
import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.util.OS;
import java.util.Map;
/**
- * {@link ActionContextConsumer} that requests the action contexts necessary for standalone
+ * {@link ActionContextConsumer} that requests the action contexts necessary for sandboxed
* execution.
*/
-public class StandaloneContextConsumer implements ActionContextConsumer {
+public class SandboxActionContextConsumer implements ActionContextConsumer {
@Override
public Map<String, String> getSpawnActionContexts() {
@@ -33,9 +35,13 @@
@Override
public Map<Class<? extends ActionContext>, String> getActionContexts() {
- return ImmutableMap.<Class<? extends ActionContext>, String>builder()
- .put(SpawnActionContext.class, "standalone")
- .build();
+ Builder<Class<? extends ActionContext>, String> contexts = ImmutableMap.builder();
+
+ if (OS.getCurrent() == OS.LINUX) {
+ contexts.put(SpawnActionContext.class, "sandboxed");
+ }
+
+ return contexts.build();
}
}
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
new file mode 100644
index 0000000..69b13af
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java
@@ -0,0 +1,49 @@
+// Copyright 2015 Google Inc. 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.sandbox;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableList.Builder;
+import com.google.devtools.build.lib.actions.ActionContextProvider;
+import com.google.devtools.build.lib.actions.Executor.ActionContext;
+import com.google.devtools.build.lib.buildtool.BuildRequest;
+import com.google.devtools.build.lib.exec.ExecutionOptions;
+import com.google.devtools.build.lib.runtime.BlazeRuntime;
+import com.google.devtools.build.lib.util.OS;
+
+/**
+ * Provides the sandboxed spawn strategy.
+ */
+public class SandboxActionContextProvider extends ActionContextProvider {
+
+ @SuppressWarnings("unchecked")
+ private final ImmutableList<ActionContext> strategies;
+
+ public SandboxActionContextProvider(BlazeRuntime runtime, BuildRequest buildRequest) {
+ boolean verboseFailures = buildRequest.getOptions(ExecutionOptions.class).verboseFailures;
+ Builder<ActionContext> strategies = ImmutableList.builder();
+
+ if (OS.getCurrent() == OS.LINUX) {
+ strategies.add(new LinuxSandboxedStrategy(runtime.getDirectories(), verboseFailures));
+ }
+
+ this.strategies = strategies.build();
+ }
+
+ @Override
+ public Iterable<ActionContext> getActionContexts() {
+ return strategies;
+ }
+
+}
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
new file mode 100644
index 0000000..65d0c15
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
@@ -0,0 +1,54 @@
+// Copyright 2015 Google Inc. 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.sandbox;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.eventbus.Subscribe;
+import com.google.devtools.build.lib.actions.ActionContextConsumer;
+import com.google.devtools.build.lib.actions.ActionContextProvider;
+import com.google.devtools.build.lib.buildtool.BuildRequest;
+import com.google.devtools.build.lib.buildtool.buildevent.BuildStartingEvent;
+import com.google.devtools.build.lib.runtime.BlazeModule;
+import com.google.devtools.build.lib.runtime.BlazeRuntime;
+import com.google.devtools.build.lib.runtime.Command;
+
+/**
+ * This module provides the Sandbox spawn strategy.
+ */
+public class SandboxModule extends BlazeModule {
+ private BuildRequest buildRequest;
+ private BlazeRuntime runtime;
+
+ @Override
+ public Iterable<ActionContextProvider> getActionContextProviders() {
+ return ImmutableList.<ActionContextProvider>of(
+ new SandboxActionContextProvider(runtime, buildRequest));
+ }
+
+ @Override
+ public Iterable<ActionContextConsumer> getActionContextConsumers() {
+ return ImmutableList.<ActionContextConsumer>of(new SandboxActionContextConsumer());
+ }
+
+ @Override
+ public void beforeCommand(BlazeRuntime runtime, Command command) {
+ this.runtime = runtime;
+ runtime.getEventBus().register(this);
+ }
+
+ @Subscribe
+ public void buildStarting(BuildStartingEvent event) {
+ buildRequest = event.getRequest();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/BUILD b/src/main/java/com/google/devtools/build/lib/standalone/BUILD
new file mode 100644
index 0000000..3653e06
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/standalone/BUILD
@@ -0,0 +1,26 @@
+package(
+ default_visibility = [
+ "//src:__subpackages__",
+ ],
+)
+
+java_library(
+ name = "standalone",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java:actions",
+ "//src/main/java:analysis-exec-rules-skyframe",
+ "//src/main/java:buildtool-runtime",
+ "//src/main/java:common",
+ "//src/main/java:packages",
+ "//src/main/java:shell",
+ "//src/main/java:vfs",
+ "//third_party:guava",
+ ],
+)
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+ visibility = ["//src/main/java:__pkg__"],
+)
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextConsumer.java
similarity index 94%
rename from src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java
rename to src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextConsumer.java
index b975a5e..4d87f12 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextConsumer.java
@@ -24,7 +24,7 @@
* {@link ActionContextConsumer} that requests the action contexts necessary for standalone
* execution.
*/
-public class StandaloneContextConsumer implements ActionContextConsumer {
+public class StandaloneActionContextConsumer implements ActionContextConsumer {
@Override
public Map<String, String> getSpawnActionContexts() {
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
similarity index 82%
rename from src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java
rename to src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
index 76c2655..7fe35f6 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
@@ -32,7 +32,6 @@
import com.google.devtools.build.lib.rules.test.StandaloneTestStrategy;
import com.google.devtools.build.lib.rules.test.TestActionContext;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
-import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import java.io.IOException;
@@ -40,7 +39,7 @@
/**
* Provide a standalone, local execution context.
*/
-public class StandaloneContextProvider extends ActionContextProvider {
+public class StandaloneActionContextProvider extends ActionContextProvider {
/**
* a IncludeScanningContext that does nothing. Since local execution does not need to
@@ -61,15 +60,12 @@
}
}
- @SuppressWarnings("unchecked")
- private final ActionContext standaloneSpawnStrategy;
private final ImmutableList<ActionContext> strategies;
private final BlazeRuntime runtime;
- public StandaloneContextProvider(BlazeRuntime runtime, BuildRequest buildRequest) {
+ public StandaloneActionContextProvider(BlazeRuntime runtime, BuildRequest buildRequest) {
boolean verboseFailures = buildRequest.getOptions(ExecutionOptions.class).verboseFailures;
- standaloneSpawnStrategy = new StandaloneSpawnStrategy(runtime.getExecRoot(), verboseFailures);
this.runtime = runtime;
TestActionContext testStrategy = new StandaloneTestStrategy(buildRequest,
@@ -77,19 +73,12 @@
runtime.getWorkspace());
Builder<ActionContext> strategiesBuilder = ImmutableList.builder();
- // order of strategies passed to builder is significant - when there are many strategies that
+
+ // Order of strategies passed to builder is significant - when there are many strategies that
// could potentially be used and a spawnActionContext doesn't specify which one it wants, the
// last one from strategies list will be used
-
- // put sandboxed strategy first, as we don't want it by default
- if (OS.getCurrent() == OS.LINUX) {
- LinuxSandboxedStrategy sandboxedLinuxStrategy =
- new LinuxSandboxedStrategy(runtime.getDirectories(), verboseFailures);
- strategiesBuilder.add(sandboxedLinuxStrategy);
- }
-
strategiesBuilder.add(
- standaloneSpawnStrategy,
+ new StandaloneSpawnStrategy(runtime.getExecRoot(), verboseFailures),
new DummyIncludeScanningContext(),
new LocalLinkStrategy(),
testStrategy,
@@ -104,4 +93,5 @@
public Iterable<ActionContext> getActionContexts() {
return strategies;
}
+
}
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java
index 02d6a3a..32d4f42 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java
@@ -27,25 +27,18 @@
* StandaloneModule provides pluggable functionality for blaze.
*/
public class StandaloneModule extends BlazeModule {
- private final ActionContextConsumer actionContextConsumer = new StandaloneContextConsumer();
private BuildRequest buildRequest;
private BlazeRuntime runtime;
- /**
- * Returns the action context provider the module contributes to Blaze, if any.
- */
@Override
public Iterable<ActionContextProvider> getActionContextProviders() {
return ImmutableList.<ActionContextProvider>of(
- new StandaloneContextProvider(runtime, buildRequest));
+ new StandaloneActionContextProvider(runtime, buildRequest));
}
- /**
- * Returns the action context consumer the module contributes to Blaze, if any.
- */
@Override
public Iterable<ActionContextConsumer> getActionContextConsumers() {
- return ImmutableList.of(actionContextConsumer);
+ return ImmutableList.<ActionContextConsumer>of(new StandaloneActionContextConsumer());
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/worker/BUILD b/src/main/java/com/google/devtools/build/lib/worker/BUILD
new file mode 100644
index 0000000..aee455c
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/worker/BUILD
@@ -0,0 +1,28 @@
+package(
+ default_visibility = [
+ "//src:__subpackages__",
+ ],
+)
+
+java_library(
+ name = "worker",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java:actions",
+ "//src/main/java:buildtool-runtime",
+ "//src/main/java:common",
+ "//src/main/java:concurrent",
+ "//src/main/java:options",
+ "//src/main/java:vfs",
+ "//src/main/protobuf:proto_worker_protocol",
+ "//third_party:apache_commons_pool2",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+ visibility = ["//src/main/java:__pkg__"],
+)
diff --git a/src/main/java/com/google/devtools/build/workspace/BUILD b/src/main/java/com/google/devtools/build/workspace/BUILD
index 57d7171..d1021b5 100644
--- a/src/main/java/com/google/devtools/build/workspace/BUILD
+++ b/src/main/java/com/google/devtools/build/workspace/BUILD
@@ -13,6 +13,7 @@
deps = [
"//src/main/java:analysis-exec-rules-skyframe",
"//src/main/java:bazel-core",
+ "//src/main/java:buildtool-runtime",
"//src/main/java:events",
"//src/main/java:options",
"//src/main/java:packages",
diff --git a/src/test/java/BUILD b/src/test/java/BUILD
index 77ea1e8..1ebe65c 100644
--- a/src/test/java/BUILD
+++ b/src/test/java/BUILD
@@ -241,6 +241,7 @@
"//src/main/java:actions",
"//src/main/java:analysis-exec-rules-skyframe",
"//src/main/java:bazel-core",
+ "//src/main/java:buildtool-runtime",
"//src/main/java:collect",
"//src/main/java:concurrent",
"//src/main/java:events",