-
Notifications
You must be signed in to change notification settings - Fork 460
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 #2092
- 0.58.0
- 0.57.1
- 0.57.0
- 0.56.0
- 0.55.6
- 0.55.5
- 0.55.4
- 0.55.3
- 0.55.2
- 0.55.1
- 0.55.0
- 0.54.1
- 0.54.0
- 0.53.0
- 0.52.2
- 0.52.1
- 0.52.0
- 0.51.0
- 0.50.1
- 0.50.0
- 0.49.3
- 0.49.2
- 0.49.1
- 0.49.0
- 0.48.0
- 0.47.1
- 0.46.0
- 0.45.1
- 0.45.0
- 0.44.0
- 0.43.0
- 0.42.1
- 0.42.0
- 0.41.1
- 0.41.0
- 0.40.0
- 0.39.0
- 0.38.0
- 0.36.2
- 0.36.1
- 0.36.0
- 0.35.0
- 0.34.1
- 0.34.0
- 0.33.0
- 0.32.0
- 0.31.0
- 0.30.0
1 parent
1557205
commit ec5fd40
Showing
6 changed files
with
115 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
@ECHO OFF | ||
SETLOCAL enabledelayedexpansion | ||
|
||
SET command=%* | ||
|
||
:: Resolve the `${pwd}` placeholders | ||
SET command=!command:${pwd}=%CD%! | ||
|
||
:: Strip out the leading `--` argument. | ||
SET command=!command:~3! | ||
|
||
:: Find the rustc.exe argument and sanitize it's path | ||
for %%A in (%*) do ( | ||
SET arg=%%~A | ||
if "!arg:~-9!"=="rustc.exe" ( | ||
SET sanitized=!arg:/=\! | ||
|
||
SET command=!sanitized! !command:%%~A=! | ||
goto :break | ||
) | ||
) | ||
|
||
:break | ||
|
||
%command% | ||
|
||
:: Capture the exit code of rustc.exe | ||
SET exit_code=!errorlevel! | ||
|
||
:: Exit with the same exit code | ||
EXIT /b %exit_code% |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -euo pipefail | ||
|
||
# Skip the first argument which is expected to be `--` | ||
shift | ||
|
||
args=() | ||
|
||
for arg in "$@"; do | ||
# Check if the argument contains "${PWD}" and replace it with the actual value of PWD | ||
if [[ "${arg}" == *'${pwd}'* ]]; then | ||
arg="${arg//\$\{pwd\}/$PWD}" | ||
fi | ||
args+=("${arg}") | ||
done | ||
|
||
exec "${args[@]}" |