[WIP]Implement reproducible out/ folder contents across different filesystem layouts #3765
+444
−14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses issue #3660 by making the
out/
folder contents more reproducible and filesystem layout agnostic. These changes allow for re-using theout/
folder as a build cache between different machines, supporting both coarse-grained (e.g., zip file transfer) and fine-grained (via Bazel remote cache protocol) caching strategies.Key Changes:
PathRef
to normalize paths relative to workspace, Coursier cache, and home directoryNonDeterministicFiles
to handle non-deterministic file contentJsonFormatters
to use the new path normalization methodsReproducibleOutTest
to verify reproducibilitybuild.mill
in the integration test to define the necessary project structureReproducibility is achieved by:
Testing:
ReproducibleOutTest
Documentation:
Performance Impact: