diff options
author | ulfjack <ulfjack@google.com> | 2018-05-22 05:08:23 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-05-22 05:09:26 -0700 |
commit | 3da8929963e9c70dff5d8859d6e988e6e7f4f9d7 (patch) | |
tree | 3eb2a7e7a75763900c30d67b6282dabcff11907c /src/main/java/com/google/devtools/build/lib | |
parent | c29f34fa81a16abdfc1b5aad03f76d36ce8793ba (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')
4 files changed, 15 insertions, 10 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, diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java index 3dac0dd48d..6bea350871 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java @@ -186,7 +186,7 @@ public final class NativeLibs { inputManifest, outputManifest, false, - ruleContext.getConfiguration().getLocalShellEnvironment(), + ruleContext.getConfiguration().getActionEnvironment(), ruleContext.getConfiguration().runfilesEnabled())); return new ManifestAndRunfiles(outputManifest, sourceManifestAction.getGeneratedRunfiles()); } |