diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2018-02-26 05:08:43 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-26 05:10:05 -0800 |
commit | dbf748c1a0bc7f5e3f2d6b67286d99ec88795f36 (patch) | |
tree | 757fa5e5bddb5d6ca8db9edc1279862496a6e1b1 /src/main/java/com/google/devtools/build/lib/rules | |
parent | bc0e84bd166ba2118b277e07b2d25792fe804d93 (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/com/google/devtools/build/lib/rules')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java | 12 |
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()); |