]> git.lizzy.rs Git - rust.git/commitdiff
rustbuild: Retry downloads of OpenSSL source
authorAlex Crichton <alex@alexcrichton.com>
Wed, 15 Mar 2017 14:13:59 +0000 (07:13 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Wed, 15 Mar 2017 14:13:59 +0000 (07:13 -0700)
We need this to compile Cargo and we download it at build time, but as like all
other network requests it has a chance of failing. This commit moves the source
of the tarball to a mirror (S3 seems semi-more-reliable most of the time) and
also wraps the download in a retry loop.

cc #40474

src/bootstrap/native.rs

index 6cc1ca8d02ed04e33eaa9baa12dc82d7bbd290e8..dea1a607255a88fe6c1c329870bf552fd3733519 100644 (file)
@@ -222,9 +222,24 @@ pub fn openssl(build: &Build, target: &str) {
     let tarball = out.join(&name);
     if !tarball.exists() {
         let tmp = tarball.with_extension("tmp");
-        build.run(Command::new("curl")
-                        .arg("-o").arg(&tmp)
-                        .arg(format!("https://www.openssl.org/source/{}", name)));
+        // originally from https://www.openssl.org/source/...
+        let url = format!("https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/{}",
+                          name);
+        let mut ok = false;
+        for _ in 0..3 {
+            let status = Command::new("curl")
+                            .arg("-o").arg(&tmp)
+                            .arg(&url)
+                            .status()
+                            .expect("failed to spawn curl");
+            if status.success() {
+                ok = true;
+                break
+            }
+        }
+        if !ok {
+            panic!("failed to download openssl source")
+        }
         let mut shasum = if target.contains("apple") {
             let mut cmd = Command::new("shasum");
             cmd.arg("-a").arg("256");