diff --git a/.circleci/config.yml b/.circleci/config.yml index 66777904..1ff2edb9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ version: 2 jobs: osx-python3.6: macos: - xcode: "9.4.1" + xcode: 10.2.1 environment: PYTHON: python3 steps: diff --git a/.travis.yml b/.travis.yml index c30a4ab6..df904eba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,10 @@ jobs: - name: macOS | x86_64 | Python 3.x os: osx - env: PYTHON=python3 + osx_image: xcode10.2 + env: + - PYTHON=python3 + - PYTEST_ADDOPTS='-k "unit_test or test_0_basic" --suppress-no-test-exit-code' - name: Windows | x86_64 | Python 3.6 os: windows @@ -52,6 +55,6 @@ jobs: # must repeat the s390x job above exactly to match - *linux_s390x_36 -install: $PYTHON -m pip install -r requirements-dev.txt +install: $PYTHON -m pip install -r requirements-dev.txt pytest-custom-exit-code script: $PYTHON ./bin/run_tests.py diff --git a/README.md b/README.md index e833f4e8..109f8af3 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,9 @@ What does it do? | CPython 3.7 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅² | ✅³ | | CPython 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅² | ✅³ | | CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅² | ✅³ | -| PyPy 2.7 v7.3.0 | ✅ | | ✅ | ✅ | | | | | -| PyPy 3.6 v7.3.0 | ✅ | | ✅ | ✅ | | | | | +| PyPy 2.7 v7.3.2 | ✅ | | ✅ | ✅ | | | | | +| PyPy 3.6 v7.3.2 | ✅ | | ✅ | ✅ | | | | | +| PyPy 3.7 (alpha) v7.3.2 | ✅ | | ✅ | ✅ | | | | | ¹ Not supported on Travis
² Only supported on Travis
@@ -66,6 +67,8 @@ jobs: - services: docker # and a mac build - os: osx + # PyPy 7.3.2 needs macOS >= 10.14 + osx_image: xcode10.2 language: shell # and a windows build - os: windows diff --git a/appveyor.yml b/appveyor.yml index 5162f1b6..acc69fdf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,7 +1,4 @@ environment: - # workaround an appveyor bug on macos - # see https://github.com/appveyor/ci/issues/3376#issuecomment-611314299 - APPVEYOR_CONSOLE_DISABLE_PTY: true matrix: - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu APPVEYOR_JOB_NAME: "python37-x64-ubuntu" @@ -10,11 +7,6 @@ environment: - APPVEYOR_BUILD_WORKER_IMAGE: macos-mojave APPVEYOR_JOB_NAME: "python37-x64-macos-mojave" -# while pypy libffi dependency is failing the build, allow failures on macos -matrix: - allow_failures: - - APPVEYOR_BUILD_WORKER_IMAGE: macos-mojave - stack: python 3.7 build: off @@ -24,7 +16,7 @@ init: - ps: | $BRANCH = if ($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH) { $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH } else { $env:APPVEYOR_REPO_BRANCH } if (-not ($BRANCH -eq 'master' -or $BRANCH.ToLower().StartsWith('appveyor-'))) { - $env:PYTEST_ADDOPTS='-k "unit_test or _basic" --suppress-no-test-exit-code' + $env:PYTEST_ADDOPTS='-k "unit_test or test_0_basic" --suppress-no-test-exit-code' } install: python -m pip install -r requirements-dev.txt pytest-custom-exit-code diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index ce0806c4..e601a8cf 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -60,6 +60,7 @@ def get_python_configurations(build_selector: BuildSelector) -> List[PythonConfi PythonConfiguration(version='3.9', identifier='cp39-manylinux_i686', path_str='/opt/python/cp39-cp39'), PythonConfiguration(version='2.7', identifier='pp27-manylinux_x86_64', path_str='/opt/python/pp27-pypy_73'), PythonConfiguration(version='3.6', identifier='pp36-manylinux_x86_64', path_str='/opt/python/pp36-pypy36_pp73'), + PythonConfiguration(version='3.7', identifier='pp37-manylinux_x86_64', path_str='/opt/python/pp37-pypy37_pp73'), PythonConfiguration(version='3.5', identifier='cp35-manylinux_aarch64', path_str='/opt/python/cp35-cp35m'), PythonConfiguration(version='3.6', identifier='cp36-manylinux_aarch64', path_str='/opt/python/cp36-cp36m'), PythonConfiguration(version='3.7', identifier='cp37-manylinux_aarch64', path_str='/opt/python/cp37-cp37m'), diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 0d07d32a..0df82efb 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -40,8 +40,9 @@ def get_python_configurations(build_selector: BuildSelector) -> List[PythonConfi PythonConfiguration(version='3.8', identifier='cp38-macosx_x86_64', url='https://www.python.org/ftp/python/3.8.4/python-3.8.4-macosx10.9.pkg'), PythonConfiguration(version='3.9', identifier='cp39-macosx_x86_64', url='https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-macosx10.9.pkg'), # PyPy - PythonConfiguration(version='2.7', identifier='pp27-macosx_x86_64', url='https://downloads.python.org/pypy/pypy2.7-v7.3.1-osx64.tar.bz2'), - PythonConfiguration(version='3.6', identifier='pp36-macosx_x86_64', url='https://downloads.python.org/pypy/pypy3.6-v7.3.1-osx64.tar.bz2'), + PythonConfiguration(version='2.7', identifier='pp27-macosx_x86_64', url='https://downloads.python.org/pypy/pypy2.7-v7.3.2-osx64.tar.bz2'), + PythonConfiguration(version='3.6', identifier='pp36-macosx_x86_64', url='https://downloads.python.org/pypy/pypy3.6-v7.3.2-osx64.tar.bz2'), + PythonConfiguration(version='3.7', identifier='pp37-macosx_x86_64', url='https://downloads.python.org/pypy/pypy3.7-v7.3.2-osx64.tar.bz2'), ] # skip builds as required diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 08272bbd..29befeb5 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,22 +1,22 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2020-09-20-9444d5c -manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2020-09-20-6131e60 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2020-09-20-fb9af88 +manylinux1 = quay.io/pypa/manylinux1_x86_64:2020-09-26-9f151ab +manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2020-09-26-58cbbcd +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2020-09-26-7f7a14f [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2020-09-20-9444d5c -manylinux2010 = quay.io/pypa/manylinux2010_i686:2020-09-20-6131e60 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2020-09-20-fb9af88 +manylinux1 = quay.io/pypa/manylinux1_i686:2020-09-26-9f151ab +manylinux2010 = quay.io/pypa/manylinux2010_i686:2020-09-26-58cbbcd +manylinux2014 = quay.io/pypa/manylinux2014_i686:2020-09-26-7f7a14f [pypy_x86_64] -manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2020-07-02-fd8c128 +manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2020-09-26-8f210b5 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2020-09-20-fb9af88 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2020-09-26-7f7a14f [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2020-09-20-fb9af88 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2020-09-26-7f7a14f [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2020-09-20-fb9af88 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2020-09-26-7f7a14f diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 9eb8c9e9..1a5da2a2 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -61,8 +61,9 @@ def get_python_configurations(build_selector: BuildSelector) -> List[PythonConfi PythonConfiguration(version='3.9.0-rc1', arch='32', identifier='cp39-win32', url=None), PythonConfiguration(version='3.9.0-rc1', arch='64', identifier='cp39-win_amd64', url=None), # PyPy - PythonConfiguration(version='2.7', arch='32', identifier='pp27-win32', url='https://downloads.python.org/pypy/pypy2.7-v7.3.1-win32.zip'), - PythonConfiguration(version='3.6', arch='32', identifier='pp36-win32', url='https://downloads.python.org/pypy/pypy3.6-v7.3.1-win32.zip'), + PythonConfiguration(version='2.7', arch='32', identifier='pp27-win32', url='https://downloads.python.org/pypy/pypy2.7-v7.3.2-win32.zip'), + PythonConfiguration(version='3.6', arch='32', identifier='pp36-win32', url='https://downloads.python.org/pypy/pypy3.6-v7.3.2-win32.zip'), + PythonConfiguration(version='3.7', arch='32', identifier='pp37-win32', url='https://downloads.python.org/pypy/pypy3.7-v7.3.2-win32.zip'), ] if IS_RUNNING_ON_TRAVIS: diff --git a/docs/options.md b/docs/options.md index 856f0bad..3d37f3e4 100644 --- a/docs/options.md +++ b/docs/options.md @@ -86,13 +86,15 @@ When setting the options, you can use shell-style globbing syntax (as per [`fnma | Python 3.6 | cp36-macosx_x86_64 | cp36-manylinux_x86_64 | cp36-manylinux_i686 | cp36-win_amd64 | cp36-win32 | cp36-manylinux_aarch64 | cp36-manylinux_ppc64le | cp36-manylinux_s390x | | Python 3.7 | cp37-macosx_x86_64 | cp37-manylinux_x86_64 | cp37-manylinux_i686 | cp37-win_amd64 | cp37-win32 | cp37-manylinux_aarch64 | cp37-manylinux_ppc64le | cp37-manylinux_s390x | | Python 3.8 | cp38-macosx_x86_64 | cp38-manylinux_x86_64 | cp38-manylinux_i686 | cp38-win_amd64 | cp38-win32 | cp38-manylinux_aarch64 | cp38-manylinux_ppc64le | cp38-manylinux_s390x | -| PyPy 2.7 v7.3.0 | pp27-macosx_x86_64 | pp27-manylinux_x86_64 | | | pp27-win32 | | | | -| PyPy 3.6 v7.3.0 | pp36-macosx_x86_64 | pp36-manylinux_x86_64 | | | pp36-win32 | | | | +| PyPy 2.7 v7.3.2 | pp27-macosx_x86_64 | pp27-manylinux_x86_64 | | | pp27-win32 | | | | +| PyPy 3.6 v7.3.2 | pp36-macosx_x86_64 | pp36-manylinux_x86_64 | | | pp36-win32 | | | | +| PyPy 3.7 (alpha) v7.3.2 | pp37-macosx_x86_64 | pp37-manylinux_x86_64 | | | pp37-win32 | | | | + The list of supported and currently selected build identifiers can also be retrieved by passing the `--print-build-identifiers` flag to `cibuildwheel`. The format is `python_tag-platform_tag`, with tags similar to those in [PEP 425](https://www.python.org/dev/peps/pep-0425/#details). -For CPython, the minimally supported macOS version is 10.9; for PyPy 2.7 and PyPy 3.6, respectively macOS 10.7 and 10.13 or higher is required. +For CPython, the minimally supported macOS version is 10.9; for PyPy 2.7 and PyPy 3.6/3.7, respectively macOS 10.7 and 10.13 or higher is required. #### Examples diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index 1ce2b02a..6f1cd665 100644 --- a/examples/circleci-minimal.yml +++ b/examples/circleci-minimal.yml @@ -19,7 +19,8 @@ jobs: osx-wheels: working_directory: ~/osx-wheels macos: - xcode: "10.0.0" + # PyPy 7.3.2 needs macOS >= 10.14 + xcode: 10.2.1 steps: - checkout - run: diff --git a/examples/travis-ci-deploy.yml b/examples/travis-ci-deploy.yml index 8eea3c4e..a2d6c704 100644 --- a/examples/travis-ci-deploy.yml +++ b/examples/travis-ci-deploy.yml @@ -9,6 +9,8 @@ jobs: - services: docker # and a mac build - os: osx + # PyPy 7.3.2 needs macOS >= 10.14 + osx_image: xcode10.2 language: shell # and a windows build - os: windows diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index 85c24165..f972fbdb 100644 --- a/examples/travis-ci-minimal.yml +++ b/examples/travis-ci-minimal.yml @@ -15,6 +15,8 @@ jobs: arch: s390x # and a mac build - os: osx + # PyPy 7.3.2 needs macOS >= 10.14 + osx_image: xcode10.2 language: shell # and a windows build - os: windows diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index 8352f7d3..efdf6df8 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -64,6 +64,8 @@ jobs: - stage: deploy name: Build and deploy macOS wheels os: osx + # PyPy 7.3.2 needs macOS >= 10.14 + osx_image: xcode10.2 language: shell install: python3 -m pip install cibuildwheel==1.6.1 script: python3 -m cibuildwheel --output-dir wheelhouse diff --git a/test/utils.py b/test/utils.py index 05f2a796..04f3e147 100644 --- a/test/utils.py +++ b/test/utils.py @@ -94,7 +94,7 @@ def expected_wheels(package_name, package_version, manylinux_versions=None, python_abi_tags = ['cp35-cp35m', 'cp36-cp36m', 'cp37-cp37m', 'cp38-cp38', 'cp39-cp39'] if pm.machine() in ['x86_64', 'AMD64', 'x86']: - python_abi_tags += ['cp27-cp27m', 'pp27-pypy_73', 'pp36-pypy36_pp73'] + python_abi_tags += ['cp27-cp27m', 'pp27-pypy_73', 'pp36-pypy36_pp73', 'pp37-pypy37_pp73'] if platform == 'linux': python_abi_tags.append('cp27-cp27mu') # python 2.7 has 2 different ABI on manylinux