daml/bazel_tools
Andreas Herrmann 2fde30d916
Disable writing volatile bits in Scala statsfile (#11875)
Make Scala targets deterministic by disabling writing milliseconds
timestamps into the statsfile.

Before (cache disabled)
```
$ n=1; bazel clean; bazel build //libs-scala/adjustable-clock --execution_log_json_file=execlog$n.json; rsync -aL bazel-bin output$n
$ n=2; bazel clean; bazel build //libs-scala/adjustable-clock --execution_log_json_file=execlog$n.json; rsync -aL bazel-bin output$n
$ diff -u execlog1.json execlog2.json
--- execlog1.json       2021-11-25 09:53:45.638891575 +0100
+++ execlog2.json       2021-11-25 10:01:52.831225558 +0100
@@ -311392,7 +311392,7 @@
   }, {
     "path": "bazel-out/k8-opt/bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/scala_version.statsfile",
     "digest": {
-      "hash": "1c535baa94812c16d33b6b3dcf2dec8e12b77e3a28cd1280ca2c9678840c4de6",
+      "hash": "a7f6f1b168649c1c5346ff92c69f0095b68781690e4b3f33321d8f35af8b3d77",
       "sizeBytes": "16",
       "hashFunctionName": "SHA-256"
     }
@@ -311705,7 +311705,7 @@
   }, {
     "path": "bazel-out/k8-opt/bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/dependency_analyzer.statsfile",
     "digest": {
-      "hash": "b3af662512a906ec56abfb222f43af189b88b00ae0449bd44c25b7e90689c4db",
+      "hash": "d6c6e2a36754efea4863593a838fbfb500a66e0150d3c3e2e2490ad65c22a2cd",
       "sizeBytes": "16",
       "hashFunctionName": "SHA-256"
     }
@@ -312025,7 +312025,7 @@
   }, {
     "path": "bazel-out/k8-opt/bin/libs-scala/adjustable-clock/adjustable-clock.statsfile",
     "digest": {
-      "hash": "4326088227e5ecf2c21e76ddb6d77c9692ef1689dd146f65ec1e75c235382251",
+      "hash": "8a6b23f3c64ce3ff171772808ca0064af52bc145a32d1b6398de124aeb813c97",
       "sizeBytes": "16",
       "hashFunctionName": "SHA-256"
     }
$ diff -r output1 output2
diff -ur output1/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/dependency_analyzer.statsfile output2/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/dependency_analyzer.statsfile
--- output1/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/dependency_analyzer.statsfile      2021-11-25 09:53:41.706824833 +0100
+++ output2/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/dependency_analyzer.statsfile      2021-11-25 10:01:49.047160467 +0100
@@ -1 +1 @@
-build_time=2507
+build_time=2522
diff -ur output1/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/scala_version.statsfile output2/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/scala_version.statsfile
--- output1/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/scala_version.statsfile    2021-11-25 09:53:39.110780774 +0100
+++ output2/bazel-bin/external/io_bazel_rules_scala/third_party/dependency_analyzer/src/main/scala_version.statsfile    2021-11-25 10:01:46.427115402 +0100
@@ -1 +1 @@
-build_time=4162
+build_time=3946
diff -ur output1/bazel-bin/libs-scala/adjustable-clock/adjustable-clock.statsfile output2/bazel-bin/libs-scala/adjustable-clock/adjustable-clock.statsfile
--- output1/bazel-bin/libs-scala/adjustable-clock/adjustable-clock.statsfile    2021-11-25 09:53:45.282885532 +0100
+++ output2/bazel-bin/libs-scala/adjustable-clock/adjustable-clock.statsfile    2021-11-25 10:01:52.511220053 +0100
@@ -1 +1 @@
-build_time=3158
+build_time=3100
```

After (cache disabled)
```
$ n=3; bazel clean; bazel build //libs-scala/adjustable-clock --execution_log_json_file=execlog$n.json; rsync -aL bazel-bin output$n
$ n=4; bazel clean; bazel build //libs-scala/adjustable-clock --execution_log_json_file=execlog$n.json; rsync -aL bazel-bin output$n
$ diff -u execlog3.json execlog4.json
$ diff -ur output3 output4
```

See https://github.com/bazelbuild/rules_scala/pull/1298

changelog_begin
changelog_end

Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
2021-11-25 11:01:17 +00:00
..
client_server [DPP-418] Protect Participant TLS keys (#10629) 2021-08-30 09:24:52 +02:00
dev_env_tool update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
java_testing update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
packaging fix: set LOCAL_ARCHIVE when unset (#8627) 2021-01-26 15:52:24 +01:00
runfiles Upgrade scalafmt and enable trailing commas (#8437) 2021-01-09 11:37:37 +01:00
scala Disable writing volatile bits in Scala statsfile (#11875) 2021-11-25 11:01:17 +00:00
scalapb Upgrade protobuf-java and scalapb. [KVL-938] (#9713) 2021-05-27 13:41:28 +00:00
sh Add golden test for example Daml ledger export (#9732) 2021-05-19 12:02:14 +00:00
build_environment.bzl update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
BUILD.bazel Upgrade Scala 2.12 to v2.12.13. (#9280) 2021-03-30 11:02:18 +00:00
create_workspace.bzl update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
damlc_legacy.bzl Drop LF < 1.14 from supported damlc output versions (#11701) 2021-11-22 16:20:17 +00:00
fat_cc_library.bzl Upgrade to Bazel 4.0 (#8798) 2021-02-11 10:08:47 +01:00
ghc_dwarf.bzl update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
grpc-bazel-apple.patch Pin rules_apple (#6845) 2020-07-24 09:47:05 +02:00
grpc-bazel-mingw.patch Upgrade gRPC C library (#8693) 2021-02-01 16:11:06 +01:00
grpc-haskell-core-cpp-options.patch Replace Hazel by stack_snapshot (#2743) 2019-11-22 14:24:08 +00:00
grpc-haskell-core-upgrade.patch Upgrade gRPC C library (#8693) 2021-02-01 16:11:06 +01:00
haskell_proto3_suite_deriving_defaults.patch Disable deriving-defaults per file (#8684) 2021-01-29 11:01:55 +00:00
haskell-c2hs.patch Building c2hs (#355) 2019-04-10 15:12:08 +02:00
haskell-ghc-8.10.7-bindist.patch Upgrade nixpkgs (#11490) 2021-11-02 15:52:55 +01:00
haskell-ghcide-binary-q.patch Enable assertions in Haskell builds (#6853) 2020-07-24 14:29:25 +00:00
haskell-hie-bios.patch Bump ghc-ghcide (#2936) 2019-09-18 10:29:02 +02:00
haskell-js-dgtable.patch Embed shake data-files via TH (#4584) 2020-02-18 17:53:27 +01:00
haskell-js-flot.patch Embed shake data-files via TH (#4584) 2020-02-18 17:53:27 +01:00
haskell-js-jquery.patch Embed shake data-files via TH (#4584) 2020-02-18 17:53:27 +01:00
haskell-lsp-test-no-reexport.patch Bump ghcide and upgrade to lsp/lsp-types (#10139) 2021-06-30 12:16:12 +00:00
haskell-opt.patch upgrade rules_haskell (#6284) 2020-06-10 17:21:31 +02:00
haskell-shake.patch Embed shake data-files via TH (#4584) 2020-02-18 17:53:27 +01:00
haskell-windows-extra-libraries.patch Fix typo in windows extra libs patch (#10538) 2021-08-11 11:00:03 +02:00
haskell-zip.patch Bump ghcide and upgrade to lsp/lsp-types (#10139) 2021-06-30 12:16:12 +00:00
haskell.bzl Switch to GHC 8.10.3 (#8394) 2021-01-25 11:53:53 +00:00
hlint.bzl update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
java.bzl Explicitly import Java runtime from Nix/dadew (#11411) 2021-11-01 18:18:45 +01:00
javadoc_library.bzl update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
lsp-types-normalisation.patch lsp-types patch for platform independence (#10288) 2021-08-04 21:33:52 +02:00
nixpkgs-disable-http2.patch upgrade rules_nixpkgs (#8078) 2020-11-30 14:36:46 +00:00
oracle.bzl Switch to an environment variable for enabling Oracle tests. (#9511) 2021-04-27 11:50:39 +00:00
os_info.bzl update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
pkg.bzl update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
pom_file.bzl Publish nameof library (#9798) 2021-05-26 09:58:02 +00:00
pom_template.xml rename master to main (#8245) 2020-12-27 14:19:07 +01:00
proto.bzl v2 participant state API draft [KVL-998] (#10210) 2021-07-12 18:11:52 +02:00
remote_apis_no_services.patch Clean broken entries from the Bazel cache (#8668) 2021-01-28 17:57:09 +00:00
rules_nodejs_bash.patch open-sourcing daml 2019-04-04 09:33:38 +01:00
rules_nodejs_node_dependency.patch Upgrade rules-nodejs (#11290) 2021-10-19 14:13:55 +00:00
rules_nodejs_npm_cli_path.patch Upgrade rules-nodejs (#11290) 2021-10-19 14:13:55 +00:00
scala_version.bzl Drop Scala 2.12 support (#11619) 2021-11-17 18:38:43 +01:00
scala-escape-jvmflags.patch Upgrade rules_scala (#6883) 2020-07-28 08:53:12 +00:00
scala.bzl Factor kind projector target into a variable (#11759) 2021-11-18 09:51:43 +01:00
scalapb.bzl Update ScalaPB to the latest version (0.11.6) (#11409) 2021-10-28 09:28:02 +02:00