]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-42336: Improve PCbuild batch files (GH-23275)
authorSteve Dower <steve.dower@python.org>
Wed, 18 Nov 2020 17:24:36 +0000 (17:24 +0000)
committerGitHub <noreply@github.com>
Wed, 18 Nov 2020 17:24:36 +0000 (17:24 +0000)
.azure-pipelines/ci.yml
.azure-pipelines/pr.yml
.github/workflows/build.yml
PCbuild/build.bat
PCbuild/env.bat
PCbuild/env.ps1 [new file with mode: 0644]
PCbuild/idle.bat
PCbuild/prepare_libffi.bat
PCbuild/rt.bat

index 531ed060fd3866143504c3cfbfdbd1b2312a77af..3feb85ae6561de8e826a40763f785ade2cd8f949 100644 (file)
@@ -104,7 +104,7 @@ jobs:
     matrix:
       win32:
         arch: win32
-        buildOpt:
+        buildOpt: '-p Win32'
         testRunTitle: '$(Build.SourceBranchName)-win32'
         testRunPlatform: win32
       win64:
index 1ffe0a97a2465f0d73c1f7edb46760e41f5132ae..2e94af35600cfc47951ba76af3bd4b4112f36534 100644 (file)
@@ -104,7 +104,7 @@ jobs:
     matrix:
       win32:
         arch: win32
-        buildOpt:
+        buildOpt: '-p Win32'
         testRunTitle: '$(System.PullRequest.TargetBranch)-win32'
         testRunPlatform: win32
       win64:
index d00c227182f61a4cd6c214c98469edce1bd6a05c..c9b568002f7b433a1e24e46be5d91314b0184851 100644 (file)
@@ -59,7 +59,7 @@ jobs:
     - name: Display build info
       run: .\python.bat -m test.pythoninfo
     - name: Tests
-      run: .\PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0
+      run: .\PCbuild\rt.bat -p Win32 -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0
 
   build_win_amd64:
     name: 'Windows (x64)'
@@ -73,7 +73,7 @@ jobs:
     - name: Display build info
       run: .\python.bat -m test.pythoninfo
     - name: Tests
-      run: .\PCbuild\rt.bat -x64 -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0
+      run: .\PCbuild\rt.bat -x64 -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0
 
   build_macos:
     name: 'macOS'
index ba7154d8cb1e56aa221259ec958afbf5477f0a5e..5a41ca57b12391b6efa9764d0ed7d64594a07313 100644 (file)
@@ -46,7 +46,7 @@ echo.Available arguments:
 echo.  -c Release ^| Debug ^| PGInstrument ^| PGUpdate
 echo.     Set the configuration (default: Release)
 echo.  -p x64 ^| Win32 ^| ARM ^| ARM64
-echo.     Set the platform (default: Win32)
+echo.     Set the platform (default: x64)
 echo.  -t Build ^| Rebuild ^| Clean ^| CleanAll
 echo.     Set the target manually
 echo.  --pgo-job  The job to use for PGO training; implies --pgo
@@ -55,7 +55,7 @@ exit /b 127
 
 :Run
 setlocal
-set platf=Win32
+set platf=x64
 set conf=Release
 set target=Build
 set dir=%~dp0
index 9d4c9d1c32f7a4a345d41dfeb247e9cb1978d7be..2820e304582cff0428ba3283402122f9d4e00d9c 100644 (file)
@@ -9,8 +9,19 @@ rem 'v110', 'v120' or 'v140') to the build script.
 
 echo Build environments: x86, amd64, x86_amd64
 echo.
-set VSTOOLS=%VS140COMNTOOLS%
-if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS%
-if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS%
-if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS%
-call "%VSTOOLS%..\..\VC\vcvarsall.bat" %*
+set _ARGS=%*
+if NOT DEFINED _ARGS set _ARGS=amd64
+
+if not exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" goto :skip_vswhere
+set VSTOOLS=
+for /F "tokens=*" %%i in ('"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -property installationPath -latest -prerelease -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64') DO @(set VSTOOLS=%%i\VC\Auxiliary\Build\vcvarsall.bat)
+if not defined VSTOOLS goto :skip_vswhere
+call "%VSTOOLS%" %_ARGS%
+exit /B 0
+
+:skip_vswhere
+if not defined VSTOOLS set VSTOOLS=%VS140COMNTOOLS%
+if not defined VSTOOLS set VSTOOLS=%VS120COMNTOOLS%
+if not defined VSTOOLS set VSTOOLS=%VS110COMNTOOLS%
+if not defined VSTOOLS set VSTOOLS=%VS100COMNTOOLS%
+call "%VSTOOLS%..\..\VC\vcvarsall.bat" %_ARGS%
diff --git a/PCbuild/env.ps1 b/PCbuild/env.ps1
new file mode 100644 (file)
index 0000000..19d7ada
--- /dev/null
@@ -0,0 +1,2 @@
+$pcbuild = $script:MyInvocation.MyCommand.Path | Split-Path -parent;
+& cmd /K "$pcbuild\env.bat" $args
index 1978b99f6ee19d531fc91ddee8c5a5e2b2d5dd84..70f3817f09769c5de4698fa730143e0c15fbb4e7 100644 (file)
@@ -4,12 +4,24 @@ rem Usage:  idle [-d]
 rem -d   Run Debug build (python_d.exe).  Else release build.
 
 setlocal
-set exe=win32\python
+set PCBUILD=%~dp0
+set exedir=%PCBUILD%\amd64
+set exe=python
 PATH %PATH%;..\externals\tcltk\bin
 
-if "%1"=="-d" (set exe=%exe%_d) & shift
+:CheckOpts
+if "%1"=="-d" (set exe=%exe%_d) & shift & goto :CheckOpts
+if "%1"=="-p" (call :SetExeDir %2) & shift & shift & goto :CheckOpts
 
