[5.6] gracefully handle pre-existing binary artifact from failed downloads (#4021) #4025
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.
5.6 cherry-pick of #4021
Explanation:
When binary artifact download fails it may leave behind a partial or otherwise corrupt file, which fail subsequent attempts to resolve the dependency graph unless manually cleaned up (remove .build)
Scope of Issue:
This impacts the reliability of SwiftPM when resolving graphs with binary dependencies.
Reason for Nominating to 5.6 :
Important reliability fix for real-world use case.
Risk:
Low risk; No functional changes, this removes a file if exists before attempting to write it.
Reviewed By: @abertelrud
Automated Testing: Unit tests
Dependencies: None
Impact on CI: None
How to Verify: Resolve package dependencies on a binary dependency, cause it to fail mid way, try to resolve again.