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.
We leverage the local "/tmp" directory extensively in building so we can avoid polluting the local project filesystem until we are sure that we have a successful build result. Upon completion, we want to move files from the temporary directory to the local project. Mostly this is okay since we operate within the same device - but there are some situations (docker, remote CI builds, booting from removable storage) where the OS's default /tmp path is on a different volume than the project itself. Our previous logic would crash in these cases with a
Invalid cross-device link
error.This PR fixes this bug by moving to shutil.move for moving temporary files. It will default to a regular replace while within the same volume and fallback to a copy/delete in the case of differing volumes.