From e80f7f477409360b3b140795478d6d72fd1f8171 Mon Sep 17 00:00:00 2001 From: Yannick Jadoul Date: Fri, 13 Dec 2019 21:52:40 +0100 Subject: [PATCH] Trying out PyPy 7.3.0rc1 on macOS and Windows --- cibuildwheel/linux.py | 4 ++-- cibuildwheel/macos.py | 16 ++-------------- cibuildwheel/windows.py | 5 ++--- test/06_docker_images/cibuildwheel_test.py | 2 +- test/shared/utils.py | 11 ++++++----- 5 files changed, 13 insertions(+), 25 deletions(-) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 848a2b94..aa6b7655 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -27,8 +27,8 @@ def get_python_configurations(build_selector): PythonConfiguration(identifier='cp36-manylinux_i686', path='/opt/python/cp36-cp36m'), PythonConfiguration(identifier='cp37-manylinux_i686', path='/opt/python/cp37-cp37m'), PythonConfiguration(identifier='cp38-manylinux_i686', path='/opt/python/cp38-cp38'), - PythonConfiguration(identifier='pp272-manylinux_pypy_x86_64', path='/opt/python/pp272-pypy_41'), - PythonConfiguration(identifier='pp372-manylinux_pypy_x86_64', path='/opt/python/pp372-pypy3_72'), + PythonConfiguration(identifier='pp27_72-manylinux_pypy_x86_64', path='/opt/python/pp272-pypy_41'), + PythonConfiguration(identifier='pp36_72-manylinux_pypy_x86_64', path='/opt/python/pp372-pypy3_72'), ] # skip builds as required diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 267824d9..feed2e84 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -21,8 +21,8 @@ def get_python_configurations(build_selector): PythonConfiguration(version='3.6', identifier='cp36-macosx_x86_64', url='https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg'), PythonConfiguration(version='3.7', identifier='cp37-macosx_x86_64', url='https://www.python.org/ftp/python/3.7.6/python-3.7.6-macosx10.9.pkg'), PythonConfiguration(version='3.8', identifier='cp38-macosx_x86_64', url='https://www.python.org/ftp/python/3.8.1/python-3.8.1-macosx10.9.pkg'), - PythonConfiguration(version='2.7-v7.2.0', identifier='pp272-macosx_x86_64', url='https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.2.0-osx64.tar.bz2'), - PythonConfiguration(version='3.6-v7.2.0', identifier='pp372-macosx_x86_64', url='https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.2.0-osx64.tar.bz2'), + PythonConfiguration(version='2.7-v7.3.0rc1', identifier='pp27_73-macosx_x86_64', url='https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0rc1-osx64.tar.bz2'), + PythonConfiguration(version='3.6-v7.3.0rc1', identifier='pp36_73-macosx_x86_64', url='https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0rc1-osx64.tar.bz2'), ] # skip builds as required @@ -83,15 +83,6 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef python_symlink = 'python' if config.version[0] == '2' else 'python3' os.symlink(os.path.join(installation_bin_path, pypy_executable), os.path.join(installation_bin_path, python_symlink)) - # Workaround for a too high 'MACOSX_DEPLOYMENT_TARGET' in PyPy 2.7, v7.2.0; fixed in HEAD and next release - if config.version[0] == '2': - sysconfig_pypy_path = os.path.join('/tmp', pypy_base_filename, 'lib-python', '2.7', 'distutils', 'sysconfig_pypy.py') - with open(sysconfig_pypy_path, 'r') as f: - sysconfig_pypy_contents = f.read() - sysconfig_pypy_contents = sysconfig_pypy_contents.replace("g['MACOSX_DEPLOYMENT_TARGET'] = '10.14'", "g['MACOSX_DEPLOYMENT_TARGET'] = '10.7'") - with open(sysconfig_pypy_path, 'w') as f: - f.write(sysconfig_pypy_contents) - assert os.path.exists(os.path.join(installation_bin_path, 'python3' if config.version[0] == '3' else 'python')) # Python bin folders on Mac don't symlink python3 to python, so we do that @@ -111,9 +102,6 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef installation_bin_path, env['PATH'], ]) - # PyPy 3.6, v7.2.0 doesn't set MACOSX_DEPLOYMENT_TARGET in distutils.sysconfig, so let's set it ourselves until this gets settled - if config.identifier.startswith('pp') and config.version[0] == '3' and 'MACOSX_DEPLOYMENT_TARGET' not in env: - env['MACOSX_DEPLOYMENT_TARGET'] = '10.13' env = environment.as_dictionary(prev_environment=env) # check what version we're on diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index d1f90281..68f1493d 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -47,8 +47,8 @@ def get_python_configurations(build_selector): PythonConfiguration(version='3.7.6', arch="64", identifier='cp37-win_amd64', url=None), PythonConfiguration(version='3.8.1', arch="32", identifier='cp38-win32', url=None), PythonConfiguration(version='3.8.1', arch="64", identifier='cp38-win_amd64', url=None), - PythonConfiguration(version='2.7-v7.2.0', arch="32", identifier='pp272-win32', url='https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.2.0-win32.zip'), - PythonConfiguration(version='3.6-v7.2.0', arch="32", identifier='pp372-win32', url='https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.2.0-win32.zip'), + PythonConfiguration(version='2.7-v7.3.0rc1', arch="32", identifier='pp27_73-win32', url='https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0rc1-win32.zip'), + PythonConfiguration(version='3.6-v7.3.0rc1', arch="32", identifier='pp36_73-win32', url='https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0rc1-win32.zip'), ] if IS_RUNNING_ON_TRAVIS: @@ -111,7 +111,6 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef pypy_exe = 'pypy.exe' if config.version[0] == '2' else 'pypy3.exe' simple_shell(['mklink', os.path.join(config_python_path, 'python.exe'), os.path.join(config_python_path, pypy_exe)]) simple_shell(['mklink', '/d', os.path.join(config_python_path, 'Scripts'), os.path.join(config_python_path, 'bin')]) - simple_shell(['chcp', '437']) # Workaround for https://bitbucket.org/pypy/pypy/issues/3081/ assert os.path.exists(os.path.join(config_python_path, 'python.exe')) # set up PATH and environment variables for run_with_env diff --git a/test/06_docker_images/cibuildwheel_test.py b/test/06_docker_images/cibuildwheel_test.py index 4dbf40bd..4b081e98 100644 --- a/test/06_docker_images/cibuildwheel_test.py +++ b/test/06_docker_images/cibuildwheel_test.py @@ -19,5 +19,5 @@ def test(): # also check that we got the right wheels built expected_wheels = [w for w in utils.expected_wheels('spam', '0.1.0') - if 'pypy' not in w] + if '-pp' not in w] assert set(actual_wheels) == set(expected_wheels) diff --git a/test/shared/utils.py b/test/shared/utils.py index f78ac0e3..47bfa6e8 100644 --- a/test/shared/utils.py +++ b/test/shared/utils.py @@ -80,9 +80,12 @@ def expected_wheels(package_name, package_version, manylinux_versions=['manylinu # {python tag} and {abi tag} are closely related to the python interpreter used to build the wheel # so we'll merge them below as python_abi_tag python_abi_tags = ['cp27-cp27m', 'cp35-cp35m', 'cp36-cp36m', 'cp37-cp37m', 'cp38-cp38', - 'pp272-pypy_41', 'pp372-pypy3_72'] + 'pp273-pypy_73', 'pp373-pypy36_pp73'] if platform == 'linux': python_abi_tags.append('cp27-cp27mu') # python 2.7 has 2 different ABI on manylinux + # We don't have PyPy 7.3.0rc1 yet on the manylinux image + python_abi_tags[python_abi_tags.index('pp273-pypy_73')] = 'pp272-pypy_41' + python_abi_tags[python_abi_tags.index('pp373-pypy36_pp73')] = 'pp372-pypy3_72' architectures = {'cp': ['x86_64', 'i686'], 'pp': ['x86_64']} platform_tags = {} for python_implemention in architectures: @@ -95,8 +98,6 @@ def expected_wheels(package_name, package_version, manylinux_versions=['manylinu def get_platform_tags(python_abi_tag): return platform_tags[python_abi_tag[:2]] elif platform == 'windows': - # The PyPy3 ABI tag for Windows will be consistent in the 7.3.0 release - python_abi_tags[python_abi_tags.index('pp372-pypy3_72')] = 'pp372-pp372' platform_tags = {'cp': ['win32', 'win_amd64'], 'pp': ['win32']} def get_platform_tags(python_abi_tag): return platform_tags[python_abi_tag[:2]] @@ -104,9 +105,9 @@ def expected_wheels(package_name, package_version, manylinux_versions=['manylinu elif platform == 'macos': def get_platform_tags(python_abi_tag): default_version = '10.9' - if python_abi_tag == 'pp272-pypy_41': + if python_abi_tag == 'pp273-pypy_73': default_version = '10.7' - elif python_abi_tag == 'pp372-pypy3_72': + elif python_abi_tag == 'pp373-pypy36_pp73': default_version = '10.13' return ['macosx_{}_x86_64'.format((macosx_deployment_target or default_version).replace('.', '_'))] else: