fix: override both rustc-unwrapped and rustc wrapper for symlink_file patch to propagate
This commit is contained in:
@@ -97,13 +97,16 @@
|
||||
# Rustc bootstrap: symlink_file panics with "File exists" during
|
||||
# s390x cross-compilation. Multiple call sites use t!(symlink_file(...)).
|
||||
# Patch the symlink_file method body to remove existing dest first.
|
||||
(final: prev: {
|
||||
(final: prev: let
|
||||
patchedRustcUnwrapped = prev.rustc-unwrapped.overrideAttrs (old: {
|
||||
patches = (old.patches or [ ]) ++ [
|
||||
./patches/rustc-symlink-file-eexist.patch
|
||||
];
|
||||
});
|
||||
in {
|
||||
rustc-unwrapped = patchedRustcUnwrapped;
|
||||
rustc = prev.rustc.override {
|
||||
rustc-unwrapped = prev.rustc.unwrapped.overrideAttrs (old: {
|
||||
postPatch = (old.postPatch or "") + ''
|
||||
sed -i "s|if !self.config.dry_run() { symlink_file(src.as_ref(), link.as_ref()) }|if !self.config.dry_run() { let _ = std::fs::remove_file(link.as_ref()); symlink_file(src.as_ref(), link.as_ref()) }|" src/bootstrap/src/lib.rs
|
||||
'';
|
||||
});
|
||||
rustc-unwrapped = patchedRustcUnwrapped;
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/src/bootstrap/src/lib.rs
|
||||
+++ b/src/bootstrap/src/lib.rs
|
||||
@@ -1990,7 +1990,7 @@ impl Build {
|
||||
use std::os::unix::fs::symlink as symlink_file;
|
||||
#[cfg(windows)]
|
||||
use std::os::windows::fs::symlink_file;
|
||||
- if !self.config.dry_run() { symlink_file(src.as_ref(), link.as_ref()) } else { Ok(()) }
|
||||
+ if !self.config.dry_run() { let _ = std::fs::remove_file(link.as_ref()); symlink_file(src.as_ref(), link.as_ref()) } else { Ok(()) }
|
||||
}
|
||||
|
||||
/// Returns if config.ninja is enabled, and checks for ninja existence,
|
||||
Reference in New Issue
Block a user