diff options
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.java | 19 |
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; } } |