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