aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Thiago Farina <tfarina@chromium.org>2016-10-26 14:56:25 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2016-10-27 09:25:50 +0000
commitf41c252f7ed2c2590c87477f849a7e836a3867a2 (patch)
treee1d6f29273bceb6810d44c6877c9957ef14ec78c /src/main/java/com
parent8a8a7fce075db5fd633f01f65248defdeef4e041 (diff)
stop passing BuildConfiguration to CppCompileAction
This fixes Ulf's TODO by adding fields for the local shell environment and code coverage and as stated on it accessing anything other than these fields can impact correctness. -- Change-Id: I9ccebaa0bc8ed920e2941b3d156692cb1e0fe117 Reviewed-on: https://bazel-review.googlesource.com/c/6870/ MOS_MIGRATED_REVID=137275206
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java3
3 files changed, 12 insertions, 11 deletions
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 10f13144d5..3f01369d7d 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
@@ -40,7 +40,6 @@ import com.google.devtools.build.lib.actions.extra.CppCompileInfo;
import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.ExecutionInfoSpecifier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.PerLabelOptions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.CollectionUtils;
@@ -164,10 +163,8 @@ public class CppCompileAction extends AbstractAction
*/
public static final String CLIF_MATCH = "clif-match";
- // TODO(ulfjack): this is only used to get the local shell environment and to check if coverage is
- // enabled. Move those two things to local fields and drop this. Accessing anything other than
- // these fields can impact correctness!
- private final BuildConfiguration configuration;
+ private final ImmutableMap<String, String> localShellEnvironment;
+ private final boolean isCodeCoverageEnabled;
protected final Artifact outputFile;
private final Label sourceLabel;
private final Artifact optionalSourceFile;
@@ -271,7 +268,8 @@ public class CppCompileAction extends AbstractAction
@Nullable Artifact gcnoFile,
@Nullable Artifact dwoFile,
Artifact optionalSourceFile,
- BuildConfiguration configuration,
+ ImmutableMap<String, String> localShellEnvironment,
+ boolean isCodeCoverageEnabled,
CppConfiguration cppConfiguration,
CppCompilationContext context,
Class<? extends CppCompileActionContext> actionContext,
@@ -299,7 +297,8 @@ public class CppCompileAction extends AbstractAction
lipoScannables),
CollectionUtils.asListWithoutNulls(
outputFile, (dotdFile == null ? null : dotdFile.artifact()), gcnoFile, dwoFile));
- this.configuration = configuration;
+ this.localShellEnvironment = localShellEnvironment;
+ this.isCodeCoverageEnabled = isCodeCoverageEnabled;
this.sourceLabel = sourceLabel;
this.outputFile = Preconditions.checkNotNull(outputFile);
this.optionalSourceFile = optionalSourceFile;
@@ -677,8 +676,8 @@ public class CppCompileAction extends AbstractAction
@Override
public ImmutableMap<String, String> getEnvironment() {
- Map<String, String> environment = new LinkedHashMap<>(configuration.getLocalShellEnvironment());
- if (configuration.isCodeCoverageEnabled()) {
+ Map<String, String> environment = new LinkedHashMap<>(localShellEnvironment);
+ if (isCodeCoverageEnabled) {
environment.put("PWD", "/proc/self/cwd");
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index 02fca809d8..1567657105 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -330,7 +330,8 @@ public class CppCompileActionBuilder {
gcnoFile,
dwoFile,
optionalSourceFile,
- configuration,
+ configuration.getLocalShellEnvironment(),
+ configuration.isCodeCoverageEnabled(),
cppConfiguration,
context,
actionContext,
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 5bf6f94a77..4442ac2f45 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
@@ -98,7 +98,8 @@ public class FakeCppCompileAction extends CppCompileAction {
null,
null,
null,
- configuration,
+ configuration.getLocalShellEnvironment(),
+ configuration.isCodeCoverageEnabled(),
cppConfiguration,
// We only allow inclusion of header files explicitly declared in
// "srcs", so we only use declaredIncludeSrcs, not declaredIncludeDirs.