about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2020-12-21 02:47:49 +0100
committerGitHub <noreply@github.com>2020-12-21 02:47:49 +0100
commitc4b34eebefc79d01d75efea0f5159b22a35891cf (patch)
tree9643d1116c6f22baa376fe944b3c91e8946631df
parentce93f5a8bb46208e41e0855c96e12a5ff8dd0f4e (diff)
parentfbc9d50d752ab298aea2844d236095b198e96fe6 (diff)
downloadrust-c4b34eebefc79d01d75efea0f5159b22a35891cf.tar.gz
rust-c4b34eebefc79d01d75efea0f5159b22a35891cf.zip
Rollup merge of #80240 - yshui:master, r=Mark-Simulacrum
make sure installer only creates directories in DESTDIR

Fixes #80238

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
-rw-r--r--src/bootstrap/install.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/bootstrap/install.rs b/src/bootstrap/install.rs
index 074f5cd73f3..8f2b128b368 100644
--- a/src/bootstrap/install.rs
+++ b/src/bootstrap/install.rs
@@ -73,12 +73,7 @@ fn install_sh(
     let docdir_default = datadir_default.join("doc/rust");
     let libdir_default = PathBuf::from("lib");
     let mandir_default = datadir_default.join("man");
-    let prefix = builder.config.prefix.as_ref().map_or(prefix_default, |p| {
-        fs::create_dir_all(p)
-            .unwrap_or_else(|err| panic!("could not create {}: {}", p.display(), err));
-        fs::canonicalize(p)
-            .unwrap_or_else(|err| panic!("could not canonicalize {}: {}", p.display(), err))
-    });
+    let prefix = builder.config.prefix.as_ref().unwrap_or(&prefix_default);
     let sysconfdir = builder.config.sysconfdir.as_ref().unwrap_or(&sysconfdir_default);
     let datadir = builder.config.datadir.as_ref().unwrap_or(&datadir_default);
     let docdir = builder.config.docdir.as_ref().unwrap_or(&docdir_default);
@@ -103,6 +98,13 @@ fn install_sh(
     let libdir = add_destdir(&libdir, &destdir);
     let mandir = add_destdir(&mandir, &destdir);
 
+    let prefix = {
+        fs::create_dir_all(&prefix)
+            .unwrap_or_else(|err| panic!("could not create {}: {}", prefix.display(), err));
+        fs::canonicalize(&prefix)
+            .unwrap_or_else(|err| panic!("could not canonicalize {}: {}", prefix.display(), err))
+    };
+
     let empty_dir = builder.out.join("tmp/empty_dir");
 
     t!(fs::create_dir_all(&empty_dir));