From efdfff2aecdf4584b9ddda40ba1d8f106167b1e0 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Mon, 7 Nov 2016 12:30:13 +0000 Subject: 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 --- .../google/devtools/build/lib/analysis/actions/SpawnAction.java | 7 ++++++- .../devtools/build/lib/analysis/actions/SpawnActionTemplate.java | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools') 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 defaultShellEnvironment, + @Nullable Set 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 env; + Set 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 getClientEnvironmentVariables() { return spawnActionBuilder - .buildSpawnAction(getOwner(), null, null, null, null) + .buildSpawnAction(getOwner(), null, null, null, null, null) .getClientEnvironmentVariables(); } -- cgit v1.2.3