about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-07-15 05:20:34 +0000
committerbors <bors@rust-lang.org>2019-07-15 05:20:34 +0000
commit48b50e80b19fa8ccb26ebb4fba26b5035f153fed (patch)
treeef3f435095816ac8bb149b3f9cb6ea18ead8afcb /src
parent36fb64639401d815f005dba1d437dd1a31c3a5e8 (diff)
parentce2a7b0160ea8220249d73a386edd0ca85015f66 (diff)
downloadrust-48b50e80b19fa8ccb26ebb4fba26b5035f153fed.tar.gz
rust-48b50e80b19fa8ccb26ebb4fba26b5035f153fed.zip
Auto merge of #3418 - phansch:add_travis_windows_build, r=me,flip1995
Fix Travis Windows build

Closes #3306
Diffstat (limited to 'src')
-rw-r--r--src/driver.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/driver.rs b/src/driver.rs
index e6b04bf0cfd..545c43f9a45 100644
--- a/src/driver.rs
+++ b/src/driver.rs
@@ -12,7 +12,7 @@ extern crate rustc_plugin;
 use rustc_interface::interface;
 use rustc_tools_util::*;
 
-use std::path::Path;
+use std::path::{Path, PathBuf};
 use std::process::{exit, Command};
 
 mod lintlist;
@@ -270,12 +270,19 @@ pub fn main() {
             let sys_root_arg = arg_value(&orig_args, "--sysroot", |_| true);
             let have_sys_root_arg = sys_root_arg.is_some();
             let sys_root = sys_root_arg
-                .map(std::string::ToString::to_string)
-                .or_else(|| std::env::var("SYSROOT").ok())
+                .map(PathBuf::from)
+                .or_else(|| std::env::var("SYSROOT").ok().map(PathBuf::from))
                 .or_else(|| {
                     let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME"));
                     let toolchain = option_env!("RUSTUP_TOOLCHAIN").or(option_env!("MULTIRUST_TOOLCHAIN"));
-                    home.and_then(|home| toolchain.map(|toolchain| format!("{}/toolchains/{}", home, toolchain)))
+                    home.and_then(|home| {
+                        toolchain.map(|toolchain| {
+                            let mut path = PathBuf::from(home);
+                            path.push("toolchains");
+                            path.push(toolchain);
+                            path
+                        })
+                    })
                 })
                 .or_else(|| {
                     Command::new("rustc")
@@ -284,9 +291,10 @@ pub fn main() {
                         .output()
                         .ok()
                         .and_then(|out| String::from_utf8(out.stdout).ok())
-                        .map(|s| s.trim().to_owned())
+                        .map(|s| PathBuf::from(s.trim()))
                 })
-                .or_else(|| option_env!("SYSROOT").map(String::from))
+                .or_else(|| option_env!("SYSROOT").map(PathBuf::from))
+                .map(|pb| pb.to_string_lossy().to_string())
                 .expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");
 
             // Setting RUSTC_WRAPPER causes Cargo to pass 'rustc' as the first argument.