diff options
Diffstat (limited to 'winpty/build.rs')
-rw-r--r-- | winpty/build.rs | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/winpty/build.rs b/winpty/build.rs deleted file mode 100644 index ae141f7e..00000000 --- a/winpty/build.rs +++ /dev/null @@ -1,74 +0,0 @@ -#[cfg(windows)] -use std::fs::OpenOptions; -#[cfg(windows)] -use std::io; - -#[cfg(windows)] -use std::env; -#[cfg(windows)] -use std::fs::{copy, File}; -#[cfg(windows)] -use std::path::Path; - -#[cfg(windows)] -use http_req; -#[cfg(windows)] -use tempfile; -#[cfg(windows)] -use zip; - -#[cfg(windows)] -const WINPTY_PACKAGE_URL: &str = - "https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip"; - -fn main() { - #[cfg(windows)] - { - // Path is relative to target/{profile}/build/alacritty-HASH/out - let file = Path::new(&env::var("OUT_DIR").unwrap()).join("../../../winpty-agent.exe"); - if !file.exists() { - aquire_winpty_agent(&file); - } - - // The working directory for `cargo test` is in the deps folder, not the debug/release root - copy(&file, file.parent().unwrap().join("deps/winpty-agent.exe")).unwrap(); - } -} - -#[cfg(windows)] -fn aquire_winpty_agent(out_path: &Path) { - let tmp_dir = tempfile::Builder::new().prefix("alacritty_build").tempdir().unwrap(); - - let mut file = OpenOptions::new() - .read(true) - .write(true) - .create(true) - .open(tmp_dir.path().join("winpty_package.zip")) - .unwrap(); - let mut redirects = 0; - let mut url = WINPTY_PACKAGE_URL.to_string(); - loop { - let res = http_req::request::get(url.clone(), &mut file).unwrap(); - if res.status_code().is_redirect() { - redirects += 1; - url = res.headers().get("Location").unwrap().to_string(); - if redirects > 5 { - panic!("Too many redirects"); - } - } else { - break; - } - } - - let mut archive = zip::ZipArchive::new(file).unwrap(); - - let target = match env::var("TARGET").unwrap().split('-').next().unwrap() { - "x86_64" => "x64", - "i386" => "ia32", - _ => panic!("architecture has no winpty binary"), - }; - - let mut winpty_agent = archive.by_name(&format!("{}/bin/winpty-agent.exe", target)).unwrap(); - - io::copy(&mut winpty_agent, &mut File::create(out_path).unwrap()).unwrap(); -} |