aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java19
1 files changed, 13 insertions, 6 deletions
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;
}
}