Update IncludeScanningModule to use registry methods instead of executorInit where possible.
Part of the roll-forward of https://github.com/bazelbuild/bazel/commit/37aeabcd39fe326d1c4e55693d8d207f9f7ac6c4.
PiperOrigin-RevId: 303945456
diff --git a/src/main/java/com/google/devtools/build/lib/includescanning/IncludeScanningModule.java b/src/main/java/com/google/devtools/build/lib/includescanning/IncludeScanningModule.java
index 75f08a4..6adcfc8 100644
--- a/src/main/java/com/google/devtools/build/lib/includescanning/IncludeScanningModule.java
+++ b/src/main/java/com/google/devtools/build/lib/includescanning/IncludeScanningModule.java
@@ -37,6 +37,7 @@
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadHostile;
import com.google.devtools.build.lib.exec.ExecutorBuilder;
import com.google.devtools.build.lib.exec.ExecutorLifecycleListener;
+import com.google.devtools.build.lib.exec.ModuleActionContextRegistry;
import com.google.devtools.build.lib.includescanning.IncludeParser.Inclusion;
import com.google.devtools.build.lib.rules.cpp.CppIncludeExtractionContext;
import com.google.devtools.build.lib.rules.cpp.CppIncludeScanningContext;
@@ -76,6 +77,7 @@
private final MutableSupplier<SpawnIncludeScanner> spawnIncludeScannerSupplier =
new MutableSupplier<>();
private final MutableSupplier<ArtifactFactory> artifactFactory = new MutableSupplier<>();
+ private IncludeScannerLifecycleManager lifecycleManager;
protected PathFragment getIncludeHintsFilename() {
return INCLUDE_HINTS_FILENAME;
@@ -83,18 +85,26 @@
@Override
@ThreadHostile
+ public void registerActionContexts(
+ ModuleActionContextRegistry.Builder registryBuilder,
+ CommandEnvironment env,
+ BuildRequest buildRequest) {
+ registryBuilder
+ .register(CppIncludeExtractionContext.class, new CppIncludeExtractionContextImpl(env))
+ .register(SwigIncludeScanningContext.class, lifecycleManager.getSwigActionContext())
+ .register(CppIncludeScanningContext.class, lifecycleManager.getCppActionContext());
+ registryBuilder
+ .restrictTo(CppIncludeExtractionContext.class, "")
+ .restrictTo(SwigIncludeScanningContext.class, "")
+ .restrictTo(CppIncludeScanningContext.class, "");
+ }
+
+ @Override
+ @ThreadHostile
public void executorInit(CommandEnvironment env, BuildRequest request, ExecutorBuilder builder) {
- IncludeScannerLifecycleManager lifecycleManager =
+ lifecycleManager =
new IncludeScannerLifecycleManager(env, request, spawnIncludeScannerSupplier);
- builder
- .addExecutorLifecycleListener(lifecycleManager)
- .addActionContext(
- CppIncludeExtractionContext.class, new CppIncludeExtractionContextImpl(env))
- .addActionContext(SwigIncludeScanningContext.class, lifecycleManager.getSwigActionContext())
- .addActionContext(CppIncludeScanningContext.class, lifecycleManager.getCppActionContext())
- .addStrategyByContext(CppIncludeExtractionContext.class, "")
- .addStrategyByContext(SwigIncludeScanningContext.class, "")
- .addStrategyByContext(CppIncludeScanningContext.class, "");
+ builder.addExecutorLifecycleListener(lifecycleManager);
}
@Override
@@ -113,6 +123,7 @@
public void afterCommand() {
spawnIncludeScannerSupplier.set(null);
artifactFactory.set(null);
+ lifecycleManager = null;
}
@Override