[Python-checkins] bpo-36511: Improve ARM32 buildbot scripts (GH-14251)

Steve Dower webhook-mailer at python.org
Thu Jun 20 17:35:56 EDT 2019


https://github.com/python/cpython/commit/43615485f1222cd9a94421a96cb7110bb52e1b8b
commit: 43615485f1222cd9a94421a96cb7110bb52e1b8b
branch: 3.8
author: Steve Dower <steve.dower at python.org>
committer: GitHub <noreply at github.com>
date: 2019-06-20T14:35:51-07:00
summary:

bpo-36511: Improve ARM32 buildbot scripts (GH-14251)

files:
A Tools/buildbot/remoteDeploy.bat
A Tools/buildbot/remotePythonInfo.bat
M Tools/buildbot/test.bat

diff --git a/Tools/buildbot/remoteDeploy.bat b/Tools/buildbot/remoteDeploy.bat
new file mode 100644
index 000000000000..8b0ce239e1a4
--- /dev/null
+++ b/Tools/buildbot/remoteDeploy.bat
@@ -0,0 +1,52 @@
+ at echo off
+rem Used by the buildbot "remotedeploy" step.
+setlocal
+
+set PATH=%PATH%;%SystemRoot%\SysNative\OpenSSH;%SystemRoot%\System32\OpenSSH
+set here=%~dp0
+set arm32_ssh=
+
+:CheckOpts
+if "%1"=="-arm32" (set arm32_ssh=true) & shift & goto CheckOpts
+if NOT "%1"=="" (echo unrecognized option %1) & goto Arm32SshHelp
+
+if "%arm32_ssh%"=="true" goto :Arm32Ssh
+
+:Arm32Ssh
+if "%SSH_SERVER%"=="" goto :Arm32SshHelp
+
+ssh %SSH_SERVER% echo Make sure we can find SSH and SSH_SERVER variable is valid
+if %ERRORLEVEL% NEQ 0 (echo SSH does not work) & exit /b %ERRORLEVEL%
+
+if "%PYTHON_SOURCE%"=="" (set PYTHON_SOURCE=%here%..\..\)
+if "%REMOTE_PYTHON_DIR%"=="" (set REMOTE_PYTHON_DIR=C:\python\)
+if NOT "%REMOTE_PYTHON_DIR:~-1,1%"=="\" (set REMOTE_PYTHON_DIR=%REMOTE_PYTHON_DIR%\)
+echo PYTHON_SOURCE = %PYTHON_SOURCE%
+echo REMOTE_PYTHON_DIR = %REMOTE_PYTHON_DIR%
+
+ssh %SSH_SERVER% "if EXIST %REMOTE_PYTHON_DIR% (rd %REMOTE_PYTHON_DIR% /s/q)"
+ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%PCBuild\arm32"
+ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%temp"
+ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%Modules"
+ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%PC"
+for /f "USEBACKQ" %%i in (`dir PCbuild\*.bat /b`) do @scp PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild"
+for /f "USEBACKQ" %%i in (`dir PCbuild\*.py /b`) do @scp PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild"
+for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.exe /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32"
+for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.pyd /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32"
+for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.dll /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32"
+scp -r "%PYTHON_SOURCE%Include" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Include"
+scp -r "%PYTHON_SOURCE%Lib" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Lib"
+scp -r "%PYTHON_SOURCE%Tools" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Tools"
+scp "%PYTHON_SOURCE%Modules\Setup" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Modules"
+scp "%PYTHON_SOURCE%PC\pyconfig.h" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PC"
+
+exit /b %ERRORLEVEL%
+
+:Arm32SshHelp
+echo SSH_SERVER environment variable must be set to administrator@[ip address]
+echo where [ip address] is the address of a Windows IoT Core ARM32 device.
+echo.
+echo The test worker should have the SSH agent running.
+echo Also a key must be created with ssh-keygen and added to both the buildbot worker machine
+echo and the ARM32 worker device: see https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/ssh
+exit /b 127
diff --git a/Tools/buildbot/remotePythonInfo.bat b/Tools/buildbot/remotePythonInfo.bat
new file mode 100644
index 000000000000..b17717cb018e
--- /dev/null
+++ b/Tools/buildbot/remotePythonInfo.bat
@@ -0,0 +1,35 @@
+ at echo off
+rem Used by the buildbot "remotedeploy" step.
+setlocal
+
+set PATH=%PATH%;%SystemRoot%\SysNative\OpenSSH;%SystemRoot%\System32\OpenSSH
+set here=%~dp0
+set arm32_ssh=
+set suffix=_d
+if "%REMOTE_PYTHON_DIR%"=="" (set REMOTE_PYTHON_DIR=C:\python\)
+if NOT "%REMOTE_PYTHON_DIR:~-1,1%"=="\" (set REMOTE_PYTHON_DIR=%REMOTE_PYTHON_DIR%\)
+
+:CheckOpts
+if "%1"=="-arm32" (set arm32_ssh=true) & (set prefix=%REMOTE_PYTHON_DIR%pcbuild\arm32) & shift & goto CheckOpts
+if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts
+if "%1"=="+d" (set suffix=) & shift & goto CheckOpts
+if NOT "%1"=="" (echo unrecognized option %1) & goto Arm32SshHelp
+
+if "%arm32_ssh%"=="true" goto :Arm32Ssh
+
+:Arm32Ssh
+if "%SSH_SERVER%"=="" goto :Arm32SshHelp
+
+set PYTHON_EXE=%prefix%\python%suffix%.exe
+echo on
+ssh %SSH_SERVER% %PYTHON_EXE% -m test.pythoninfo
+exit /b %ERRORLEVEL%
+
+:Arm32SshHelp
+echo SSH_SERVER environment variable must be set to administrator@[ip address]
+echo where [ip address] is the address of a Windows IoT Core ARM32 device.
+echo.
+echo The test worker should have the SSH agent running.
+echo Also a key must be created with ssh-keygen and added to both the buildbot worker machine
+echo and the ARM32 worker device: see https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/ssh
+exit /b 127
diff --git a/Tools/buildbot/test.bat b/Tools/buildbot/test.bat
index 1566f46c534f..63b37d3ea902 100644
--- a/Tools/buildbot/test.bat
+++ b/Tools/buildbot/test.bat
@@ -2,6 +2,7 @@
 rem Used by the buildbot "test" step.
 setlocal
 
