Skip to content

Commit 50a7dce

Browse files
authored
Rollup merge of rust-lang#73350 - nodakai:install-rs-support-nonexistent-prefix, r=Mark-Simulacrum
bootstrap/install.rs: support a nonexistent `prefix` in `x.py install` PR rust-lang#49778 introduced fs::canonicalize() which fails for a nonexistent path. This is a surprise for someone used to GNU Autotools' configure which can create any necessary intermediate directories in prefix. This change makes it run fs::create_dir_all() before canonicalize().
2 parents 1dfba21 + 8e7606f commit 50a7dce

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/bootstrap/install.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ fn install_sh(
7070
let libdir_default = PathBuf::from("lib");
7171
let mandir_default = datadir_default.join("man");
7272
let prefix = builder.config.prefix.as_ref().map_or(prefix_default, |p| {
73-
fs::canonicalize(p).unwrap_or_else(|_| panic!("could not canonicalize {}", p.display()))
73+
fs::create_dir_all(p)
74+
.unwrap_or_else(|err| panic!("could not create {}: {}", p.display(), err));
75+
fs::canonicalize(p)
76+
.unwrap_or_else(|err| panic!("could not canonicalize {}: {}", p.display(), err))
7477
});
7578
let sysconfdir = builder.config.sysconfdir.as_ref().unwrap_or(&sysconfdir_default);
7679
let datadir = builder.config.datadir.as_ref().unwrap_or(&datadir_default);

0 commit comments

Comments
 (0)