-set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9
+set cmd=%exedir%\%exe% %PCBUILD%\..\Lib\idlelib\idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9
 
 echo on
 %cmd%
+exit /B %LASTERRORCODE%
+
+:SetExeDir
+if /I %1 EQU Win32 (set exedir=%PCBUILD%\win32)
+if /I %1 EQU x64 (set exedir=%PCBUILD%\amd64)
+if /I %1 EQU ARM (set exedir=%PCBUILD%\arm32)
+if /I %1 EQU ARM64 (set exedir=%PCBUILD%\arm64)
+exit /B 0
index f41ba83379af961e51467355867cf752ea979e24..922a47565c8da5807346e109c13b12d351328383 100644 (file)
@@ -22,10 +22,10 @@ echo Based on https://github.com/libffi/libffi/blob/master/.appveyor.yml
 echo.
 echo.
 echo.Available flags:
-echo.  -x64    build for x64
-echo.  -x86    build for x86
-echo.  -arm32  build for arm32
-echo.  -arm64  build for arm64
+echo.  -x64    enable x64 build
+echo.  -x86    enable x86 build
+echo.  -arm32  enable arm32 build
+echo.  -arm64  enable arm64 build
 echo.  -?      this help
 echo.  --install-cygwin  install cygwin to c:\cygwin
 exit /b 127
@@ -44,6 +44,7 @@ set INSTALL_CYGWIN=
 if "%1"=="" goto :CheckOptsDone
 if /I "%1"=="-x64" (set BUILD_X64=1) & shift & goto :CheckOpts
 if /I "%1"=="-x86" (set BUILD_X86=1) & shift & goto :CheckOpts
+if /I "%1"=="-win32" (set BUILD_X86=1) & shift & goto :CheckOpts
 if /I "%1"=="-arm32" (set BUILD_ARM32=1) & shift & goto :CheckOpts
 if /I "%1"=="-arm64" (set BUILD_ARM64=1) & shift & goto :CheckOpts
 if /I "%1"=="-pdb" (set BUILD_PDB=-g) & shift & goto :CheckOpts
@@ -67,9 +68,7 @@ setlocal
 if NOT DEFINED SH if exist c:\cygwin\bin\sh.exe set SH=c:\cygwin\bin\sh.exe
 
 if NOT DEFINED VCVARSALL (
-    if exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" (
-        set VCVARSALL="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
-    )
+    for /F "tokens=*" %%i in ('"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -property installationPath -latest -prerelease -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64') DO @(set VCVARSALL="%%i\VC\Auxiliary\Build\vcvarsall.bat")
 )
 if ^%VCVARSALL:~0,1% NEQ ^" SET VCVARSALL="%VCVARSALL%"
 
index 59f757c0f5888add193905648ea39be12d8a03d4..29813c5a87fca76d628ecdb1a6c3b86fe3c58ac3 100644 (file)
@@ -6,8 +6,9 @@ rem -O   Run python.exe or python_d.exe (see -d) with -O.
 rem -q   "quick" -- normally the tests are run twice, the first time
 rem      after deleting all the .pyc files reachable from Lib/.
 rem      -q runs the tests just once, and without deleting .pyc files.
-rem -x64 Run the 64-bit build of python (or python_d if -d was specified)
-rem      When omitted, uses %PREFIX% if set or the 32-bit build
+rem -p <Win32|x64|ARM|ARM64> or -win32, -x64, -arm32, -arm64
+rem      Run the specified architecture of python (or python_d if -d
+rem      was specified). If omitted, uses %PREFIX% if set or 64-bit.
 rem All leading instances of these switches are shifted off, and
 rem whatever remains (up to 9 arguments) is passed to regrtest.py.
 rem For example,
@@ -38,12 +39,14 @@ set exe=
 if "%1"=="-O" (set dashO=-O)     & shift & goto CheckOpts
 if "%1"=="-q" (set qmode=yes)    & shift & goto CheckOpts
 if "%1"=="-d" (set suffix=_d)    & shift & goto CheckOpts
+if "%1"=="-win32" (set prefix=%pcbuild%win32) & shift & goto CheckOpts
 if "%1"=="-x64" (set prefix=%pcbuild%amd64) & shift & goto CheckOpts
 if "%1"=="-arm64" (set prefix=%pcbuild%arm64) & shift & goto CheckOpts
 if "%1"=="-arm32" (set prefix=%pcbuild%arm32) & shift & goto CheckOpts
+if "%1"=="-p" (call :SetPlatform %~2) & shift & shift & goto CheckOpts
 if NOT "%1"=="" (set regrtestargs=%regrtestargs% %1) & shift & goto CheckOpts
 
-if not defined prefix set prefix=%pcbuild%win32
+if not defined prefix set prefix=%pcbuild%amd64
 set exe=%prefix%\python%suffix%.exe
 set cmd="%exe%" %dashO% -u -Wd -E -bb -m test %regrtestargs%
 if defined qmode goto Qmode
@@ -60,6 +63,15 @@ echo on
 
 echo About to run again without deleting .pyc first:
 pause
+goto Qmode
+
+:SetPlatform
+if /I %1 EQU Win32 (set prefix=%pcbuild%win32) & exit /B 0
+if /I %1 EQU x64 (set prefix=%pcbuild%amd64) & exit /B 0
+if /I %1 EQU ARM64 (set prefix=%pcbuild%arm64) & exit /B 0
+if /I %1 EQU ARM (set prefix=%pcbuild%arm32) & exit /B 0
+echo Invalid platform "%1"
+exit /B 1
 
 :Qmode
 echo on