Split CppIncludeScanningContext out of CppCompileActionContext
Rename IncludeScanningContext to CppIncludeExtractionContext, which more closely matches its semantics.
PiperOrigin-RevId: 184974810
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java
index 9bf4f63..9b3e370 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java
@@ -24,7 +24,8 @@
import com.google.devtools.build.lib.exec.SpawnCache;
import com.google.devtools.build.lib.rules.android.WriteAdbArgsActionContext;
import com.google.devtools.build.lib.rules.cpp.CppCompileActionContext;
-import com.google.devtools.build.lib.rules.cpp.IncludeScanningContext;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeExtractionContext;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeScanningContext;
import java.util.Map;
import java.util.TreeMap;
@@ -73,7 +74,8 @@
public Multimap<Class<? extends ActionContext>, String> getActionContexts() {
return ImmutableMultimap.<Class<? extends ActionContext>, String>builder()
.put(CppCompileActionContext.class, "")
- .put(IncludeScanningContext.class, "")
+ .put(CppIncludeExtractionContext.class, "")
+ .put(CppIncludeScanningContext.class, "")
.put(FileWriteActionContext.class, "")
.put(WriteAdbArgsActionContext.class, "")
.put(SpawnCache.class, "")
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index c2804a7..15cf6a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -426,7 +426,7 @@
try {
initialResult =
actionExecutionContext
- .getContext(CppCompileActionContext.class)
+ .getContext(CppIncludeScanningContext.class)
.findAdditionalInputs(
this, actionExecutionContext, cppSemantics.getIncludeProcessing());
} catch (ExecException e) {
@@ -1120,8 +1120,8 @@
ensureCoverageNotesFilesExist();
// This is the .d file scanning part.
- IncludeScanningContext scanningContext =
- actionExecutionContext.getContext(IncludeScanningContext.class);
+ CppIncludeExtractionContext scanningContext =
+ actionExecutionContext.getContext(CppIncludeExtractionContext.class);
Path execRoot = actionExecutionContext.getExecRoot();
NestedSet<Artifact> discoveredInputs;
@@ -1271,7 +1271,7 @@
throws ActionExecutionException, InterruptedException {
Iterable<Artifact> scannedIncludes;
try {
- scannedIncludes = actionExecutionContext.getContext(CppCompileActionContext.class)
+ scannedIncludes = actionExecutionContext.getContext(CppIncludeScanningContext.class)
.findAdditionalInputs(this, actionExecutionContext, cppSemantics.getIncludeProcessing());
} catch (ExecException e) {
throw e.toActionExecutionException(this);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
index 5e890d6..804caf1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
@@ -16,11 +16,8 @@
import com.google.devtools.build.lib.actions.ActionContext;
import com.google.devtools.build.lib.actions.ActionContextMarker;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
-import com.google.devtools.build.lib.actions.ActionExecutionException;
-import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ExecException;
import java.io.IOException;
-import javax.annotation.Nullable;
/**
* Context for compiling plain C++.
@@ -38,18 +35,6 @@
}
/**
- * Does include scanning to find the list of files needed to execute the action.
- *
- * <p>Returns null if additional inputs will only be found during action execution, not before.
- */
- @Nullable
- Iterable<Artifact> findAdditionalInputs(
- CppCompileAction action,
- ActionExecutionContext actionExecutionContext,
- IncludeProcessing includeProcessing)
- throws ExecException, InterruptedException, ActionExecutionException;
-
- /**
* Executes the given action and return the reply of the executor.
*
* @return a CppCompileActionResult with information resulting from the action's execution
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanningContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeExtractionContext.java
similarity index 95%
rename from src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanningContext.java
rename to src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeExtractionContext.java
index 1305960..8b4b638 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanningContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeExtractionContext.java
@@ -24,7 +24,7 @@
/**
* Context for actions that do include scanning.
*/
-public interface IncludeScanningContext extends ActionContext {
+public interface CppIncludeExtractionContext extends ActionContext {
/**
* Extracts the set of include files from a source file.
*
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeScanningContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeScanningContext.java
new file mode 100644
index 0000000..c67f0f8
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeScanningContext.java
@@ -0,0 +1,40 @@
+// 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.rules.cpp;
+
+import com.google.devtools.build.lib.actions.ActionContext;
+import com.google.devtools.build.lib.actions.ActionContextMarker;
+import com.google.devtools.build.lib.actions.ActionExecutionContext;
+import com.google.devtools.build.lib.actions.ActionExecutionException;
+import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.ExecException;
+import javax.annotation.Nullable;
+
+/**
+ * Context for include scanning.
+ */
+@ActionContextMarker(name = "IncludeScanning")
+public interface CppIncludeScanningContext extends ActionContext {
+ /**
+ * Does include scanning to find the list of files needed to execute the action.
+ *
+ * <p>Returns null if additional inputs will only be found during action execution, not before.
+ */
+ @Nullable
+ Iterable<Artifact> findAdditionalInputs(
+ CppCompileAction action,
+ ActionExecutionContext actionExecutionContext,
+ IncludeProcessing includeProcessing)
+ throws ExecException, InterruptedException, ActionExecutionException;
+}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
index c76ef3d..aa69b13 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
@@ -68,8 +68,8 @@
@Override
public ActionResult execute(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException, InterruptedException {
- IncludeScanningContext context =
- actionExecutionContext.getContext(IncludeScanningContext.class);
+ CppIncludeExtractionContext context =
+ actionExecutionContext.getContext(CppIncludeExtractionContext.class);
try {
context.extractIncludes(actionExecutionContext, this, getPrimaryInput(),
getPrimaryOutput());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 102b895..acdaafd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -145,8 +145,8 @@
actionExecutionContext.getVerboseFailures(),
this);
}
- IncludeScanningContext scanningContext =
- actionExecutionContext.getContext(IncludeScanningContext.class);
+ CppIncludeExtractionContext scanningContext =
+ actionExecutionContext.getContext(CppIncludeExtractionContext.class);
Path execRoot = actionExecutionContext.getExecRoot();
NestedSet<Artifact> discoveredInputs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
index 77966e0..d0f68c9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
@@ -37,15 +37,6 @@
)
public class SpawnGccStrategy implements CppCompileActionContext {
@Override
- public Iterable<Artifact> findAdditionalInputs(
- CppCompileAction action,
- ActionExecutionContext actionExecutionContext,
- IncludeProcessing includeProcessing)
- throws ExecException, InterruptedException {
- return null;
- }
-
- @Override
public CppCompileActionResult execWithReply(
CppCompileAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
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 1181cb7..0c0775b 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
@@ -17,8 +17,10 @@
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.ActionContext;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
+import com.google.devtools.build.lib.actions.ActionExecutionException;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ArtifactResolver;
+import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.ExecutionStrategy;
import com.google.devtools.build.lib.actions.ResourceManager;
import com.google.devtools.build.lib.analysis.test.TestActionContext;
@@ -34,7 +36,10 @@
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.CppCompileAction;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeExtractionContext;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeScanningContext;
+import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
import com.google.devtools.build.lib.rules.cpp.SpawnGccStrategy;
import com.google.devtools.build.lib.rules.test.ExclusiveTestStrategy;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
@@ -42,6 +47,7 @@
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import java.io.IOException;
+import javax.annotation.Nullable;
/**
* Provide a standalone, local execution context.
@@ -49,11 +55,11 @@
public class StandaloneActionContextProvider extends ActionContextProvider {
/**
- * a IncludeScanningContext that does nothing. Since local execution does not need to
- * discover inclusion in advance, we do not need include scanning.
+ * An IncludeExtractionContext that does nothing. Since local execution does not need to discover
+ * inclusion in advance, we do not need include scanning.
*/
- @ExecutionStrategy(contextType = IncludeScanningContext.class)
- class DummyIncludeScanningContext implements IncludeScanningContext {
+ @ExecutionStrategy(contextType = CppIncludeExtractionContext.class)
+ class DummyCppIncludeExtractionContext implements CppIncludeExtractionContext {
@Override
public void extractIncludes(
ActionExecutionContext actionExecutionContext,
@@ -70,6 +76,23 @@
}
}
+ /**
+ * An IncludeScanningContext that does nothing. Since local execution does not need to discover
+ * inclusion in advance, we do not need include scanning.
+ */
+ @ExecutionStrategy(contextType = CppIncludeScanningContext.class)
+ static class DummyCppIncludeScanningContext implements CppIncludeScanningContext {
+ @Override
+ @Nullable
+ public Iterable<Artifact> findAdditionalInputs(
+ CppCompileAction action,
+ ActionExecutionContext actionExecutionContext,
+ IncludeProcessing includeProcessing)
+ throws ExecException, InterruptedException, ActionExecutionException {
+ return null;
+ }
+ }
+
private final CommandEnvironment env;
public StandaloneActionContextProvider(CommandEnvironment env) {
@@ -92,7 +115,8 @@
// last one from strategies list will be used
return ImmutableList.of(
new StandaloneSpawnStrategy(env.getExecRoot(), createLocalRunner(env)),
- new DummyIncludeScanningContext(),
+ new DummyCppIncludeExtractionContext(),
+ new DummyCppIncludeScanningContext(),
new SpawnGccStrategy(),
testStrategy,
new ExclusiveTestStrategy(testStrategy),