remapPathPrefixHook: disable automatic path remapping on Darwin builders #950
+25
−0
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.
Motivation
Unfortunately, we cannot support automatic path remapping on Darwin. The remap paths option
requires absolute paths (since rustc will basically do a blind substitution). On Linux builds,
each derivation is chrooted to
/build/{name-of-src}which ends up being the same string forboth the real and the deps-only derivations. On Darwin, however, this ends up being
/nix/var/nix/builds/{name-of-derivation}which is different between the main and deps-onlyderivations. Since this value ends up in CARGO_BUILD_RUSTFLAGS, it effectively will lead to
cache invalidation when the real derivation runs if the values differ.
Moreover, we can't "just" replace the bytes ourselves since there's no guarantee that the
original build path is the same length as the un-neutered store path. Thus we'll noop this for
now on Darwin builders and leave it up to the caller to handle path remap if needed...
Resolves #944
Checklist
docs/API.md(or general documentation) with changesCHANGELOG.md