commit | ec5fd40164f7ab09083bb539f6b77241ca873efe | [log] [tgz] |
---|---|---|
author | UebelAndre <github@uebelandre.com> | Fri Oct 27 05:20:44 2023 -0700 |
committer | GitHub <noreply@github.com> | Fri Oct 27 05:20:44 2023 -0700 |
tree | ba8a135a29f57e1a088d2b2f766de2292302a6da | |
parent | 15572051f0a7c3c83d1cd73de72c8110729db4d8 [diff] |
Fix issues causing the `Rustc` process wrapper to be built non-determ… (#2216) This change aims to ensure the process wrapper is built determinisitically, thus reducing churn in cases where multiple developers share a bazel remote cache. The shared cache is notable as the binaries can be deterministically produced for a single user for a single checkout as some host information is embedded in the compiled binaries. The host information is stored in the `debug-info` section of the executable. This can be resolved by stripping it. The other issue of determinism is `rust_binary_without_process_wrapper` does not resolve `${pwd}` like the process wrapper does, thus stripping sandbox paths from rustc outputs. To solve for this a small bash and batch script was added to account for this behavior. The intent of these scripts is to use __no__ host executables and instead rely on pure bash and batch to accomplish this and keep any actions which use this as hermetic as possible. The following tables were produced on macOS. Note that `rules_rust_2` is simply another checkout of `rules_rust` on the same commit Before the changes in this PR: | path | rules_rust sha256 | rules_rust_2 sha256 | | --- | --- | --- | | bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/external/rules_rust_tinyjson/libtinyjson-4031717389.rlib | 60db194b3e98b67cc0702c6b6c48c5bc8fcf7d723f3ece6a7a24a53888158c7e | 3eac0b443ba160e3a1bde3b023f4e953bb9fc9722e430b5ded6dbb723bc2b532 | | bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/util/process_wrapper/process_wrapper | 32e7840602c977b76bba0bc39da768d35db3e7a17dbf96e455727be2b2f0151f | 0d248279bbc9b17be5914b41a66759f939ef4da77f8a40a5ce6fa3bf339648ad | After the changes: | path | rules_rust sha256 | rules_rust_2 sha256 | | --- | --- | --- | | bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/external/rules_rust_tinyjson/libtinyjson-4031717389.rlib | 07432f5d207da854266ccde212243c67c29907f81a7619434ce9f608b1658d96 | 07432f5d207da854266ccde212243c67c29907f81a7619434ce9f608b1658d96 | | bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/util/process_wrapper/process_wrapper | cbf17392338aabfc942d975f95a49a67b731c5e597a7d27e3d9cf4d4a06b8f2c | cbf17392338aabfc942d975f95a49a67b731c5e597a7d27e3d9cf4d4a06b8f2c | closes https://github.com/bazelbuild/rules_rust/issues/2092
This repository provides rules for building Rust projects with Bazel.
General discussions and announcements take place in the GitHub Discussions, but there are additional places where community members gather to discuss rules_rust
.
Please refer to the full documentation.