diff options
author | 2016-10-11 18:47:33 +0000 | |
---|---|---|
committer | 2016-10-12 08:56:04 +0000 | |
commit | 511b19e088a6def4d01c727e6cc1f20bd567dcec (patch) | |
tree | 920448627fe2bcc5eb962ead540263f9e1b185df /src/main/java/com/google/devtools/build/lib/analysis/actions | |
parent | 1750a3f4ff7f8b6d0cb8ccf62dbed9e3bcf4b932 (diff) |
[Roll-forward] Rollback of commit dd299dbc61be51112534a4698f7cf2deee43053b.
*** Reason for rollback ***
Fixed underlying broken CL that was depended on
*** Original change description ***
Automated [] rollback of commit e025939e71b179ae0f6bd09ef3af474f49b853a2.
*** Reason for rollback ***
Depends on commit 9c25afe750a937b2152c21a93effc8b9ba82c27b, which needs to be rolled back.
*** Original change description ***
Add API for individual actions
This exposes action inputs, outputs, argv, content, and substitutions (if applicable).
--
MOS_MIGRATED_REVID=135821603
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/actions')
3 files changed, 29 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java index 64ea99c04d..feb1addddb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java @@ -23,7 +23,6 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.util.LazyString; - import java.io.IOException; import java.io.OutputStream; import java.util.Collection; @@ -113,6 +112,11 @@ public final class FileWriteAction extends AbstractFileWriteAction { return fileContents.toString(); } + @Override + public String getSkylarkContent() { + return getFileContents(); + } + /** * Create a DeterministicWriter for the content of the output file as provided by * {@link #getFileContents()}. 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 5d8ad84e76..8ee985891e 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 @@ -48,6 +48,7 @@ import com.google.devtools.build.lib.collect.CollectionUtils; import com.google.devtools.build.lib.collect.IterablesChain; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.ShellEscaper; @@ -65,7 +66,7 @@ import javax.annotation.Nullable; /** An Action representing an arbitrary subprocess to be forked and exec'd. */ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifier, CommandAction { - + /** Sets extensions on ExtraActionInfo **/ protected static class ExtraActionInfoSupplier<T> { private final GeneratedExtension<ExtraActionInfo, T> extension; @@ -205,6 +206,11 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie return ImmutableList.copyOf(argv.arguments()); } + @Override + public SkylarkList<String> getSkylarkArgv() { + return SkylarkList.createImmutable(getArguments()); + } + /** * Returns the list of options written to the parameter file. Don't use this method outside tests. * The list is often huge, resulting in significant garbage collection overhead. diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java index fe404e1168..6fac2d2228 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionAction.java @@ -24,12 +24,12 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.util.ResourceFileLoader; import com.google.devtools.build.lib.util.StringUtilities; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; - import java.io.IOException; import java.io.OutputStream; import java.nio.charset.Charset; @@ -97,7 +97,7 @@ public final class TemplateExpansionAction extends AbstractFileWriteAction { } }; } - + /** * Returns an immutable Substitution instance for the key and map of values. Corresponding * values in the map will be joined with "=", and pairs will be joined by spaces before @@ -119,7 +119,7 @@ public final class TemplateExpansionAction extends AbstractFileWriteAction { } }; } - + @Override public boolean equals(Object object) { if (this == object) { @@ -347,6 +347,11 @@ public final class TemplateExpansionAction extends AbstractFileWriteAction { } @Override + public String getSkylarkContent() throws IOException { + return getFileContents(); + } + + @Override public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) throws IOException { final byte[] bytes = getFileContents().getBytes(Template.DEFAULT_CHARSET); return new DeterministicWriter() { @@ -384,4 +389,13 @@ public final class TemplateExpansionAction extends AbstractFileWriteAction { public List<Substitution> getSubstitutions() { return substitutions; } + + @Override + public SkylarkDict<String, String> getSkylarkSubstitutions() { + ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); + for (Substitution entry : substitutions) { + builder.put(entry.getKey(), entry.getValue()); + } + return SkylarkDict.copyOf(null, builder.build()); + } } |