aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2018-02-26 05:08:43 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-26 05:10:05 -0800
commitdbf748c1a0bc7f5e3f2d6b67286d99ec88795f36 (patch)
tree757fa5e5bddb5d6ca8db9edc1279862496a6e1b1 /src/main/java
parentbc0e84bd166ba2118b277e07b2d25792fe804d93 (diff)
build stamping: "Build time" is now correct
Stamped binaries now have a correct build-data.properties file with regard to the "Build time" field. There's a mismatch in BuildInfo.BUILD_TIMESTAMP semantics between Bazel and Google-internal Blaze: Bazel assumes this amount is in milliseconds, Blaze assumed seconds. Since there are users depending on this field already on both sides, it is too late to change its semantics. So this commit only fixes the bogus "Build time" field and leaves BUILD_TIMESTAMP as milliseconds for Bazel and as seconds for Blaze. Fixes https://github.com/bazelbuild/bazel/issues/4469 Change-Id: I28282d660244af693ab16443ae1e42fb455f9dde PiperOrigin-RevId: 187005016
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java12
1 files changed, 9 insertions, 3 deletions
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 7480361f8a..4c2da18970 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
@@ -17,6 +17,7 @@ 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;
@@ -158,11 +159,16 @@ public class WriteBuildInfoPropertiesAction extends AbstractFileWriteAction {
Map<String, String> keys = new HashMap<>();
if (includeVolatile) {
addValues(keys, values, context.getVolatileKeys());
+ // Unlike Blaze which stores BUILD_TIMESTAMP as seconds, Bazel stores
+ // it as milliseconds.
+ String timeMillisStr = values.get(BuildInfo.BUILD_TIMESTAMP);
long timeMillis = timestamp;
- if (values.containsKey(BuildInfo.BUILD_TIMESTAMP)) {
- timeMillis = Long.valueOf(values.get(BuildInfo.BUILD_TIMESTAMP)) * 1000L;
+ if (Strings.isNullOrEmpty(timeMillisStr)) {
+ timeMillisStr = Long.toString(timeMillis);
+ } else {
+ timeMillis = Long.valueOf(timeMillisStr);
}
- keys.put("BUILD_TIMESTAMP", Long.toString(timeMillis / 1000));
+ keys.put("BUILD_TIMESTAMP", timeMillisStr);
keys.put("BUILD_TIME", timestampFormatter.format(timeMillis));
}
addValues(keys, values, context.getStableKeys());