From 08d025fef5c5864a053e589f6b7f0672bdcc480e Mon Sep 17 00:00:00 2001 From: ulfjack Date: Fri, 9 Feb 2018 07:47:06 -0800 Subject: Split the include scanning dummy classes into their own parent class PiperOrigin-RevId: 185140903 --- .../DummyIncludeScanningContextProvider.java | 88 ++++++++++++++++++++++ .../StandaloneActionContextProvider.java | 56 -------------- .../build/lib/standalone/StandaloneModule.java | 1 + 3 files changed, 89 insertions(+), 56 deletions(-) create mode 100644 src/main/java/com/google/devtools/build/lib/standalone/DummyIncludeScanningContextProvider.java (limited to 'src/main/java/com/google/devtools') diff --git a/src/main/java/com/google/devtools/build/lib/standalone/DummyIncludeScanningContextProvider.java b/src/main/java/com/google/devtools/build/lib/standalone/DummyIncludeScanningContextProvider.java new file mode 100644 index 0000000000..2c92f75c9e --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/standalone/DummyIncludeScanningContextProvider.java @@ -0,0 +1,88 @@ +// 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.standalone; + +import com.google.common.collect.ImmutableList; +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.exec.ActionContextProvider; +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.runtime.CommandEnvironment; +import com.google.devtools.build.lib.vfs.FileSystemUtils; +import java.io.IOException; +import javax.annotation.Nullable; + +/** + * Provide a standalone, local execution context. + */ +public class DummyIncludeScanningContextProvider extends ActionContextProvider { + + /** + * An IncludeExtractionContext that does nothing. Since local execution does not need to discover + * inclusion in advance, we do not need include scanning. + */ + @ExecutionStrategy(contextType = CppIncludeExtractionContext.class) + class DummyCppIncludeExtractionContext implements CppIncludeExtractionContext { + @Override + public void extractIncludes( + ActionExecutionContext actionExecutionContext, + Action resourceOwner, + Artifact primaryInput, + Artifact primaryOutput) + throws IOException { + FileSystemUtils.writeContent(primaryOutput.getPath(), new byte[]{}); + } + + @Override + public ArtifactResolver getArtifactResolver() { + return env.getSkyframeBuildView().getArtifactFactory(); + } + } + + /** A CppIncludeScanningContext that does nothing. */ + @ExecutionStrategy(contextType = CppIncludeScanningContext.class) + static class DummyCppIncludeScanningContext implements CppIncludeScanningContext { + @Override + @Nullable + public Iterable findAdditionalInputs( + CppCompileAction action, + ActionExecutionContext actionExecutionContext, + IncludeProcessing includeProcessing) + throws ExecException, InterruptedException, ActionExecutionException { + return null; + } + } + + private final CommandEnvironment env; + + public DummyIncludeScanningContextProvider(CommandEnvironment env) { + this.env = env; + } + + @Override + public Iterable getActionContexts() { + return ImmutableList.of( + new DummyCppIncludeExtractionContext(), + new DummyCppIncludeScanningContext()); + } +} 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 0c0775b8da..efdf7e52be 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 @@ -14,14 +14,7 @@ package com.google.devtools.build.lib.standalone; import com.google.common.collect.ImmutableList; -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; import com.google.devtools.build.lib.exec.ActionContextProvider; @@ -36,63 +29,16 @@ 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.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; import com.google.devtools.build.lib.util.OS; -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. */ public class StandaloneActionContextProvider extends ActionContextProvider { - - /** - * An IncludeExtractionContext that does nothing. Since local execution does not need to discover - * inclusion in advance, we do not need include scanning. - */ - @ExecutionStrategy(contextType = CppIncludeExtractionContext.class) - class DummyCppIncludeExtractionContext implements CppIncludeExtractionContext { - @Override - public void extractIncludes( - ActionExecutionContext actionExecutionContext, - Action resourceOwner, - Artifact primaryInput, - Artifact primaryOutput) - throws IOException { - FileSystemUtils.writeContent(primaryOutput.getPath(), new byte[]{}); - } - - @Override - public ArtifactResolver getArtifactResolver() { - return env.getSkyframeBuildView().getArtifactFactory(); - } - } - - /** - * 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 findAdditionalInputs( - CppCompileAction action, - ActionExecutionContext actionExecutionContext, - IncludeProcessing includeProcessing) - throws ExecException, InterruptedException, ActionExecutionException { - return null; - } - } - private final CommandEnvironment env; public StandaloneActionContextProvider(CommandEnvironment env) { @@ -115,8 +61,6 @@ public class StandaloneActionContextProvider extends ActionContextProvider { // last one from strategies list will be used return ImmutableList.of( new StandaloneSpawnStrategy(env.getExecRoot(), createLocalRunner(env)), - new DummyCppIncludeExtractionContext(), - new DummyCppIncludeScanningContext(), new SpawnGccStrategy(), testStrategy, new ExclusiveTestStrategy(testStrategy), 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 6f299fa616..ead6811fcb 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 @@ -25,6 +25,7 @@ public class StandaloneModule extends BlazeModule { @Override public void executorInit(CommandEnvironment env, BuildRequest request, ExecutorBuilder builder) { builder.addActionContextProvider(new StandaloneActionContextProvider(env)); + builder.addActionContextProvider(new DummyIncludeScanningContextProvider(env)); builder.addActionContextConsumer(new StandaloneActionContextConsumer()); } } -- cgit v1.2.3