add support for building wheels for windows on arm64 (#920)

* add support for building wheels for windows on arm64

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix main_platform_test.py

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Remove unrequired explicit nuget source

* add python arm64 3.9.9 version

* extend update_pythons.py to add win/arm64 support

* update documentation for new win/arm64 platform

* style: include ARM64 in literal

* Fix python 3.9 identifier for win_arm64

* Fix table layout issues in README and add note about arm64 pip issue

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
This commit is contained in:
Niyas Sait
2021-11-24 13:50:49 -05:00
committed by GitHub
co-authored by pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Henry Schreiner
parent 59b157f333
commit 594d89f6f7
8 changed files with 58 additions and 22 deletions
+7 -3
View File
@@ -28,7 +28,7 @@ DIR: Final[Path] = Path(__file__).parent.parent.resolve()
RESOURCES_DIR: Final[Path] = DIR / "cibuildwheel/resources"
ArchStr = Literal["32", "64"]
ArchStr = Literal["32", "64", "ARM64"]
class ConfigWinCP(TypedDict):
@@ -68,8 +68,8 @@ class WindowsVersions:
if resource["@type"] == "PackageBaseAddress/3.0.0":
endpoint = resource["@id"]
ARCH_DICT = {"32": "win32", "64": "win_amd64"}
PACKAGE_DICT = {"32": "pythonx86", "64": "python"}
ARCH_DICT = {"32": "win32", "64": "win_amd64", "ARM64": "win_arm64"}
PACKAGE_DICT = {"32": "pythonx86", "64": "python", "ARM64": "pythonarm64"}
self.arch_str = arch_str
self.arch = ARCH_DICT[arch_str]
@@ -237,6 +237,7 @@ class AllVersions:
def __init__(self) -> None:
self.windows_32 = WindowsVersions("32")
self.windows_64 = WindowsVersions("64")
self.windows_arm64 = WindowsVersions("ARM64")
self.windows_pypy_64 = PyPyVersions("64")
self.macos_cpython = CPythonVersions()
@@ -264,6 +265,9 @@ class AllVersions:
config_update = self.windows_64.update_version_windows(spec)
elif identifier.startswith("pp"):
config_update = self.windows_pypy_64.update_version_windows(spec)
elif "win_arm64" in identifier:
if identifier.startswith("cp"):
config_update = self.windows_arm64.update_version_windows(spec)
assert config_update is not None, f"{identifier} not found!"
config.update(**config_update)