From a143ff2bfdf85063a173b77443b3560cf69eb8f3 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Fri, 31 Jan 2020 17:06:58 +0000 Subject: [PATCH] Use the internal download() function rather than curl --- cibuildwheel/macos.py | 9 +++++---- cibuildwheel/util.py | 31 +++++++++++++++++++++++++++++++ cibuildwheel/windows.py | 30 +----------------------------- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index e677d813..7480990f 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -8,7 +8,7 @@ try: except ImportError: from pipes import quote as shlex_quote -from .util import prepare_command, get_build_verbosity_extra_flags +from .util import prepare_command, get_build_verbosity_extra_flags, download def get_python_configurations(build_selector): @@ -51,19 +51,20 @@ 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', '--retry', '3', '--retry-delay', '3', '-sSLo', get_pip_script, get_pip_url]) + download(get_pip_url, get_pip_script) for config in python_configurations: # if this version of python isn't installed, get it from python.org and install python_package_identifier = 'org.python.Python.PythonFramework-%s' % config.version if python_package_identifier not in installed_system_packages: # download the pkg - call(['curl', '--retry', '3', '--retry-delay', '3', '-sSLo', '/tmp/Python.pkg', config.url]) + download(config.url, '/tmp/Python.pkg') # install call(['sudo', 'installer', '-pkg', '/tmp/Python.pkg', '-target', '/']) # patch open ssl if config.version == '3.5': - call(['curl', '--retry', '3', '--retry-delay', '3', '-fsSLo', '/tmp/python-patch.tar.gz', 'https://github.com/mayeut/patch-macos-python-openssl/releases/download/v1.0.2t/patch-macos-python-%s-openssl-v1.0.2t.tar.gz' % config.version]) + open_ssl_patch_url = 'https://github.com/mayeut/patch-macos-python-openssl/releases/download/v1.0.2t/patch-macos-python-%s-openssl-v1.0.2t.tar.gz' % config.version + download(open_ssl_patch_url, '/tmp/python-patch.tar.gz') call(['sudo', 'tar', '-C', '/Library/Frameworks/Python.framework/Versions/%s/' % config.version, '-xmf', '/tmp/python-patch.tar.gz']) installation_bin_path = '/Library/Frameworks/Python.framework/Versions/{}/bin'.format(config.version) diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index ccbe57c0..0aedbcac 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -1,5 +1,12 @@ from fnmatch import fnmatch import warnings +import os +from time import sleep + +try: + from urllib.request import urlopen +except ImportError: + from urllib2 import urlopen def prepare_command(command, **kwargs): @@ -50,3 +57,27 @@ class Unbuffered(object): def __getattr__(self, attr): return getattr(self.stream, attr) + + +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) + + 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() diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index c0923934..c50c9810 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -1,6 +1,5 @@ from __future__ import print_function import os, tempfile, subprocess, shutil, sys -from time import sleep from collections import namedtuple from glob import glob @@ -9,12 +8,7 @@ try: except ImportError: from pipes import quote as shlex_quote -try: - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen - -from .util import prepare_command, get_build_verbosity_extra_flags +from .util import prepare_command, get_build_verbosity_extra_flags, download IS_RUNNING_ON_AZURE = os.path.exists('C:\\hostedtoolcache') @@ -64,28 +58,6 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef 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) - 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: