/compiler/rustc_codegen_cranelift/build_system/rustc_info.rs
https://gitlab.com/rust-lang/rust · Rust · 65 lines · 60 code · 5 blank · 0 comment · 0 complexity · 082b56143c87aeaecd852794ab5a2238 MD5 · raw file
- use std::path::{Path, PathBuf};
- use std::process::{Command, Stdio};
- pub(crate) fn get_rustc_version() -> String {
- let version_info =
- Command::new("rustc").stderr(Stdio::inherit()).args(&["-V"]).output().unwrap().stdout;
- String::from_utf8(version_info).unwrap()
- }
- pub(crate) fn get_host_triple() -> String {
- let version_info =
- Command::new("rustc").stderr(Stdio::inherit()).args(&["-vV"]).output().unwrap().stdout;
- String::from_utf8(version_info)
- .unwrap()
- .lines()
- .to_owned()
- .find(|line| line.starts_with("host"))
- .unwrap()
- .split(":")
- .nth(1)
- .unwrap()
- .trim()
- .to_owned()
- }
- pub(crate) fn get_rustc_path() -> PathBuf {
- let rustc_path = Command::new("rustup")
- .stderr(Stdio::inherit())
- .args(&["which", "rustc"])
- .output()
- .unwrap()
- .stdout;
- Path::new(String::from_utf8(rustc_path).unwrap().trim()).to_owned()
- }
- pub(crate) fn get_default_sysroot() -> PathBuf {
- let default_sysroot = Command::new("rustc")
- .stderr(Stdio::inherit())
- .args(&["--print", "sysroot"])
- .output()
- .unwrap()
- .stdout;
- Path::new(String::from_utf8(default_sysroot).unwrap().trim()).to_owned()
- }
- pub(crate) fn get_file_name(crate_name: &str, crate_type: &str) -> String {
- let file_name = Command::new("rustc")
- .stderr(Stdio::inherit())
- .args(&[
- "--crate-name",
- crate_name,
- "--crate-type",
- crate_type,
- "--print",
- "file-names",
- "-",
- ])
- .output()
- .unwrap()
- .stdout;
- let file_name = String::from_utf8(file_name).unwrap().trim().to_owned();
- assert!(!file_name.contains('\n'));
- assert!(file_name.contains(crate_name));
- file_name
- }