diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 3bd0df79..5ada8ab2 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -50,7 +50,8 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef return subprocess.check_call(args, env=env, cwd=cwd, shell=shell) # get latest pip once and for all - call(['curl', '-L', '-o', get_pip_script, get_pip_url]) + + call(['curl', '-L', '--retry', '3', '--retry-delay', '3', '-o', get_pip_script, get_pip_url]) for config in python_configurations: # if this version of python isn't installed, get it from python.org and install diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 7c03f815..61999fcc 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -1,5 +1,6 @@ from __future__ import print_function import os, tempfile, subprocess, shutil, sys +from time import sleep from collections import namedtuple from glob import glob @@ -62,17 +63,29 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef print('+ ' + ' '.join(args)) args = ['cmd', '/E:ON', '/V:ON', '/C'] + args return subprocess.check_call(' '.join(args), env=env, cwd=cwd) + def download(url, dest): print('+ Download ' + url + ' to ' + dest) dest_dir = os.path.dirname(dest) if not os.path.exists(dest_dir): os.makedirs(dest_dir) - response = urlopen(url) + repeat_num = 3 + for i in range(repeat_num): + try: + response = urlopen(url) + except: + if i == repeat_num - 1: + raise + sleep(3) + continue + break + try: with open(dest, 'wb') as file: file.write(response.read()) finally: response.close() + if IS_RUNNING_ON_AZURE or IS_RUNNING_ON_TRAVIS: shell = simple_shell else: