aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2018-05-22 05:08:23 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-22 05:09:26 -0700
commit3da8929963e9c70dff5d8859d6e988e6e7f4f9d7 (patch)
tree3eb2a7e7a75763900c30d67b6282dabcff11907c /src/main/java/com/google/devtools/build/lib/analysis
parentc29f34fa81a16abdfc1b5aad03f76d36ce8793ba (diff)
Make SymlinkTreeAction properly use the configuration's environment
In particular, fix its use of client make variables. Fixes #4750. PiperOrigin-RevId: 197545415
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java2
3 files changed, 14 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
index 02a9119e66..0c4f797160 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
@@ -359,7 +359,7 @@ public final class RunfilesSupport {
inputManifest,
outputManifest,
/*filesetTree=*/ false,
- config.getLocalShellEnvironment(),
+ config.getActionEnvironment(),
config.runfilesEnabled()));
return outputManifest;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
index 10a30d8d9f..8649a48f8f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
@@ -17,6 +17,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.AbstractAction;
+import com.google.devtools.build.lib.actions.ActionEnvironment;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionExecutionException;
import com.google.devtools.build.lib.actions.ActionKeyContext;
@@ -26,6 +27,8 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.util.Fingerprint;
+import java.util.LinkedHashMap;
+import java.util.Map;
/**
* Action responsible for the symlink tree creation.
@@ -40,7 +43,6 @@ public final class SymlinkTreeAction extends AbstractAction {
private final Artifact inputManifest;
private final Artifact outputManifest;
private final boolean filesetTree;
- private final ImmutableMap<String, String> shellEnvironment;
private final boolean enableRunfiles;
/**
@@ -59,14 +61,13 @@ public final class SymlinkTreeAction extends AbstractAction {
Artifact inputManifest,
Artifact outputManifest,
boolean filesetTree,
- ImmutableMap<String, String> shellEnvironment,
+ ActionEnvironment env,
boolean enableRunfiles) {
- super(owner, ImmutableList.of(inputManifest), ImmutableList.of(outputManifest));
+ super(owner, ImmutableList.of(inputManifest), ImmutableList.of(outputManifest), env);
Preconditions.checkArgument(outputManifest.getPath().getBaseName().equals("MANIFEST"));
this.inputManifest = inputManifest;
this.outputManifest = outputManifest;
this.filesetTree = filesetTree;
- this.shellEnvironment = shellEnvironment;
this.enableRunfiles = enableRunfiles;
}
@@ -96,15 +97,21 @@ public final class SymlinkTreeAction extends AbstractAction {
@Override
protected void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) {
fp.addString(GUID);
- fp.addInt(filesetTree ? 1 : 0);
+ fp.addBoolean(filesetTree);
+ fp.addBoolean(enableRunfiles);
+ fp.addStringMap(env.getFixedEnv());
+ fp.addStrings(env.getInheritedEnv());
}
@Override
public ActionResult execute(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException, InterruptedException {
+ Map<String, String> resolvedEnv = new LinkedHashMap<>();
+ env.resolve(resolvedEnv, actionExecutionContext.getClientEnv());
actionExecutionContext
.getContext(SymlinkTreeActionContext.class)
- .createSymlinks(this, actionExecutionContext, shellEnvironment, enableRunfiles);
+ .createSymlinks(
+ this, actionExecutionContext, ImmutableMap.copyOf(resolvedEnv), enableRunfiles);
return ActionResult.EMPTY;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java
index be6c9911cf..1ece4b0066 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java
@@ -25,8 +25,6 @@ public interface SymlinkTreeActionContext extends ActionContext {
/**
* Creates the symlink tree.
- *
- * @return a list of SpawnResults created during symlink creation, if any
*/
void createSymlinks(
SymlinkTreeAction action,