summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2021-10-01 22:18:58 -0400
committerGitHub <noreply@github.com>2021-10-01 22:18:58 -0400
commit8519d4e5cee54885761200a4b90204944d3ef729 (patch)
treeb732118327315197a47164fa6ce075654ddc6f9d
parentbaaf8cdac81aa19db922c06a8f43bedf2c23c8d0 (diff)
parentcbbdb86c35e011ef46da6a45535683905aa857be (diff)
downloadpython-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.rst1
-rw-r--r--msvc-build-launcher-arm64.cmd19
-rw-r--r--setuptools/cli-arm64.exebin0 -> 137216 bytes
-rw-r--r--setuptools/command/easy_install.py5
-rw-r--r--setuptools/gui-arm64.exebin0 -> 137728 bytes
-rw-r--r--setuptools/tests/test_windows_wrappers.py15
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
new file mode 100644
index 00000000..7a87ce48
--- /dev/null
+++ b/setuptools/cli-arm64.exe
Binary files differ
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
new file mode 100644
index 00000000..5730f11d
--- /dev/null
+++ b/setuptools/gui-arm64.exe
Binary files differ
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("""