bpo-33125: Add support for building and releasing Windows ARM64 packages (GH-16828)

Note that the support is not actually enabled yet, and so we won't be publishing these packages. However, for those who want to build it themselves (even by reusing the Azure Pipelines definition), it's now relatively easy to enable.
This commit is contained in:
Steve Dower 2019-11-20 09:30:47 -08:00 committed by GitHub
parent abce2d9bc6
commit de148f263f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 286 additions and 74 deletions

View file

@ -5,15 +5,31 @@ Constants for generating the layout.
__author__ = "Steve Dower <steve.dower@python.org>"
__version__ = "3.8"
import os
import re
import struct
import sys
VER_MAJOR, VER_MINOR, VER_MICRO, VER_FIELD4 = struct.pack(">i", sys.hexversion)
def _unpack_hexversion():
try:
hexversion = int(os.getenv("PYTHON_HEXVERSION"), 16)
except (TypeError, ValueError):
hexversion = sys.hexversion
return struct.pack(">i", sys.hexversion)
def _get_suffix(field4):
name = {0xA0: "a", 0xB0: "b", 0xC0: "c"}.get(field4 & 0xF0, "")
if name:
serial = field4 & 0x0F
return f"{name}{serial}"
return ""
VER_MAJOR, VER_MINOR, VER_MICRO, VER_FIELD4 = _unpack_hexversion()
VER_SUFFIX = _get_suffix(VER_FIELD4)
VER_FIELD3 = VER_MICRO << 8 | VER_FIELD4
VER_NAME = {"alpha": "a", "beta": "b", "candidate": "rc"}.get(
sys.version_info.releaselevel, ""
)
VER_SERIAL = sys.version_info.serial if VER_NAME else ""
VER_DOT = "{}.{}".format(VER_MAJOR, VER_MINOR)
PYTHON_DLL_NAME = "python{}{}.dll".format(VER_MAJOR, VER_MINOR)
@ -21,8 +37,6 @@ PYTHON_STABLE_DLL_NAME = "python{}.dll".format(VER_MAJOR)
PYTHON_ZIP_NAME = "python{}{}.zip".format(VER_MAJOR, VER_MINOR)
PYTHON_PTH_NAME = "python{}{}._pth".format(VER_MAJOR, VER_MINOR)
PYTHON_CHM_NAME = "python{}{}{}{}{}.chm".format(
VER_MAJOR, VER_MINOR, VER_MICRO, VER_NAME, VER_SERIAL
PYTHON_CHM_NAME = "python{}{}{}{}.chm".format(
VER_MAJOR, VER_MINOR, VER_MICRO, VER_SUFFIX
)
IS_X64 = sys.maxsize > 2 ** 32