summaryrefslogtreecommitdiff
path: root/winpty/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'winpty/build.rs')
-rw-r--r--winpty/build.rs74
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();
-}