LF_BUILDINFO introduces non-determinism to Windows rlib builds #128842
Labels
A-reproducibility
Area: Reproducible / deterministic builds
C-bug
Category: This is a bug.
O-windows
Operating system: Windows
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
The changes from #113492 have introduced a source of non-determinism in our rustc invocations, which causes cache invalidations for us in Buck since the output often changes hashes.
The root issue here seems to be that
LF_BUILDINFO
now contains an absolute path torustc.exe
, which is not consistent for our use-case in Meta (our build machines use https://github.com/facebook/dotslash in order to downloadrustc
to a temporary directory which is not stable across hosts). TheLF_BUILDINFO
entry is present in everyrlib
artifact we produce.Details
ar x foo.rlib
to look at thercgu.o
filesllvm-pdbutil dump -all foo-<hash>.foo.<hash>-cgu.0.rcgu.o
Contents for our Buck built rlib look like:
The problematic string ends up embedded in the object files within the
rlib
archive, introducing non-determinism in our build outputs.I'd like to adjust this by proposing one of a few ideas:
LF_BUILDINFO
to accept a relative path (or user-defined path) to rustc.exe. E.g.-Zbuildinfo_exe_path=rustc.exe
or similar.LF_BUILDINFO
's command & command line args entirely, reverting back to pre- Add CL and CMD into to pdb debug info #113492 behavior. E.g.-Zomit_buildinfo_args
or similar.Would any of these options make sense to pursue as a PR?
The text was updated successfully, but these errors were encountered: