Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update PyPy to 7.3.5 and use PyPA's manylinux images with PyPy #671

Merged
merged 15 commits into from
May 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ What does it do?
| CPython 3.7 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.8 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| PyPy 3.7 v7.3 | ✅ | | ✅ | | ✅ | | | | |
| PyPy 3.7 v7.3 | ✅ | | ✅ | | ✅ | ✅ | ✅ | | |

- Builds manylinux, macOS 10.9+, and Windows wheels for CPython and PyPy
- Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, and GitLab CI
Expand Down Expand Up @@ -110,7 +110,7 @@ Options
| | [`CIBW_BEFORE_ALL`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-all) | Execute a shell command on the build system before any wheels are built. |
| | [`CIBW_BEFORE_BUILD`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-build) | Execute a shell command preparing each wheel's build |
| | [`CIBW_REPAIR_WHEEL_COMMAND`](https://cibuildwheel.readthedocs.io/en/stable/options/#repair-wheel-command) | Execute a shell command to repair each (non-pure Python) built wheel |
| | [`CIBW_MANYLINUX_X86_64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_I686_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PYPY_X86_64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_AARCH64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PPC64LE_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_S390X_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) | Specify alternative manylinux docker images |
| | [`CIBW_MANYLINUX_X86_64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_I686_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PYPY_X86_64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_AARCH64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PPC64LE_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_S390X_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PYPY_AARCH64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PYPY_I686_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) | Specify alternative manylinux docker images |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will do a single comment here that might apply throughout the remaining of the changes.

Should we remove the CIBW_MANYLINUX_PYPY_* environment variables (adding a deprecation warning for CIBW_MANYLINUX_PYPY_X86_64_IMAGE ) ?

I went with "we should keep it" and thus "them" for consistency's sake.

The only thing remaining would thus be how to best order those options in docs (either group by CPython/PyPy or by arch ? The current layout is by age).

Copy link
Member Author

@YannickJadoul YannickJadoul May 24, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking something similar, but seems you beat me :-) If manylinux now "compresses" the two into one, then shouldn't we do so as well?

The more I think about it, the more I think we should do this, if we can deprecate CIBW_MANYLINUX_PYPY_X86_64_IMAGE. Extra argument: the PyPy manylinux images also include everything from manylinux itself, as a base. So if someone needs to use these old ones, it should still be possible?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

About deprecating CIBW_MANYLINUX_PYPY_X86_64_IMAGE: this is slightly more tricky. Before, when we did so, we basically added it to the new setting. But now, if both CIBW_MANYLINUX_X86_64_IMAGE and CIBW_MANYLINUX_PYPY_X86_64_IMAGE are set, it's not clear what the new value of CIBW_MANYLINUX_X86_64_IMAGE should be?

Given that I'm not expecting a lot of users to actually set CIBW_MANYLINUX_PYPY_X86_64_IMAGE, would it be possible to just raise an error and break the config?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only thing remaining would thus be how to best order those options in docs (either group by CPython/PyPy or by arch ? The current layout is by age).

That's the other thing I noticed, yes. If we would keep them, I think maybe just lsting all PyPy things at the end in the same order as the default ones would be best, as we also e.g. do this for the Python versions.

Copy link
Member

@mayeut mayeut May 24, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

About deprecating CIBW_MANYLINUX_PYPY_X86_64_IMAGE: this is slightly more tricky. Before, when we did so, we basically added it to the new setting. But now, if both CIBW_MANYLINUX_X86_64_IMAGE and CIBW_MANYLINUX_PYPY_X86_64_IMAGE are set, it's not clear what the new value of CIBW_MANYLINUX_X86_64_IMAGE should be?

Given that I'm not expecting a lot of users to actually set CIBW_MANYLINUX_PYPY_X86_64_IMAGE, would it be possible to just raise an error and break the config?

You're right, I didn't fully thought this through.

One benefit of keeping a separate key for PyPy is that it allows the following config to be valid:

# Use manylinux1 for CPython because pip isn't always updated...
CIBW_MANYLINUX_X86_64_IMAGE: manylinux1
CIBW_MANYLINUX_I686_IMAGE: manylinux1
# Use the default for PyPy, do not skip it

Seeing this https://foss.heptapod.net/pypy/pypy/-/issues/3425 might also prove having a separate key for PyPy to be worth it.
While I do agree it should probably be dropped sooner rather than later, the "pip situation" does not agree with that...

| | [`CIBW_DEPENDENCY_VERSIONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#dependency-versions) | Specify how cibuildwheel controls the versions of the tools it uses |
| **Testing** | [`CIBW_TEST_COMMAND`](https://cibuildwheel.readthedocs.io/en/stable/options/#test-command) | Execute a shell command to test each built wheel |
| | [`CIBW_BEFORE_TEST`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-test) | Execute a shell command before testing each wheel |
Expand Down
9 changes: 8 additions & 1 deletion bin/update_docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,26 @@ class Image(NamedTuple):
# 2010 images
Image("manylinux2010", "x86_64", "quay.io/pypa/manylinux2010_x86_64", None),
Image("manylinux2010", "i686", "quay.io/pypa/manylinux2010_i686", None),
Image("manylinux2010", "pypy_x86_64", "pypywheels/manylinux2010-pypy_x86_64", None),
Image("manylinux2010", "pypy_x86_64", "quay.io/pypa/manylinux2010_x86_64", None),
Image("manylinux2010", "pypy_i686", "quay.io/pypa/manylinux2010_i686", None),
# 2014 images
Image("manylinux2014", "x86_64", "quay.io/pypa/manylinux2014_x86_64", None),
Image("manylinux2014", "i686", "quay.io/pypa/manylinux2014_i686", None),
Image("manylinux2014", "aarch64", "quay.io/pypa/manylinux2014_aarch64", None),
Image("manylinux2014", "ppc64le", "quay.io/pypa/manylinux2014_ppc64le", None),
Image("manylinux2014", "s390x", "quay.io/pypa/manylinux2014_s390x", None),
Image("manylinux2014", "pypy_x86_64", "quay.io/pypa/manylinux2014_x86_64", None),
Image("manylinux2014", "pypy_i686", "quay.io/pypa/manylinux2014_i686", None),
Image("manylinux2014", "pypy_aarch64", "quay.io/pypa/manylinux2014_aarch64", None),
# 2_24 images
Image("manylinux_2_24", "x86_64", "quay.io/pypa/manylinux_2_24_x86_64", None),
Image("manylinux_2_24", "i686", "quay.io/pypa/manylinux_2_24_i686", None),
Image("manylinux_2_24", "aarch64", "quay.io/pypa/manylinux_2_24_aarch64", None),
Image("manylinux_2_24", "ppc64le", "quay.io/pypa/manylinux_2_24_ppc64le", None),
Image("manylinux_2_24", "s390x", "quay.io/pypa/manylinux_2_24_s390x", None),
Image("manylinux_2_24", "pypy_x86_64", "quay.io/pypa/manylinux_2_24_x86_64", None),
Image("manylinux_2_24", "pypy_i686", "quay.io/pypa/manylinux_2_24_i686", None),
Image("manylinux_2_24", "pypy_aarch64", "quay.io/pypa/manylinux_2_24_aarch64", None),
]

config = configparser.ConfigParser()
Expand Down
11 changes: 10 additions & 1 deletion cibuildwheel/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,16 @@ def main() -> None:

manylinux_images = {}

for build_platform in ["x86_64", "i686", "pypy_x86_64", "aarch64", "ppc64le", "s390x"]:
for build_platform in [
"x86_64",
"i686",
"pypy_x86_64",
"aarch64",
"ppc64le",
"s390x",
"pypy_aarch64",
"pypy_i686",
]:
pinned_images = all_pinned_docker_images[build_platform]

config_name = f"CIBW_MANYLINUX_{build_platform.upper()}_IMAGE"
Expand Down
2 changes: 2 additions & 0 deletions cibuildwheel/linux.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ def build(options: BuildOptions) -> None:
("cp", "manylinux_ppc64le", options.manylinux_images["ppc64le"]),
("cp", "manylinux_s390x", options.manylinux_images["s390x"]),
("pp", "manylinux_x86_64", options.manylinux_images["pypy_x86_64"]),
("pp", "manylinux_aarch64", options.manylinux_images["pypy_aarch64"]),
("pp", "manylinux_i686", options.manylinux_images["pypy_i686"]),
]

cwd = Path.cwd()
Expand Down
6 changes: 4 additions & 2 deletions cibuildwheel/resources/build-platforms.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ python_configurations = [
{ identifier = "cp37-manylinux_s390x", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-manylinux_s390x", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-manylinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "pp37-manylinux_aarch64", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" },
{ identifier = "pp37-manylinux_i686", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" },
]

[macos]
Expand All @@ -31,7 +33,7 @@ python_configurations = [
{ identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg" },
{ identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg" },
{ identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg" },
{ identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.4-osx64.tar.bz2" },
{ identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-osx64.tar.bz2" },
]

[windows]
Expand All @@ -44,5 +46,5 @@ python_configurations = [
{ identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" },
{ identifier = "cp39-win32", version = "3.9.5", arch = "32" },
{ identifier = "cp39-win_amd64", version = "3.9.5", arch = "64" },
{ identifier = "pp37-win32", version = "3.7", arch = "32", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.3-win32.zip" },
{ identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-win64.zip" },
]
41 changes: 26 additions & 15 deletions cibuildwheel/resources/pinned_docker_images.cfg
Original file line number Diff line number Diff line change
@@ -1,27 +1,38 @@
[x86_64]
manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-05-16-740a2ec
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-05-16-606ba6c
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-05-16-606ba6c
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-05-16-606ba6c
manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-05-24-df68af6
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-05-24-84874a2
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-05-24-84874a2

[i686]
manylinux1 = quay.io/pypa/manylinux1_i686:2021-05-16-740a2ec
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-05-16-606ba6c
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-05-16-606ba6c
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-05-16-606ba6c
manylinux1 = quay.io/pypa/manylinux1_i686:2021-05-24-df68af6
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-05-24-84874a2
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-05-24-84874a2

[pypy_x86_64]
manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2021-05-08-8650a6d
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-05-24-84874a2
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-05-24-84874a2

[pypy_i686]
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-05-24-84874a2
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-05-24-84874a2

[aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-05-16-606ba6c
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-05-16-606ba6c
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-05-24-84874a2

[ppc64le]
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-05-16-606ba6c
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-05-16-606ba6c
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-05-24-84874a2

[s390x]
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-05-16-606ba6c
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-05-16-606ba6c
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-05-24-84874a2

[pypy_aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-05-24-84874a2
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-05-24-84874a2

2 changes: 1 addition & 1 deletion cibuildwheel/windows.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def install_cpython(version: str, arch: str, nuget: Path) -> Path:


def install_pypy(version: str, arch: str, url: str) -> Path:
assert arch == "32"
assert arch == "64" and "win64" in url
# Inside the PyPy zip file is a directory with the same name
zip_filename = url.rsplit("/", 1)[-1]
extension = ".zip"
Expand Down
13 changes: 9 additions & 4 deletions docs/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat
| Python 3.7 | cp37-macosx_x86_64 | cp37-win_amd64<br/>cp37-win32 | cp37-manylinux_x86_64<br/>cp37-manylinux_i686 | cp37-manylinux_aarch64<br/>cp37-manylinux_ppc64le<br/>cp37-manylinux_s390x |
| Python 3.8 | cp38-macosx_x86_64 | cp38-win_amd64<br/>cp38-win32 | cp38-manylinux_x86_64<br/>cp38-manylinux_i686 | cp38-manylinux_aarch64<br/>cp38-manylinux_ppc64le<br/>cp38-manylinux_s390x |
| Python 3.9 | cp39-macosx_x86_64<br/>cp39-macosx_universal2<br/>cp39-macosx_arm64 | cp39-win_amd64<br/>cp39-win32 | cp39-manylinux_x86_64<br/>cp39-manylinux_i686 | cp39-manylinux_aarch64<br/>cp39-manylinux_ppc64le<br/>cp39-manylinux_s390x |
| PyPy3.7 v7.3 | pp37-macosx_x86_64 | pp37-win32 | pp37-manylinux_x86_64 | |
| PyPy3.7 v7.3 | pp37-macosx_x86_64 | pp37-win_amd64 | pp37-manylinux_x86_64 | |


The list of supported and currently selected build identifiers can also be retrieved by passing the `--print-build-identifiers` flag to cibuildwheel.
Expand Down Expand Up @@ -478,10 +478,12 @@ The available options are:
- `CIBW_MANYLINUX_AARCH64_IMAGE`
- `CIBW_MANYLINUX_PPC64LE_IMAGE`
- `CIBW_MANYLINUX_S390X_IMAGE`
- `CIBW_MANYLINUX_PYPY_AARCH64_IMAGE`
- `CIBW_MANYLINUX_PYPY_I686_IMAGE`

Set an alternative Docker image to be used for building [manylinux](https://github.com/pypa/manylinux) wheels. cibuildwheel will then pull these instead of the default images, [`quay.io/pypa/manylinux2010_x86_64`](https://quay.io/pypa/manylinux2010_x86_64), [`quay.io/pypa/manylinux2010_i686`](https://quay.io/pypa/manylinux2010_i686), [`pypywheels/manylinux2010-pypy_x86_64`](https://hub.docker.com/r/pypywheels/manylinux2010-pypy_x86_64), [`quay.io/pypa/manylinux2014_aarch64`](https://quay.io/pypa/manylinux2014_aarch64), [`quay.io/pypa/manylinux2014_ppc64le`](https://quay.io/pypa/manylinux2014_ppc64le), and [`quay.io/pypa/manylinux2014_s390x`](https://quay.io/pypa/manylinux2010_s390x).
Set an alternative Docker image to be used for building [manylinux](https://github.com/pypa/manylinux) wheels. cibuildwheel will then pull these instead of the default images, [`quay.io/pypa/manylinux2010_x86_64`](https://quay.io/pypa/manylinux2010_x86_64), [`quay.io/pypa/manylinux2010_i686`](https://quay.io/pypa/manylinux2010_i686), [`quay.io/pypa/manylinux2010_x86_64`](https://quay.io/pypa/manylinux2010_x86_64), [`quay.io/pypa/manylinux2014_aarch64`](https://quay.io/pypa/manylinux2014_aarch64), [`quay.io/pypa/manylinux2014_ppc64le`](https://quay.io/pypa/manylinux2014_ppc64le), and [`quay.io/pypa/manylinux2014_s390x`](https://quay.io/pypa/manylinux2010_s390x).

The value of this option can either be set to `manylinux1`, `manylinux2010`, `manylinux2014` or `manylinux_2_24` to use a pinned version of the [official manylinux images](https://github.com/pypa/manylinux) and [PyPy manylinux images](https://github.com/pypy/manylinux). Alternatively, set these options to any other valid Docker image name. For PyPy, only the official `manylinux2010` image is currently available. For architectures other
The value of this option can either be set to `manylinux1`, `manylinux2010`, `manylinux2014` or `manylinux_2_24` to use a pinned version of the [official manylinux images](https://github.com/pypa/manylinux). Alternatively, set these options to any other valid Docker image name. For PyPy, the `manylinux1` image is not available. For architectures other
than x86 (x86\_64 and i686) `manylinux2014` or `manylinux_2_24` must be used, because the first version of the manylinux specification that supports additional architectures is `manylinux2014`.


Expand All @@ -501,12 +503,15 @@ CIBW_SKIP: pp*
# build using the manylinux2014 image
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_MANYLINUX_I686_IMAGE: manylinux2014
CIBW_SKIP: cp27-manylinux*
CIBW_MANYLINUX_PYPY_X86_64_IMAGE: manylinux2014
CIBW_MANYLINUX_PYPY_I686_IMAGE: manylinux2014

# build using the latest manylinux2010 release, instead of the cibuildwheel
# pinned version
CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux2010_x86_64:latest
CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/manylinux2010_i686:latest
CIBW_MANYLINUX_PYPY_X86_64_IMAGE: quay.io/pypa/manylinux2010_x86_64:latest
CIBW_MANYLINUX_PYPY_I686_IMAGE: quay.io/pypa/manylinux2010_i686:latest

# build using a different image from the docker registry
CIBW_MANYLINUX_X86_64_IMAGE: dockcross/manylinux-x64
Expand Down
7 changes: 4 additions & 3 deletions test/test_manylinuxXXXX_only.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,11 @@ def test(manylinux_image, tmp_path):
"CIBW_MANYLINUX_AARCH64_IMAGE": manylinux_image,
"CIBW_MANYLINUX_PPC64LE_IMAGE": manylinux_image,
"CIBW_MANYLINUX_S390X_IMAGE": manylinux_image,
"CIBW_MANYLINUX_PYPY_AARCH64_IMAGE": manylinux_image,
"CIBW_MANYLINUX_PYPY_I686_IMAGE": manylinux_image,
}
if manylinux_image in {"manylinux1", "manylinux2014", "manylinux_2_24"}:
if manylinux_image in {"manylinux1"}:
# We don't have a manylinux1 image for PyPy
# We don't have a manylinux2014 / manylinux_2_24 image for PyPy (yet?)
add_env["CIBW_SKIP"] = "pp*"

actual_wheels = utils.cibuildwheel_run(project_dir, add_env=add_env)
Expand All @@ -80,6 +81,6 @@ def test(manylinux_image, tmp_path):
expected_wheels = utils.expected_wheels(
"spam", "0.1.0", manylinux_versions=platform_tag_map.get(manylinux_image, [manylinux_image])
)
if manylinux_image in {"manylinux1", "manylinux2014", "manylinux_2_24"}:
if manylinux_image in {"manylinux1"}:
expected_wheels = [w for w in expected_wheels if "-pp" not in w]
assert set(actual_wheels) == set(expected_wheels)
6 changes: 3 additions & 3 deletions test/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ def expected_wheels(

python_abi_tags = ["cp36-cp36m", "cp37-cp37m", "cp38-cp38", "cp39-cp39"]

if machine_arch in ["x86_64", "AMD64", "x86"]:
if machine_arch in ["x86_64", "AMD64", "x86", "aarch64"]:
python_abi_tags += ["pp37-pypy37_pp73"]

if platform == "macos" and get_macos_version() >= (10, 16):
Expand All @@ -140,7 +140,7 @@ def expected_wheels(
if platform == "linux":
architectures = [machine_arch]

if machine_arch == "x86_64" and python_abi_tag.startswith("cp"):
if machine_arch == "x86_64":
architectures.append("i686")

platform_tags = [
Expand All @@ -157,7 +157,7 @@ def expected_wheels(
if python_abi_tag.startswith("cp"):
platform_tags = ["win32", "win_amd64"]
else:
platform_tags = ["win32"]
platform_tags = ["win_amd64"]

elif platform == "macos":
if python_abi_tag == "cp39-cp39" and machine_arch == "arm64":
Expand Down
3 changes: 1 addition & 2 deletions unit_test/build_selector_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,7 @@ def test_build_limited_python():
assert not build_selector("cp36-win32")
assert build_selector("cp37-win32")
assert build_selector("cp38-win32")
assert not build_selector("pp36-win32")
assert build_selector("pp37-win32")
assert build_selector("pp37-win_amd64")


def test_build_limited_python_partial():
Expand Down
7 changes: 4 additions & 3 deletions unit_test/main_tests/main_options_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,11 @@ def test_empty_selector(platform, intercepted_build_args, monkeypatch):
("i686", "manylinux2014", "quay.io/pypa/manylinux2014_i686:*"),
("i686", "manylinux_2_24", "quay.io/pypa/manylinux_2_24_i686:*"),
("i686", "custom_image", "custom_image"),
("pypy_x86_64", None, "pypywheels/manylinux2010-pypy_x86_64:*"),
("pypy_x86_64", None, "quay.io/pypa/manylinux2010_x86_64:*"),
("pypy_x86_64", "manylinux1", "manylinux1"), # Does not exist
("pypy_x86_64", "manylinux2010", "pypywheels/manylinux2010-pypy_x86_64:*"),
("pypy_x86_64", "manylinux2014", "manylinux2014"), # Does not exist (yet)
("pypy_x86_64", "manylinux2010", "quay.io/pypa/manylinux2010_x86_64:*"),
("pypy_x86_64", "manylinux2014", "quay.io/pypa/manylinux2014_x86_64:*"),
("pypy_x86_64", "manylinux_2_24", "quay.io/pypa/manylinux_2_24_x86_64:*"),
("pypy_x86_64", "custom_image", "custom_image"),
],
)
Expand Down