diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2021-10-01 22:18:58 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-01 22:18:58 -0400 |
| commit | 8519d4e5cee54885761200a4b90204944d3ef729 (patch) | |
| tree | b732118327315197a47164fa6ce075654ddc6f9d | |
| parent | baaf8cdac81aa19db922c06a8f43bedf2c23c8d0 (diff) | |
| parent | cbbdb86c35e011ef46da6a45535683905aa857be (diff) | |
| download | python-setuptools-git-8519d4e5cee54885761200a4b90204944d3ef729.tar.gz | |
Merge pull request #2758 from nsait-linaro/win_arm64_launchers
Fixes 2757: Add win/arm64 launchers to create arm64 executables
| -rw-r--r-- | changelog.d/2757.change.rst | 1 | ||||
| -rw-r--r-- | msvc-build-launcher-arm64.cmd | 19 | ||||
| -rw-r--r-- | setuptools/cli-arm64.exe | bin | 0 -> 137216 bytes | |||
| -rw-r--r-- | setuptools/command/easy_install.py | 5 | ||||
| -rw-r--r-- | setuptools/gui-arm64.exe | bin | 0 -> 137728 bytes | |||
| -rw-r--r-- | setuptools/tests/test_windows_wrappers.py | 15 |
6 files changed, 37 insertions, 3 deletions
diff --git a/changelog.d/2757.change.rst b/changelog.d/2757.change.rst new file mode 100644 index 00000000..5b71f30f --- /dev/null +++ b/changelog.d/2757.change.rst @@ -0,0 +1 @@ +Add windows arm64 launchers for scripts generated by easy_install. diff --git a/msvc-build-launcher-arm64.cmd b/msvc-build-launcher-arm64.cmd new file mode 100644 index 00000000..8e63506b --- /dev/null +++ b/msvc-build-launcher-arm64.cmd @@ -0,0 +1,19 @@ +@echo off + +REM Build with jaraco/windows Docker image + +set PATH_OLD=%PATH% +set PATH=C:\BuildTools\VC\Auxiliary\Build;%PATH_OLD% + +REM now for arm 64-bit +REM Cross compile for arm64 +call VCVARSx86_arm64 +if "%ERRORLEVEL%"=="0" ( + cl /D "GUI=0" /D "WIN32_LEAN_AND_MEAN" launcher.c /O2 /link /MACHINE:arm64 /SUBSYSTEM:CONSOLE /out:setuptools/cli-arm64.exe + cl /D "GUI=1" /D "WIN32_LEAN_AND_MEAN" launcher.c /O2 /link /MACHINE:arm64 /SUBSYSTEM:WINDOWS /out:setuptools/gui-arm64.exe +) else ( + echo Visual Studio 2019 with arm64 toolchain not installed +) + +set PATH=%PATH_OLD% + diff --git a/setuptools/cli-arm64.exe b/setuptools/cli-arm64.exe Binary files differnew file mode 100644 index 00000000..7a87ce48 --- /dev/null +++ b/setuptools/cli-arm64.exe diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index 5e0f97cf..b88c3e9a 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -2263,7 +2263,10 @@ def get_win_launcher(type): """ launcher_fn = '%s.exe' % type if is_64bit(): - launcher_fn = launcher_fn.replace(".", "-64.") + if get_platform() == "win-arm64": + launcher_fn = launcher_fn.replace(".", "-arm64.") + else: + launcher_fn = launcher_fn.replace(".", "-64.") else: launcher_fn = launcher_fn.replace(".", "-32.") return resource_string('setuptools', launcher_fn) diff --git a/setuptools/gui-arm64.exe b/setuptools/gui-arm64.exe Binary files differnew file mode 100644 index 00000000..5730f11d --- /dev/null +++ b/setuptools/gui-arm64.exe diff --git a/setuptools/tests/test_windows_wrappers.py b/setuptools/tests/test_windows_wrappers.py index 27853aae..8ac9bd07 100644 --- a/setuptools/tests/test_windows_wrappers.py +++ b/setuptools/tests/test_windows_wrappers.py @@ -13,6 +13,7 @@ are to wrap. """ import sys +import platform import textwrap import subprocess @@ -51,10 +52,20 @@ class WrapperTester: f.write(w) +def win_launcher_exe(prefix): + """ A simple routine to select launcher script based on platform.""" + assert prefix in ('cli', 'gui') + if platform.machine() == "ARM64": + return "{}-arm64.exe".format(prefix) + else: + return "{}-32.exe".format(prefix) + + class TestCLI(WrapperTester): script_name = 'foo-script.py' - wrapper_source = 'cli-32.exe' wrapper_name = 'foo.exe' + wrapper_source = win_launcher_exe('cli') + script_tmpl = textwrap.dedent(""" #!%(python_exe)s import sys @@ -155,7 +166,7 @@ class TestGUI(WrapperTester): ----------------------- """ script_name = 'bar-script.pyw' - wrapper_source = 'gui-32.exe' + wrapper_source = win_launcher_exe('gui') wrapper_name = 'bar.exe' script_tmpl = textwrap.dedent(""" |