+set PATH=%PATH%;%SystemRoot%\SysNative\OpenSSH;%SystemRoot%\System32\OpenSSH
 set here=%~dp0
 set rt_opts=-q -d
 set regrtest_args=-j1
@@ -18,8 +19,10 @@ if "%1"=="+d" (set rt_opts=%rt_opts:-d=%) & shift & goto CheckOpts
 if "%1"=="+q" (set rt_opts=%rt_opts:-q=%) & shift & goto CheckOpts
 if NOT "%1"=="" (set regrtest_args=%regrtest_args% %1) & shift & goto CheckOpts
 
+if "%PROCESSOR_ARCHITECTURE%"=="ARM" if "%arm32_ssh%"=="true" goto NativeExecution
 if "%arm32_ssh%"=="true" goto :Arm32Ssh
 
+:NativeExecution
 call "%here%..\..\PCbuild\rt.bat" %rt_opts% -uall -rwW --slowest --timeout=1200 --fail-env-changed %regrtest_args%
 exit /b %ERRORLEVEL%
 
@@ -28,17 +31,9 @@ set dashU=-unetwork,decimal,subprocess,urlfetch,tzdata
 if "%SSH_SERVER%"=="" goto :Arm32SshHelp
 if "%PYTHON_SOURCE%"=="" (set PYTHON_SOURCE=%here%..\..\)
 if "%REMOTE_PYTHON_DIR%"=="" (set REMOTE_PYTHON_DIR=C:\python\)
+if NOT "%REMOTE_PYTHON_DIR:~-1,1%"=="\" (set REMOTE_PYTHON_DIR=%REMOTE_PYTHON_DIR%\)
+
 set TEMP_ARGS=--temp %REMOTE_PYTHON_DIR%temp
-ssh %SSH_SERVER% "if EXIST %REMOTE_PYTHON_DIR% (rd %REMOTE_PYTHON_DIR% /s/q)"
-ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%PCBuild\arm32"
-ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%temp"
-for /f "USEBACKQ" %%i in (`dir PCbuild\*.bat /b`) do @scp PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild"
-for /f "USEBACKQ" %%i in (`dir PCbuild\*.py /b`) do @scp PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild"
-for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.exe /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32"
-for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.pyd /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32"
-for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.dll /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32"
-scp -r "%PYTHON_SOURCE%Include" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Include"
-scp -r "%PYTHON_SOURCE%Lib" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Lib"
 
 set rt_args=%rt_opts% %dashU% -rwW --slowest --timeout=1200 --fail-env-changed %regrtest_args% %TEMP_ARGS%
 ssh %SSH_SERVER% "set TEMP=%REMOTE_PYTHON_DIR%temp& %REMOTE_PYTHON_DIR%PCbuild\rt.bat" %rt_args%



More information about the Python-checkins mailing list