Fix CI when codegen .so is clobbered#274
Closed
LegNeato wants to merge 1 commit intoRust-GPU:mainfrom
Closed
Conversation
The workspace builds rustc_codegen_nvvm as a normal Cargo member. During every CUDA build script, cuda_builder re-builds that same crate through -Zcodegen-backend=. Cargo produces two identical librustc_codegen_nvvm.so. cuda_builder then tried to copy the backend .so into target/codegen-backends while rustc_codegen_nvvm was still being linked. It sometimes read a half- written file. Now cuda_builder still knows how to depend on rustc_codegen_nvvm, but that dependency lives behind a default feature. Inside the workspace we turn the default feature off so the backend is built exactly once as a regular workspace member. External users get the same old behaviour because the feature defaults to on. We also no longer blindly assume the .so already exists in cuda_builder. The build script is now more defensive.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The workspace builds rustc_codegen_nvvm as a normal Cargo member. During every CUDA build script, cuda_builder re-builds that same crate through -Zcodegen-backend=. Cargo produces two identical librustc_codegen_nvvm.so.
cuda_builder then tried to copy the backend .so into target/codegen-backends while rustc_codegen_nvvm was still being linked. It sometimes read a half- written file.
Now cuda_builder still knows how to depend on rustc_codegen_nvvm, but that dependency lives behind a default feature. Inside the workspace we turn the default feature off so the backend is built exactly once as a regular workspace member.
External users get the same old behaviour because the feature defaults to on.
We also no longer blindly assume the .so already exists in cuda_builder. The build script is now more defensive.