aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-02-26 11:35:15 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-26 11:37:21 -0800
commit53c74768d26089f49a4eea5bf52fefa0108f5198 (patch)
tree66671dc704c2aba5e5bd2d430afbc0a6a9f504c5 /src/main/java/com/google/devtools/build/lib
parent677e6f7e446e16376b64fe68b772ad65820449b8 (diff)
@AutoCodec WriteBuildInfoPropertiesAction.
PiperOrigin-RevId: 187054284
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java25
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java31
2 files changed, 31 insertions, 25 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
index c37214686d..cd93f1145a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
@@ -23,6 +23,8 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.rules.java.WriteBuildInfoPropertiesAction.TimestampFormatter;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.time.Instant;
import java.time.ZoneOffset;
@@ -48,16 +50,19 @@ public abstract class JavaBuildInfoFactory implements BuildInfoFactory {
DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss yyyy");
// A default formatter that returns a date in UTC format.
- private static final TimestampFormatter DEFAULT_FORMATTER =
- new TimestampFormatter() {
- @Override
- public String format(long timestamp) {
- return Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.UTC).format(DEFAULT_TIME_FORMAT)
- + " ("
- + timestamp / 1000
- + ')';
- }
- };
+ @AutoCodec
+ @VisibleForSerialization
+ static class DefaultTimestampFormatter implements TimestampFormatter {
+ @Override
+ public String format(long timestamp) {
+ return Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.UTC).format(DEFAULT_TIME_FORMAT)
+ + " ("
+ + timestamp / 1000
+ + ')';
+ }
+ }
+
+ private static final TimestampFormatter DEFAULT_FORMATTER = new DefaultTimestampFormatter();
@Override
public final BuildInfoCollection create(BuildInfoContext context, BuildConfiguration config,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java
index 4c2da18970..96b68017d5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java
@@ -18,7 +18,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionKeyContext;
@@ -45,7 +44,6 @@ import java.util.Properties;
public class WriteBuildInfoPropertiesAction extends AbstractFileWriteAction {
private static final String GUID = "19e543c2-3ce4-4aef-80f5-4f8abf4b064f";
- private final ImmutableList<Artifact> valueArtifacts;
private final BuildInfoPropertiesTranslator keyTranslations;
private final boolean includeVolatile;
private final boolean includeNonVolatile;
@@ -111,29 +109,32 @@ public class WriteBuildInfoPropertiesAction extends AbstractFileWriteAction {
* <p>It reads the set of build info keys from an action context that is usually contributed to
* Blaze by the workspace status module, and the value associated with said keys from the
* workspace status files (stable and volatile) written by the workspace status action. The files
- * generated by this action serve as input to the
- * {@link com.google.devtools.build.singlejar.SingleJar} program.
+ * generated by this action serve as input to the {@link
+ * com.google.devtools.build.singlejar.SingleJar} program.
*
* <p>Without input artifacts, this action uses redacted build information.
*
* @param inputs Artifacts that contain build information, or an empty collection to use redacted
- * build information
- * @param output output the properties file Artifact created by this action
- * @param keyTranslations how to translates available keys. See
- * {@link BuildInfoPropertiesTranslator}.
+ * build information
+ * @param primaryOutput output the properties file Artifact created by this action
+ * @param keyTranslations how to translates available keys. See {@link
+ * BuildInfoPropertiesTranslator}.
* @param includeVolatile whether the set of key to write are giving volatile keys or not
* @param includeNonVolatile whether the set of key to write are giving non-volatile keys or not
* @param timestampFormatter formats dates printed in the properties file
*/
- public WriteBuildInfoPropertiesAction(Collection<Artifact> inputs, Artifact output,
- BuildInfoPropertiesTranslator keyTranslations, boolean includeVolatile,
- boolean includeNonVolatile, TimestampFormatter timestampFormatter) {
- super(ActionOwner.SYSTEM_ACTION_OWNER, inputs, output, /* makeExecutable= */ false);
+ public WriteBuildInfoPropertiesAction(
+ Collection<Artifact> inputs,
+ Artifact primaryOutput,
+ BuildInfoPropertiesTranslator keyTranslations,
+ boolean includeVolatile,
+ boolean includeNonVolatile,
+ TimestampFormatter timestampFormatter) {
+ super(ActionOwner.SYSTEM_ACTION_OWNER, inputs, primaryOutput, /* makeExecutable= */ false);
this.keyTranslations = keyTranslations;
this.includeVolatile = includeVolatile;
this.includeNonVolatile = includeNonVolatile;
this.timestampFormatter = timestampFormatter;
- valueArtifacts = ImmutableList.copyOf(inputs);
if (!inputs.isEmpty()) {
// With non-empty inputs we should not generate both volatile and non-volatile data
@@ -141,7 +142,7 @@ public class WriteBuildInfoPropertiesAction extends AbstractFileWriteAction {
Preconditions.checkState(includeVolatile ^ includeNonVolatile);
}
Preconditions.checkState(
- output.isConstantMetadata() == (includeVolatile && !inputs.isEmpty()));
+ primaryOutput.isConstantMetadata() == (includeVolatile && !inputs.isEmpty()));
}
@Override
@@ -152,7 +153,7 @@ public class WriteBuildInfoPropertiesAction extends AbstractFileWriteAction {
public void writeOutputFile(OutputStream out) throws IOException {
WorkspaceStatusAction.Context context = ctx.getContext(WorkspaceStatusAction.Context.class);
Map<String, String> values = new LinkedHashMap<>();
- for (Artifact valueFile : valueArtifacts) {
+ for (Artifact valueFile : getInputs()) {
values.putAll(WorkspaceStatusAction.parseValues(valueFile.getPath()));
}