Skip to content

Commit 0bd709d

Browse files
committed
Avoid using env::temp when linking a binary
This keeps all build artefacts (even temporary ones) within the build directory.
1 parent eb171a2 commit 0bd709d

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

compiler/rustc_codegen_ssa/src/back/link.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,17 +103,18 @@ pub fn link_binary(
103103
});
104104

105105
if outputs.outputs.should_link() {
106-
let tmpdir = TempDirBuilder::new()
107-
.prefix("rustc")
108-
.tempdir()
109-
.unwrap_or_else(|error| sess.dcx().emit_fatal(errors::CreateTempDir { error }));
110-
let path = MaybeTempDir::new(tmpdir, sess.opts.cg.save_temps);
111106
let output = out_filename(
112107
sess,
113108
crate_type,
114109
outputs,
115110
codegen_results.crate_info.local_crate_name,
116111
);
112+
let tmpdir = TempDirBuilder::new()
113+
.prefix("rustc")
114+
.tempdir_in(output.parent().unwrap_or_else(|| Path::new(".")))
115+
.unwrap_or_else(|error| sess.dcx().emit_fatal(errors::CreateTempDir { error }));
116+
let path = MaybeTempDir::new(tmpdir, sess.opts.cg.save_temps);
117+
117118
let crate_name = format!("{}", codegen_results.crate_info.local_crate_name);
118119
let out_filename = output.file_for_writing(
119120
outputs,

compiler/rustc_fs_util/src/lib.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::ffi::{CString, OsStr};
22
use std::path::{Path, PathBuf, absolute};
3-
use std::{env, fs, io};
3+
use std::{fs, io};
44

55
use tempfile::TempDir;
66

@@ -139,8 +139,4 @@ impl<'a, 'b> TempDirBuilder<'a, 'b> {
139139
}
140140
self.builder.tempdir_in(dir)
141141
}
142-
143-
pub fn tempdir(&self) -> io::Result<TempDir> {
144-
self.tempdir_in(env::temp_dir())
145-
}
146142
}

0 commit comments

Comments
 (0)