aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-11-07 12:30:13 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-11-07 14:01:50 +0000
commitefdfff2aecdf4584b9ddda40ba1d8f106167b1e0 (patch)
tree1535c439d84fdb567ead552c7f6d25302d4347ef /src/main/java/com/google/devtools
parentb043fafb957ae8038088e427ff27a5c9f951c979 (diff)
For SpawnActions, also honor the dynamic environment
For SpawnActions, depending on the value of use_default_shell_env, the specified environment is taken. The shell environment, however, consists of two parts: a static mapping of variables to values, and a set of variables where the value is to be taken from the client environment. Make sure, both parts are set correctly. Fixes #2035. -- Change-Id: I32253e9bf651b18ca25107edc5fc839813905726 Reviewed-on: https://bazel-review.googlesource.com/#/c/7211 MOS_MIGRATED_REVID=138376914
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java3
2 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index 8ee985891e..b452b470ba 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -595,6 +595,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
buildSpawnAction(
owner,
configuration.getLocalShellEnvironment(),
+ configuration.getVariableShellEnvironment(),
configuration.getShellExecutable(),
paramsFile,
paramFileWriteAction));
@@ -627,6 +628,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
SpawnAction buildSpawnAction(
ActionOwner owner,
@Nullable Map<String, String> defaultShellEnvironment,
+ @Nullable Set<String> variableShellEnvironment,
@Nullable PathFragment defaultShellExecutable,
@Nullable Artifact paramsFile,
@Nullable ParameterFileWriteAction paramFileWriteAction) {
@@ -657,10 +659,13 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
inputAndToolManifests.putAll(toolManifests);
Map<String, String> env;
+ Set<String> clientEnv;
if (useDefaultShellEnvironment) {
env = Preconditions.checkNotNull(defaultShellEnvironment);
+ clientEnv = Preconditions.checkNotNull(variableShellEnvironment);
} else {
env = this.environment;
+ clientEnv = this.clientEnvironmentVariables;
}
if (disableSandboxing) {
@@ -678,7 +683,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
resourceSet,
actualCommandLine,
ImmutableMap.copyOf(env),
- clientEnvironmentVariables,
+ ImmutableSet.copyOf(clientEnv),
ImmutableMap.copyOf(executionInfo),
progressMessage,
ImmutableMap.copyOf(inputAndToolManifests),
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java
index 65724891bc..4587e4a133 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java
@@ -165,6 +165,7 @@ public final class SpawnActionTemplate implements ActionAnalysisMetadata {
return actionBuilder.buildSpawnAction(
getOwner(),
/*defaultShellEnvironment=*/ null,
+ /*variableShellEnvironment=*/ null,
/*defaultShellExecutable=*/ null,
/*paramsFile=*/ null,
/*paramFileWriteAction=*/ null);
@@ -266,7 +267,7 @@ public final class SpawnActionTemplate implements ActionAnalysisMetadata {
@Override
public Iterable<String> getClientEnvironmentVariables() {
return spawnActionBuilder
- .buildSpawnAction(getOwner(), null, null, null, null)
+ .buildSpawnAction(getOwner(), null, null, null, null, null)
.getClientEnvironmentVariables();
}