Skip to content

[3.9] bpo-42336: Improve PCbuild batch files (GH-23275) #23372

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 18, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .azure-pipelines/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ jobs:
matrix:
win32:
arch: win32
buildOpt:
buildOpt: '-p Win32'
testRunTitle: '$(Build.SourceBranchName)-win32'
testRunPlatform: win32
win64:
Expand Down
2 changes: 1 addition & 1 deletion .azure-pipelines/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ jobs:
matrix:
win32:
arch: win32
buildOpt:
buildOpt: '-p Win32'
testRunTitle: '$(System.PullRequest.TargetBranch)-win32'
testRunPlatform: win32
win64:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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)'
Expand All @@ -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 -p x64 -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0

build_macos:
name: 'macOS'
Expand Down
4 changes: 2 additions & 2 deletions PCbuild/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -55,7 +55,7 @@ exit /b 127

:Run
setlocal
set platf=Win32
set platf=x64
set conf=Release
set target=Build
set dir=%~dp0
Expand Down
21 changes: 16 additions & 5 deletions PCbuild/env.bat
Original file line number Diff line number Diff line change
Expand Up @@ -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%
2 changes: 2 additions & 0 deletions PCbuild/env.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
$pcbuild = $script:MyInvocation.MyCommand.Path | Split-Path -parent;
& cmd /K "$pcbuild\env.bat" $args
18 changes: 15 additions & 3 deletions PCbuild/idle.bat
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 6 additions & 7 deletions PCbuild/prepare_libffi.bat
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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%"

Expand Down
18 changes: 15 additions & 3 deletions PCbuild/rt.bat
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down