@@ -325,6 +325,7 @@ fn emit_build_output(
325325///
326326/// * Set environment variables for the build script run.
327327/// * Create the output dir (`OUT_DIR`) for the build script output.
328+ /// * Create the temporary dir (`TMPDIR`/`TMP`/`TEMP`) that will be set.
328329/// * Determine if the build script needs a re-run.
329330/// * Run the build script and store its output.
330331fn build_work ( build_runner : & mut BuildRunner < ' _ , ' _ > , unit : & Unit ) -> CargoResult < Job > {
@@ -339,6 +340,7 @@ fn build_work(build_runner: &mut BuildRunner<'_, '_>, unit: &Unit) -> CargoResul
339340 let script_dir = build_runner. files ( ) . build_script_dir ( build_script_unit) ;
340341 let script_out_dir = build_runner. files ( ) . build_script_out_dir ( unit) ;
341342 let script_run_dir = build_runner. files ( ) . build_script_run_dir ( unit) ;
343+ let script_tmp_dir = build_runner. files ( ) . build_script_tmp_dir ( unit) ;
342344
343345 if let Some ( deps) = unit. pkg . manifest ( ) . metabuild ( ) {
344346 prepare_metabuild ( build_runner, build_script_unit, deps) ?;
@@ -376,6 +378,12 @@ fn build_work(build_runner: &mut BuildRunner<'_, '_>, unit: &Unit) -> CargoResul
376378 . env ( "RUSTDOC" , & * bcx. gctx . rustdoc ( ) ?)
377379 . inherit_jobserver ( & build_runner. jobserver ) ;
378380
381+ // Make build scripts output temporary files to `script_tmp_dir` instead
382+ // of the path returned by `std::env::temp_dir()`.
383+ for key in paths:: tmpdir_envvars ( ) {
384+ cmd. env ( key, & script_tmp_dir) ;
385+ }
386+
379387 // Find all artifact dependencies and make their file and containing directory discoverable using environment variables.
380388 for ( var, value) in artifact:: get_env ( build_runner, dependencies) ? {
381389 cmd. env ( & var, value) ;
@@ -495,6 +503,7 @@ fn build_work(build_runner: &mut BuildRunner<'_, '_>, unit: &Unit) -> CargoResul
495503
496504 paths:: create_dir_all ( & script_dir) ?;
497505 paths:: create_dir_all ( & script_out_dir) ?;
506+ paths:: create_dir_all ( & script_tmp_dir) ?;
498507
499508 let nightly_features_allowed = build_runner. bcx . gctx . nightly_features_allowed ;
500509 let targets: Vec < Target > = unit. pkg . targets ( ) . to_vec ( ) ;
0 commit comments