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