]> git.lizzy.rs Git - rust.git/commitdiff
Remove `Session::sysroot()`.
authorNicholas Nethercote <nnethercote@mozilla.com>
Thu, 22 Nov 2018 04:49:48 +0000 (15:49 +1100)
committerNicholas Nethercote <nnethercote@mozilla.com>
Tue, 11 Dec 2018 23:36:15 +0000 (10:36 +1100)
Instead of maybe storing its own sysroot and maybe deferring to the one
in `Session::opts`, just clone the latter when necessary so one is
always directly available. This removes the need for the getter.

src/librustc/session/mod.rs
src/librustc_codegen_llvm/back/link.rs
src/librustc_codegen_ssa/back/linker.rs
src/librustc_driver/lib.rs
src/librustc_metadata/locator.rs

index d1dd745add9a4012ef15cfb2d196941fe7e00d35..56a57b5375fd8fad02a2cc6438de69b0b66fe64c 100644 (file)
@@ -48,7 +48,7 @@
 use std::env;
 use std::fmt;
 use std::io::Write;
-use std::path::{Path, PathBuf};
+use std::path::PathBuf;
 use std::time::Duration;
 use std::sync::mpsc;
 use std::sync::atomic::{AtomicUsize, Ordering};
@@ -69,7 +69,7 @@ pub struct Session {
     pub entry_fn: Once<Option<(NodeId, Span, config::EntryFnType)>>,
     pub plugin_registrar_fn: Once<Option<ast::NodeId>>,
     pub proc_macro_decls_static: Once<Option<ast::NodeId>>,
-    pub default_sysroot: Option<PathBuf>,
+    pub sysroot: PathBuf,
     /// The name of the root source file of the crate, in the local file system.
     /// `None` means that there is no source file.
     pub local_crate_source_file: Option<PathBuf>,
@@ -694,17 +694,9 @@ pub fn generate_proc_macro_decls_symbol(&self, disambiguator: CrateDisambiguator
         )
     }
 
-    pub fn sysroot<'a>(&'a self) -> &'a Path {
-        match self.opts.maybe_sysroot {
-            Some(ref sysroot) => sysroot,
-            None => self.default_sysroot
-                        .as_ref()
-                        .expect("missing sysroot and default_sysroot in Session"),
-        }
-    }
     pub fn target_filesearch(&self, kind: PathKind) -> filesearch::FileSearch<'_> {
         filesearch::FileSearch::new(
-            self.sysroot(),
+            &self.sysroot,
             self.opts.target_triple.triple(),
             &self.opts.search_paths,
             kind,
@@ -712,7 +704,7 @@ pub fn target_filesearch(&self, kind: PathKind) -> filesearch::FileSearch<'_> {
     }
     pub fn host_filesearch(&self, kind: PathKind) -> filesearch::FileSearch<'_> {
         filesearch::FileSearch::new(
-            self.sysroot(),
+            &self.sysroot,
             config::host_triple(),
             &self.opts.search_paths,
             kind,
@@ -1109,9 +1101,9 @@ pub fn build_session_(
     let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
 
     let p_s = parse::ParseSess::with_span_handler(span_diagnostic, source_map);
-    let default_sysroot = match sopts.maybe_sysroot {
-        Some(_) => None,
-        None => Some(filesearch::get_or_default_sysroot()),
+    let sysroot = match &sopts.maybe_sysroot {
+        Some(sysroot) => sysroot.clone(),
+        None => filesearch::get_or_default_sysroot(),
     };
 
     let file_path_mapping = sopts.file_path_mapping();
@@ -1147,7 +1139,7 @@ pub fn build_session_(
         entry_fn: Once::new(),
         plugin_registrar_fn: Once::new(),
         proc_macro_decls_static: Once::new(),
-        default_sysroot,
+        sysroot,
         local_crate_source_file,
         working_dir,
         lint_store: RwLock::new(lint::LintStore::new()),
index 9e100a1427fc4179fe4d729a14c30383b1e0eac7..20a7bf9a1a959e2301585014f59cae954624baaa 100644 (file)
@@ -1024,11 +1024,10 @@ fn link_args(cmd: &mut dyn Linker,
     // where extern libraries might live, based on the
     // addl_lib_search_paths
     if sess.opts.cg.rpath {
-        let sysroot = sess.sysroot();
         let target_triple = sess.opts.target_triple.triple();
         let mut get_install_prefix_lib_path = || {
             let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX");
-            let tlib = filesearch::relative_target_lib_path(sysroot, target_triple);
+            let tlib = filesearch::relative_target_lib_path(&sess.sysroot, target_triple);
             let mut path = PathBuf::from(install_prefix);
             path.push(&tlib);
 
index 2f92c427f657cdde4595a81427ae1fb829068a2c..4960c8922b9f98c879a687d033ddf929761d1b9b 100644 (file)
@@ -606,8 +606,7 @@ fn debuginfo(&mut self) {
         self.cmd.arg("/DEBUG");
 
         // This will cause the Microsoft linker to embed .natvis info into the PDB file
-        let sysroot = self.sess.sysroot();
-        let natvis_dir_path = sysroot.join("lib\\rustlib\\etc");
+        let natvis_dir_path = self.sess.sysroot.join("lib\\rustlib\\etc");
         if let Ok(natvis_dir) = fs::read_dir(&natvis_dir_path) {
             // LLVM 5.0.0's lld-link frontend doesn't yet recognize, and chokes
             // on, the /NATVIS:... flags.  LLVM 6 (or earlier) should at worst ignore
index 39777e0a65b50874725d45346f0a77cef60006e1..41c9b22afe06f968aaf489cf13e050db403db58d 100644 (file)
@@ -1042,7 +1042,7 @@ fn print_crate_info(codegen_backend: &dyn CodegenBackend,
                     targets.sort();
                     println!("{}", targets.join("\n"));
                 },
-                Sysroot => println!("{}", sess.sysroot().display()),
+                Sysroot => println!("{}", sess.sysroot.display()),
                 TargetSpec => println!("{}", sess.target.target.to_json().pretty()),
                 FileNames | CrateName => {
                     let input = input.unwrap_or_else(||
index 1f298f6d2d3a5502b5f2893bb0ec88c3d2789b65..f01ed9e3ceef71384136111a9842f129786ffd82 100644 (file)
@@ -678,7 +678,7 @@ fn extract_one(&mut self,
             // candidates are all canonicalized, so we canonicalize the sysroot
             // as well.
             if let Some((ref prev, _)) = ret {
-                let sysroot = self.sess.sysroot();
+                let sysroot = &self.sess.sysroot;
                 let sysroot = sysroot.canonicalize()
                                      .unwrap_or_else(|_| sysroot.to_path_buf());
                 if prev.starts_with(&sysroot) {