about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukas.wirth@ferrous-systems.com>2024-03-06 10:19:34 +0100
committerLukas Wirth <lukas.wirth@ferrous-systems.com>2024-03-25 22:19:41 +0000
commit2fae4ee92ea9a28722673df442112446f7521079 (patch)
treea0542cc2df6422c03afe7cc9dbade9e67f22d675
parent9ae4e3eb7ca9f9e6c61cedcd8c32f790867a4b37 (diff)
downloadrust-2fae4ee92ea9a28722673df442112446f7521079.tar.gz
rust-2fae4ee92ea9a28722673df442112446f7521079.zip
Make sysroot mandatory for rustdoc
-rw-r--r--compiler/rustc_interface/src/tests.rs2
-rw-r--r--compiler/rustc_session/src/config.rs3
-rw-r--r--compiler/rustc_session/src/search_paths.rs15
-rw-r--r--src/librustdoc/config.rs9
4 files changed, 13 insertions, 16 deletions
diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs
index 8e43d6974fe..3b78e6a43ab 100644
--- a/compiler/rustc_interface/src/tests.rs
+++ b/compiler/rustc_interface/src/tests.rs
@@ -317,7 +317,7 @@ fn test_search_paths_tracking_hash_different_order() {
 
     let push = |opts: &mut Options, search_path| {
         opts.search_paths.push(SearchPath::from_cli_opt(
-            None,
+            "not-a-sysroot".as_ref(),
             &opts.target_triple,
             &early_dcx,
             search_path,
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs
index 79328659227..8d186f7c749 100644
--- a/compiler/rustc_session/src/config.rs
+++ b/compiler/rustc_session/src/config.rs
@@ -2824,7 +2824,6 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
     let logical_env = parse_logical_env(early_dcx, matches);
 
     let sysroot = filesearch::materialize_sysroot(sysroot_opt);
-
     let real_rust_source_base_dir = {
         // This is the location used by the `rust-src` `rustup` component.
         let mut candidate = sysroot.join("lib/rustlib/src/rust");
@@ -2845,7 +2844,7 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
 
     let mut search_paths = vec![];
     for s in &matches.opt_strs("L") {
-        search_paths.push(SearchPath::from_cli_opt(Some(&sysroot), &target_triple, early_dcx, s));
+        search_paths.push(SearchPath::from_cli_opt(&sysroot, &target_triple, early_dcx, s));
     }
 
     let working_dir = std::env::current_dir().unwrap_or_else(|e| {
diff --git a/compiler/rustc_session/src/search_paths.rs b/compiler/rustc_session/src/search_paths.rs
index 58b4a08b5b0..9cabdec34ae 100644
--- a/compiler/rustc_session/src/search_paths.rs
+++ b/compiler/rustc_session/src/search_paths.rs
@@ -48,7 +48,7 @@ impl PathKind {
 
 impl SearchPath {
     pub fn from_cli_opt(
-        sysroot: Option<&Path>,
+        sysroot: &Path,
         triple: &TargetTriple,
         early_dcx: &EarlyDiagCtxt,
         path: &str,
@@ -64,21 +64,12 @@ impl SearchPath {
         } else if let Some(stripped) = path.strip_prefix("all=") {
             (PathKind::All, stripped)
         } else if let Some(stripped) = path.strip_prefix("builtin:") {
-            let Some(sysroot) = sysroot else {
-                early_dcx.early_fatal("`-L builtin:` is not supported without a sysroot present");
-            };
-            let triple = match triple {
-                TargetTriple::TargetTriple(triple) => triple,
-                TargetTriple::TargetJson { .. } => {
-                    early_dcx.early_fatal("`-L builtin:` is not supported with custom targets");
-                }
-            };
-
             if stripped.contains(std::path::is_separator) {
                 early_dcx.early_fatal("`-L builtin:` does not accept paths");
             }
 
-            let path = make_target_lib_path(sysroot, triple).join("builtin").join(stripped);
+            let path =
+                make_target_lib_path(sysroot, triple.triple()).join("builtin").join(stripped);
             if !path.is_dir() {
                 early_dcx.early_fatal(format!("builtin:{stripped} does not exist"));
             }
diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs
index fdbbe62c158..f078ad2fb53 100644
--- a/src/librustdoc/config.rs
+++ b/src/librustdoc/config.rs
@@ -625,10 +625,17 @@ impl Options {
         let target = parse_target_triple(early_dcx, matches);
         let maybe_sysroot = matches.opt_str("sysroot").map(PathBuf::from);
 
+        let sysroot = match &maybe_sysroot {
+            Some(s) => s.clone(),
+            None => {
+                rustc_session::filesearch::get_or_default_sysroot().expect("Failed finding sysroot")
+            }
+        };
+
         let libs = matches
             .opt_strs("L")
             .iter()
-            .map(|s| SearchPath::from_cli_opt(maybe_sysroot.as_deref(), &target, early_dcx, s))
+            .map(|s| SearchPath::from_cli_opt(&sysroot, &target, early_dcx, s))
             .collect();
 
         let show_coverage = matches.opt_present("show-coverage");