From: Zachary Ware Date: Mon, 13 Apr 2015 17:11:40 +0000 (-0500) Subject: Closes #17202: Merge with 3.4 X-Git-Tag: v3.5.0a4~88^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=774ac377daf0da8eaddc578d883cd2002cb7a6a4;p=python Closes #17202: Merge with 3.4 --- 774ac377daf0da8eaddc578d883cd2002cb7a6a4 diff --cc Doc/make.bat index 6aae34a7e2,251f822abf..3ff91f288d --- a/Doc/make.bat +++ b/Doc/make.bat @@@ -1,133 -1,124 +1,133 @@@ - @echo off - setlocal - - pushd %~dp0 - - set this=%~n0 - - if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build - if "%PYTHON%" EQU "" set PYTHON=py - - if "%1" NEQ "htmlhelp" goto :skiphhcsearch - if exist "%HTMLHELP%" goto :skiphhcsearch - - rem Search for HHC in likely places - set HTMLHELP= - where hhc /q && set HTMLHELP=hhc && goto :skiphhcsearch - where /R ..\externals hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" - if not exist "%HTMLHELP%" where /R "%ProgramFiles(x86)%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" - if not exist "%HTMLHELP%" where /R "%ProgramFiles%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" - if not exist "%HTMLHELP%" echo Cannot find HHC on PATH or in externals & exit /B 1 - :skiphhcsearch - - if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/extensions/patchlevel.py`) do set DISTVERSION=%%v - - if "%BUILDDIR%" EQU "" set BUILDDIR=build - - rem Targets that don't require sphinx-build - if "%1" EQU "" goto help - if "%1" EQU "help" goto help - if "%1" EQU "check" goto check - if "%1" EQU "serve" goto serve - if "%1" == "clean" ( - rmdir /q /s %BUILDDIR% - goto end - ) - - %SPHINXBUILD% 2> nul - if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - popd - exit /B 1 - ) - - rem Targets that do require sphinx-build and have their own label - if "%1" EQU "htmlview" goto htmlview - - rem Everything else - goto build - - :help - echo.usage: %this% BUILDER [filename ...] - echo. - echo.Call %this% with the desired Sphinx builder as the first argument, e.g. - echo.``%this% html`` or ``%this% doctest``. Interesting targets that are - echo.always available include: - echo. - echo. Provided by Sphinx: - echo. html, htmlhelp, latex, text - echo. suspicious, linkcheck, changes, doctest - echo. Provided by this script: - echo. clean, check, serve, htmlview - echo. - echo.All arguments past the first one are passed through to sphinx-build as - echo.filenames to build or are ignored. See README.txt in this directory or - echo.the documentation for your version of Sphinx for more exhaustive lists - echo.of available targets and descriptions of each. - echo. - echo.This script assumes that the SPHINXBUILD environment variable contains - echo.a legitimate command for calling sphinx-build, or that sphinx-build is - echo.on your PATH if SPHINXBUILD is not set. Options for sphinx-build can - echo.be passed by setting the SPHINXOPTS environment variable. - goto end - - :build - if NOT "%PAPER%" == "" ( - set SPHINXOPTS=-D latex_paper_size=%PAPER% %SPHINXOPTS% - ) - cmd /C %SPHINXBUILD% %SPHINXOPTS% -b%1 -dbuild\doctrees . %BUILDDIR%\%* - - if "%1" EQU "htmlhelp" ( - if not exist "%HTMLHELP%" ( - echo. - echo.The HTML Help Workshop was not found. Set the HTMLHELP variable - echo.to the path to hhc.exe or download and install it from - echo.http://msdn.microsoft.com/en-us/library/ms669985 - rem Set errorlevel to 1 and exit - cmd /C exit /b 1 - goto end - ) - cmd /C "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp - rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2 - if not errorlevel 2 cmd /C exit /b 0 - ) - - echo. - if errorlevel 1 ( - echo.Build failed (exit code %ERRORLEVEL%^), check for error messages - echo.above. Any output will be found in %BUILDDIR%\%1 - ) else ( - echo.Build succeeded. All output should be in %BUILDDIR%\%1 - ) - goto end - - :htmlview - if NOT "%2" EQU "" ( - echo.Can't specify filenames to build with htmlview target, ignoring. - ) - cmd /C %this% html - - if EXIST %BUILDDIR%\html\index.html ( - echo.Opening %BUILDDIR%\html\index.html in the default web browser... - start %BUILDDIR%\html\index.html - ) - - goto end - - :check - cmd /C %PYTHON% tools\rstlint.py -i tools - goto end - - :serve - cmd /C %PYTHON% ..\Tools\scripts\serve.py %BUILDDIR%\html - goto end - - :end - popd + @echo off + setlocal + + pushd %~dp0 + + set this=%~n0 + + if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build + if "%PYTHON%" EQU "" set PYTHON=py + -if DEFINED ProgramFiles(x86) set _PRGMFLS=%ProgramFiles(x86)% -if NOT DEFINED ProgramFiles(x86) set _PRGMFLS=%ProgramFiles% -if "%HTMLHELP%" EQU "" set HTMLHELP=%_PRGMFLS%\HTML Help Workshop\hhc.exe ++if "%1" NEQ "htmlhelp" goto :skiphhcsearch ++if exist "%HTMLHELP%" goto :skiphhcsearch ++ ++rem Search for HHC in likely places ++set HTMLHELP= ++where hhc /q && set HTMLHELP=hhc && goto :skiphhcsearch ++where /R ..\externals hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" ++if not exist "%HTMLHELP%" where /R "%ProgramFiles(x86)%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" ++if not exist "%HTMLHELP%" where /R "%ProgramFiles%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" ++if not exist "%HTMLHELP%" echo Cannot find HHC on PATH or in externals & exit /B 1 ++:skiphhcsearch + + if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/extensions/patchlevel.py`) do set DISTVERSION=%%v + + if "%BUILDDIR%" EQU "" set BUILDDIR=build + + rem Targets that don't require sphinx-build + if "%1" EQU "" goto help + if "%1" EQU "help" goto help + if "%1" EQU "check" goto check + if "%1" EQU "serve" goto serve + if "%1" == "clean" ( + rmdir /q /s %BUILDDIR% + goto end + ) + + %SPHINXBUILD% 2> nul + if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ - goto end ++ popd ++ exit /B 1 + ) + + rem Targets that do require sphinx-build and have their own label + if "%1" EQU "htmlview" goto htmlview + + rem Everything else + goto build + + :help + echo.usage: %this% BUILDER [filename ...] + echo. + echo.Call %this% with the desired Sphinx builder as the first argument, e.g. + echo.``%this% html`` or ``%this% doctest``. Interesting targets that are + echo.always available include: + echo. + echo. Provided by Sphinx: + echo. html, htmlhelp, latex, text + echo. suspicious, linkcheck, changes, doctest + echo. Provided by this script: + echo. clean, check, serve, htmlview + echo. + echo.All arguments past the first one are passed through to sphinx-build as + echo.filenames to build or are ignored. See README.txt in this directory or + echo.the documentation for your version of Sphinx for more exhaustive lists + echo.of available targets and descriptions of each. + echo. + echo.This script assumes that the SPHINXBUILD environment variable contains + echo.a legitimate command for calling sphinx-build, or that sphinx-build is + echo.on your PATH if SPHINXBUILD is not set. Options for sphinx-build can + echo.be passed by setting the SPHINXOPTS environment variable. + goto end + + :build + if NOT "%PAPER%" == "" ( + set SPHINXOPTS=-D latex_paper_size=%PAPER% %SPHINXOPTS% + ) + cmd /C %SPHINXBUILD% %SPHINXOPTS% -b%1 -dbuild\doctrees . %BUILDDIR%\%* + + if "%1" EQU "htmlhelp" ( + if not exist "%HTMLHELP%" ( + echo. + echo.The HTML Help Workshop was not found. Set the HTMLHELP variable + echo.to the path to hhc.exe or download and install it from + echo.http://msdn.microsoft.com/en-us/library/ms669985 + rem Set errorlevel to 1 and exit + cmd /C exit /b 1 + goto end + ) + cmd /C "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp + rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2 + if not errorlevel 2 cmd /C exit /b 0 + ) + + echo. + if errorlevel 1 ( + echo.Build failed (exit code %ERRORLEVEL%^), check for error messages + echo.above. Any output will be found in %BUILDDIR%\%1 + ) else ( + echo.Build succeeded. All output should be in %BUILDDIR%\%1 + ) + goto end + + :htmlview + if NOT "%2" EQU "" ( + echo.Can't specify filenames to build with htmlview target, ignoring. + ) + cmd /C %this% html + + if EXIST %BUILDDIR%\html\index.html ( + echo.Opening %BUILDDIR%\html\index.html in the default web browser... + start %BUILDDIR%\html\index.html + ) + + goto end + + :check + cmd /C %PYTHON% tools\rstlint.py -i tools + goto end + + :serve + cmd /C %PYTHON% ..\Tools\scripts\serve.py %BUILDDIR%\html + goto end + + :end + popd diff --cc PC/bdist_wininst/build.bat index ee6856754f,0000000000..25f565ce0a mode 100644,000000..100644 --- a/PC/bdist_wininst/build.bat +++ b/PC/bdist_wininst/build.bat @@@ -1,22 -1,0 +1,22 @@@ - @echo off - setlocal - - set D=%~dp0 - set PCBUILD=%~dp0..\..\PCBuild\ - - - echo Building Lib\distutils\command\wininst-xx.0.exe - - call "%PCBUILD%env.bat" x86 - if errorlevel 1 goto :eof - - msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=Win32 - if errorlevel 1 goto :eof - - - echo Building Lib\distutils\command\wininst-xx.0-amd64.exe - - call "%PCBUILD%env.bat" x86_amd64 - if errorlevel 1 goto :eof - - msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=x64 ++@echo off ++setlocal ++ ++set D=%~dp0 ++set PCBUILD=%~dp0..\..\PCBuild\ ++ ++ ++echo Building Lib\distutils\command\wininst-xx.0.exe ++ ++call "%PCBUILD%env.bat" x86 ++if errorlevel 1 goto :eof ++ ++msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=Win32 ++if errorlevel 1 goto :eof ++ ++ ++echo Building Lib\distutils\command\wininst-xx.0-amd64.exe ++ ++call "%PCBUILD%env.bat" x86_amd64 ++if errorlevel 1 goto :eof ++ ++msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=x64 diff --cc PCbuild/build.bat index 2846144ff9,03534f3bb0..fa9f403f2f --- a/PCbuild/build.bat +++ b/PCbuild/build.bat @@@ -1,43 -1,19 +1,43 @@@ - @echo off - rem A batch program to build or rebuild a particular configuration, - rem just for convenience. - - rem Arguments: - rem -c Set the configuration (default: Release) - rem -p Set the platform (x64 or Win32, default: Win32) - rem -r Target Rebuild instead of Build - rem -t Set the target manually (Build, Rebuild, Clean, or CleanAll) - rem -d Set the configuration to Debug - rem -e Pull in external libraries using get_externals.bat - rem -M Disable parallel build - rem -v Increased output messages - - setlocal - set platf=Win32 - set vs_platf=x86 - set conf=Release - set target=Build - set dir=%~dp0 - set parallel=/m - set verbose=/nologo /v:m - - :CheckOpts - if '%1'=='-c' (set conf=%2) & shift & shift & goto CheckOpts - if '%1'=='-p' (set platf=%2) & shift & shift & goto CheckOpts - if '%1'=='-r' (set target=Rebuild) & shift & goto CheckOpts - if '%1'=='-t' (set target=%2) & shift & shift & goto CheckOpts - if '%1'=='-d' (set conf=Debug) & shift & goto CheckOpts - if '%1'=='-e' call "%dir%get_externals.bat" & shift & goto CheckOpts - if '%1'=='-M' (set parallel=) & shift & goto CheckOpts - if '%1'=='-v' (set verbose=/v:n) & shift & goto CheckOpts - - if '%platf%'=='x64' (set vs_platf=x86_amd64) - - rem Setup the environment - call "%dir%env.bat" %vs_platf% >nul - - rem Call on MSBuild to do the work, echo the command. - rem Passing %1-9 is not the preferred option, but argument parsing in - rem batch is, shall we say, "lackluster" - echo on - msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose% /p:Configuration=%conf% /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 + @echo off -rem A batch program to build or rebuild a particular configuration. ++rem A batch program to build or rebuild a particular configuration, + rem just for convenience. + ++rem Arguments: ++rem -c Set the configuration (default: Release) ++rem -p Set the platform (x64 or Win32, default: Win32) ++rem -r Target Rebuild instead of Build ++rem -t Set the target manually (Build, Rebuild, Clean, or CleanAll) ++rem -d Set the configuration to Debug ++rem -e Pull in external libraries using get_externals.bat ++rem -M Disable parallel build ++rem -v Increased output messages ++ + setlocal + set platf=Win32 ++set vs_platf=x86 + set conf=Release -set target=build ++set target=Build + set dir=%~dp0 ++set parallel=/m ++set verbose=/nologo /v:m + + :CheckOpts -if "%1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts -if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts -if "%1"=="-r" (set target=rebuild) & shift & goto CheckOpts -if "%1"=="-d" (set conf=Debug) & shift & goto CheckOpts ++if '%1'=='-c' (set conf=%2) & shift & shift & goto CheckOpts ++if '%1'=='-p' (set platf=%2) & shift & shift & goto CheckOpts ++if '%1'=='-r' (set target=Rebuild) & shift & goto CheckOpts ++if '%1'=='-t' (set target=%2) & shift & shift & goto CheckOpts ++if '%1'=='-d' (set conf=Debug) & shift & goto CheckOpts ++if '%1'=='-e' call "%dir%get_externals.bat" & shift & goto CheckOpts ++if '%1'=='-M' (set parallel=) & shift & goto CheckOpts ++if '%1'=='-v' (set verbose=/v:n) & shift & goto CheckOpts ++ ++if '%platf%'=='x64' (set vs_platf=x86_amd64) ++ ++rem Setup the environment ++call "%dir%env.bat" %vs_platf% >nul + -set cmd=msbuild /p:useenv=true %dir%pcbuild.sln /t:%target% /p:Configuration=%conf% /p:Platform=%platf% -echo %cmd% -%cmd% ++rem Call on MSBuild to do the work, echo the command. ++rem Passing %1-9 is not the preferred option, but argument parsing in ++rem batch is, shall we say, "lackluster" ++echo on ++msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose% /p:Configuration=%conf% /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --cc PCbuild/build_pgo.bat index 5988c0a268,d7e4e8bdb7..79ec2670b0 --- a/PCbuild/build_pgo.bat +++ b/PCbuild/build_pgo.bat @@@ -1,48 -1,41 +1,48 @@@ - @echo off - rem A batch program to build PGO (Profile guided optimization) by first - rem building instrumented binaries, then running the testsuite, and - rem finally building the optimized code. - rem Note, after the first instrumented run, one can just keep on - rem building the PGUpdate configuration while developing. - - setlocal - set platf=Win32 - set parallel=/m - set dir=%~dp0 - - rem use the performance testsuite. This is quick and simple - set job1="%dir%..\tools\pybench\pybench.py" -n 1 -C 1 --with-gc - set path1="%dir%..\tools\pybench" - - rem or the whole testsuite for more thorough testing - set job2="%dir%..\lib\test\regrtest.py" - set path2="%dir%..\lib" - - set job=%job1% - set clrpath=%path1% - - :CheckOpts - if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts - if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts - if "%1"=="-M" (set parallel=) & shift & goto CheckOpts - - - rem We cannot cross compile PGO builds, as the optimization needs to be run natively - set vs_platf=x86 - set PGO=%dir%win32-pgo - - if "%platf%"=="x64" (set vs_platf=amd64) & (set PGO=%dir%amd64-pgo) - rem Setup the environment - call "%dir%env.bat" %vs_platf% - - - rem build the instrumented version - msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGInstrument /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 - - rem remove .pyc files, .pgc files and execute the job - "%PGO%\python.exe" "%dir%rmpyc.py" %clrpath% - del "%PGO%\*.pgc" - "%PGO%\python.exe" %job% - - rem build optimized version - msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGUpdate /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 + @echo off + rem A batch program to build PGO (Profile guided optimization) by first + rem building instrumented binaries, then running the testsuite, and + rem finally building the optimized code. + rem Note, after the first instrumented run, one can just keep on + rem building the PGUpdate configuration while developing. + + setlocal + set platf=Win32 ++set parallel=/m ++set dir=%~dp0 + + rem use the performance testsuite. This is quick and simple -set job1=..\tools\pybench\pybench.py -n 1 -C 1 --with-gc -set path1=..\tools\pybench ++set job1="%dir%..\tools\pybench\pybench.py" -n 1 -C 1 --with-gc ++set path1="%dir%..\tools\pybench" + + rem or the whole testsuite for more thorough testing -set job2=..\lib\test\regrtest.py -set path2=..\lib ++set job2="%dir%..\lib\test\regrtest.py" ++set path2="%dir%..\lib" + + set job=%job1% + set clrpath=%path1% + + :CheckOpts + if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts + if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts ++if "%1"=="-M" (set parallel=) & shift & goto CheckOpts ++ ++ ++rem We cannot cross compile PGO builds, as the optimization needs to be run natively ++set vs_platf=x86 ++set PGO=%dir%win32-pgo ++ ++if "%platf%"=="x64" (set vs_platf=amd64) & (set PGO=%dir%amd64-pgo) ++rem Setup the environment ++call "%dir%env.bat" %vs_platf% + -set PGI=%platf%-pgi -set PGO=%platf%-pgo + -@echo on + rem build the instrumented version -call build -p %platf% -c PGInstrument ++msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGInstrument /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 + + rem remove .pyc files, .pgc files and execute the job -%PGI%\python.exe rmpyc.py %clrpath% -del %PGI%\*.pgc -%PGI%\python.exe %job% - -rem finally build the optimized version -if exist %PGO% del /s /q %PGO% -call build -p %platf% -c PGUpdate ++"%PGO%\python.exe" "%dir%rmpyc.py" %clrpath% ++del "%PGO%\*.pgc" ++"%PGO%\python.exe" %job% + ++rem build optimized version ++msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGUpdate /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --cc PCbuild/clean.bat index 6144c715f6,0000000000..78517d225f mode 100644,000000..100644 --- a/PCbuild/clean.bat +++ b/PCbuild/clean.bat @@@ -1,5 -1,0 +1,5 @@@ - @echo off - rem A batch program to clean a particular configuration, - rem just for convenience. - - call %~dp0build.bat -t Clean %* ++@echo off ++rem A batch program to clean a particular configuration, ++rem just for convenience. ++ ++call %~dp0build.bat -t Clean %* diff --cc PCbuild/env.bat index 9d4c9d1c32,8b64ce50dd..2b2c0051ce --- a/PCbuild/env.bat +++ b/PCbuild/env.bat @@@ -1,16 -1,9 +1,16 @@@ - @echo off - rem This script adds the latest available tools to the path for the current - rem command window. However, most builds of Python will ignore the version - rem of the tools on PATH and use PlatformToolset instead. Ideally, both sets of - rem tools should be the same version to avoid potential conflicts. - rem - rem To build Python with an earlier toolset, pass "/p:PlatformToolset=v100" (or - 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" %* + @echo off -set VS10=%ProgramFiles(x86)%\Microsoft Visual Studio 10.0 -IF EXIST "%VS10%" GOTO ok -set VS10=%ProgramFiles%\Microsoft Visual Studio 10.0 -:ok ++rem This script adds the latest available tools to the path for the current ++rem command window. However, most builds of Python will ignore the version ++rem of the tools on PATH and use PlatformToolset instead. Ideally, both sets of ++rem tools should be the same version to avoid potential conflicts. ++rem ++rem To build Python with an earlier toolset, pass "/p:PlatformToolset=v100" (or ++rem 'v110', 'v120' or 'v140') to the build script. + -echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64 ++echo Build environments: x86, amd64, x86_amd64 + echo. -call "%VS10%\VC\vcvarsall.bat" %1 ++set VSTOOLS=%VS140COMNTOOLS% ++if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS% ++if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS% ++if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS% ++call "%VSTOOLS%..\..\VC\vcvarsall.bat" %* diff --cc PCbuild/get_externals.bat index a1d5225028,0000000000..f778eaa0f0 mode 100644,000000..100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@@ -1,103 -1,0 +1,103 @@@ - @echo off - setlocal - rem Simple script to fetch source for external libraries - - if not exist "%~dp0..\externals" mkdir "%~dp0..\externals" - pushd "%~dp0..\externals" - - if "%SVNROOT%"=="" set SVNROOT=http://svn.python.org/projects/external/ - - rem Optionally clean up first. Be warned that this can be very destructive! - if not "%1"=="" ( - for %%c in (-c --clean --clean-only) do ( - if "%1"=="%%c" goto clean - ) - goto usage - ) - goto fetch - - :clean - echo.Cleaning up external libraries. - for /D %%d in ( - bzip2-* - db-* - nasm-* - openssl-* - tcl-* - tcltk* - tk-* - tix-* - sqlite-* - xz-* - ) do ( - echo.Removing %%d - rmdir /s /q %%d - ) - if "%1"=="--clean-only" ( - goto end - ) - - :fetch - rem Fetch current versions - - svn --version > nul 2>&1 - if ERRORLEVEL 9009 ( - echo.svn.exe must be on your PATH. - echo.Try TortoiseSVN (http://tortoisesvn.net/^) and be sure to check the - echo.command line tools option. - popd - exit /b 1 - ) - - echo.Fetching external libraries... - - for %%e in ( - bzip2-1.0.6 - nasm-2.11.06 - openssl-1.0.2a - tcl-core-8.6.3.1 - tk-8.6.3.1 - tix-8.4.3.4 - sqlite-3.8.3.1 - xz-5.0.5 - ) do ( - if exist %%e ( - echo.%%e already exists, skipping. - ) else ( - echo.Fetching %%e... - svn export %SVNROOT%%%e - ) - ) - - goto end - - :usage - echo.invalid argument: %1 - echo.usage: %~n0 [[ -c ^| --clean ] ^| --clean-only ] - echo. - echo.Pull all sources necessary for compiling optional extension modules - echo.that rely on external libraries. Requires svn.exe to be on your PATH - echo.and pulls sources from %SVNROOT%. - echo. - echo.Use the -c or --clean option to clean up all external library sources - echo.before pulling in the current versions. - echo. - echo.Use the --clean-only option to do the same cleaning, without pulling in - echo.anything new. - echo. - echo.Only the first argument is checked, all others are ignored. - echo. - echo.**WARNING**: the cleaning options unconditionally remove any directory - echo.that is a child of - echo. %CD% - echo.and matches wildcard patterns beginning with bzip2-, db-, nasm-, openssl-, - echo.tcl-, tcltk, tk-, tix-, sqlite-, or xz-, and as such has the potential - echo.to be very destructive if you are not aware of what it is doing. Use with - echo.caution! - popd - exit /b -1 - - - :end - echo Finished. - popd ++@echo off ++setlocal ++rem Simple script to fetch source for external libraries ++ ++if not exist "%~dp0..\externals" mkdir "%~dp0..\externals" ++pushd "%~dp0..\externals" ++ ++if "%SVNROOT%"=="" set SVNROOT=http://svn.python.org/projects/external/ ++ ++rem Optionally clean up first. Be warned that this can be very destructive! ++if not "%1"=="" ( ++ for %%c in (-c --clean --clean-only) do ( ++ if "%1"=="%%c" goto clean ++ ) ++ goto usage ++) ++goto fetch ++ ++:clean ++echo.Cleaning up external libraries. ++for /D %%d in ( ++ bzip2-* ++ db-* ++ nasm-* ++ openssl-* ++ tcl-* ++ tcltk* ++ tk-* ++ tix-* ++ sqlite-* ++ xz-* ++ ) do ( ++ echo.Removing %%d ++ rmdir /s /q %%d ++) ++if "%1"=="--clean-only" ( ++ goto end ++) ++ ++:fetch ++rem Fetch current versions ++ ++svn --version > nul 2>&1 ++if ERRORLEVEL 9009 ( ++ echo.svn.exe must be on your PATH. ++ echo.Try TortoiseSVN (http://tortoisesvn.net/^) and be sure to check the ++ echo.command line tools option. ++ popd ++ exit /b 1 ++) ++ ++echo.Fetching external libraries... ++ ++for %%e in ( ++ bzip2-1.0.6 ++ nasm-2.11.06 ++ openssl-1.0.2a ++ tcl-core-8.6.3.1 ++ tk-8.6.3.1 ++ tix-8.4.3.4 ++ sqlite-3.8.3.1 ++ xz-5.0.5 ++ ) do ( ++ if exist %%e ( ++ echo.%%e already exists, skipping. ++ ) else ( ++ echo.Fetching %%e... ++ svn export %SVNROOT%%%e ++ ) ++) ++ ++goto end ++ ++:usage ++echo.invalid argument: %1 ++echo.usage: %~n0 [[ -c ^| --clean ] ^| --clean-only ] ++echo. ++echo.Pull all sources necessary for compiling optional extension modules ++echo.that rely on external libraries. Requires svn.exe to be on your PATH ++echo.and pulls sources from %SVNROOT%. ++echo. ++echo.Use the -c or --clean option to clean up all external library sources ++echo.before pulling in the current versions. ++echo. ++echo.Use the --clean-only option to do the same cleaning, without pulling in ++echo.anything new. ++echo. ++echo.Only the first argument is checked, all others are ignored. ++echo. ++echo.**WARNING**: the cleaning options unconditionally remove any directory ++echo.that is a child of ++echo. %CD% ++echo.and matches wildcard patterns beginning with bzip2-, db-, nasm-, openssl-, ++echo.tcl-, tcltk, tk-, tix-, sqlite-, or xz-, and as such has the potential ++echo.to be very destructive if you are not aware of what it is doing. Use with ++echo.caution! ++popd ++exit /b -1 ++ ++ ++:end ++echo Finished. ++popd diff --cc PCbuild/idle.bat index 1978b99f6e,5ab15f5164..bacaaa8414 --- a/PCbuild/idle.bat +++ b/PCbuild/idle.bat @@@ -1,15 -1,15 +1,15 @@@ - @echo off - rem start idle - rem Usage: idle [-d] - rem -d Run Debug build (python_d.exe). Else release build. - - setlocal - set exe=win32\python - PATH %PATH%;..\externals\tcltk\bin - - if "%1"=="-d" (set exe=%exe%_d) & shift - - set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 - - echo on - %cmd% + @echo off + rem start idle + rem Usage: idle [-d] + rem -d Run Debug build (python_d.exe). Else release build. + + setlocal -set exe=python -PATH %PATH%;..\..\tcltk\bin ++set exe=win32\python ++PATH %PATH%;..\externals\tcltk\bin + -if "%1"=="-d" (set exe=python_d) & shift ++if "%1"=="-d" (set exe=%exe%_d) & shift + + set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 + + echo on + %cmd% diff --cc PCbuild/prepare_ssl.bat index cb06500863,2975b8d7e2..c08a9f3474 --- a/PCbuild/prepare_ssl.bat +++ b/PCbuild/prepare_ssl.bat @@@ -1,12 -1,12 +1,12 @@@ - @echo off - if not defined HOST_PYTHON ( - if %1 EQU Debug ( - shift - set HOST_PYTHON=python_d.exe - if not exist python35_d.dll exit 1 - ) ELSE ( - set HOST_PYTHON=python.exe - if not exist python35.dll exit 1 - ) - ) - %HOST_PYTHON% prepare_ssl.py %1 + @echo off + if not defined HOST_PYTHON ( + if %1 EQU Debug ( ++ shift + set HOST_PYTHON=python_d.exe - if not exist python34_d.dll exit 1 ++ if not exist python35_d.dll exit 1 + ) ELSE ( + set HOST_PYTHON=python.exe - if not exist python34.dll exit 1 ++ if not exist python35.dll exit 1 + ) + ) -%HOST_PYTHON% build_ssl.py %1 %2 %3 - ++%HOST_PYTHON% prepare_ssl.py %1 diff --cc PCbuild/rt.bat index 5041cd3ea2,854355cbf5..039c81054a --- a/PCbuild/rt.bat +++ b/PCbuild/rt.bat @@@ -1,58 -1,58 +1,58 @@@ - @echo off - rem Run Tests. Run the regression test suite. - rem Usage: rt [-d] [-O] [-q] [-x64] regrtest_args - rem -d Run Debug build (python_d.exe). Else release build. - 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 .py[co] files reachable from Lib/. - rem -q runs the tests just once, and without deleting .py[co] files. - rem -x64 Run the 64-bit build of python (or python_d if -d was specified) - rem from the 'amd64' dir instead of the 32-bit build in this dir. - 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, - rem rt -O -d -x test_thread - rem runs - rem python_d -O ../lib/test/regrtest.py -x test_thread - rem twice, and - rem rt -q -g test_binascii - rem runs - rem python_d ../lib/test/regrtest.py -g test_binascii - rem to generate the expected-output file for binascii quickly. - rem - rem Confusing: if you want to pass a comma-separated list, like - rem -u network,largefile - rem then you have to quote it on the rt line, like - rem rt -u "network,largefile" - - setlocal - - set pcbuild=%~dp0 - set prefix=%pcbuild%win32\ - set suffix= - set qmode= - set dashO= - - :CheckOpts - 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"=="-x64" (set prefix=%pcbuild%amd64\) & shift & goto CheckOpts - - set exe=%prefix%python%suffix%.exe - set cmd="%exe%" %dashO% -Wd -E -bb "%pcbuild%..\lib\test\regrtest.py" %1 %2 %3 %4 %5 %6 %7 %8 %9 - if defined qmode goto Qmode - - echo Deleting .pyc/.pyo files ... - "%exe%" "%pcbuild%rmpyc.py" - - echo on - %cmd% - @echo off - - echo About to run again without deleting .pyc/.pyo first: - pause - - :Qmode - echo on - %cmd% + @echo off + rem Run Tests. Run the regression test suite. + rem Usage: rt [-d] [-O] [-q] [-x64] regrtest_args + rem -d Run Debug build (python_d.exe). Else release build. + 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 .py[co] files reachable from Lib/. + rem -q runs the tests just once, and without deleting .py[co] files. + rem -x64 Run the 64-bit build of python (or python_d if -d was specified) + rem from the 'amd64' dir instead of the 32-bit build in this dir. + rem All leading instances of these switches are shifted off, and -rem whatever remains is passed to regrtest.py. For example, ++rem whatever remains (up to 9 arguments) is passed to regrtest.py. ++rem For example, + rem rt -O -d -x test_thread + rem runs + rem python_d -O ../lib/test/regrtest.py -x test_thread + rem twice, and + rem rt -q -g test_binascii + rem runs + rem python_d ../lib/test/regrtest.py -g test_binascii + rem to generate the expected-output file for binascii quickly. + rem + rem Confusing: if you want to pass a comma-separated list, like + rem -u network,largefile + rem then you have to quote it on the rt line, like + rem rt -u "network,largefile" + + setlocal + -set prefix=.\ ++set pcbuild=%~dp0 ++set prefix=%pcbuild%win32\ + set suffix= + set qmode= + set dashO= -set tcltk=tcltk + + :CheckOpts + 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"=="-x64" (set prefix=amd64) & (set tcltk=tcltk64) & shift & goto CheckOpts ++if "%1"=="-x64" (set prefix=%pcbuild%amd64\) & shift & goto CheckOpts + -PATH %PATH%;%~dp0..\externals\%tcltk%\bin -set exe=%prefix%\python%suffix% -set cmd=%exe% %dashO% -Wd -E -bb ../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9 ++set exe=%prefix%python%suffix%.exe ++set cmd="%exe%" %dashO% -Wd -E -bb "%pcbuild%..\lib\test\regrtest.py" %1 %2 %3 %4 %5 %6 %7 %8 %9 + if defined qmode goto Qmode + + echo Deleting .pyc/.pyo files ... -%exe% rmpyc.py ++"%exe%" "%pcbuild%rmpyc.py" + + echo on + %cmd% + @echo off + + echo About to run again without deleting .pyc/.pyo first: + pause + + :Qmode + echo on + %cmd% diff --cc Tools/buildbot/build-amd64.bat index 115e111f76,a4cde1bd59..8b93bb0973 --- a/Tools/buildbot/build-amd64.bat +++ b/Tools/buildbot/build-amd64.bat @@@ -1,2 -1,6 +1,2 @@@ - @rem Used by the buildbot "compile" step. - call "%~dp0build.bat" -p x64 %* + @rem Used by the buildbot "compile" step. -cmd /c Tools\buildbot\external-amd64.bat -call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 -cmd /c Tools\buildbot\clean-amd64.bat - -msbuild PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=x64 ++call "%~dp0build.bat" -p x64 %* diff --cc Tools/buildbot/build.bat index 83a5dfd101,82eeef4d59..1debfc19d7 --- a/Tools/buildbot/build.bat +++ b/Tools/buildbot/build.bat @@@ -1,20 -1,7 +1,20 @@@ - @rem Used by the buildbot "compile" step. - - @rem Clean up - set PLAT= - if '%1' EQU '-p' if '%2' EQU 'x64' (set PLAT=-amd64) - - call "%~dp0clean%PLAT%.bat" - - @rem If you need the buildbots to start fresh (such as when upgrading to - @rem a new version of an external library, especially Tcl/Tk): - @rem 1) uncomment the following line: - - @rem call "%~dp0..\..\PCbuild\get_externals.bat" --clean-only - - @rem 2) commit and push - @rem 3) wait for all Windows bots to start a build with that changeset - @rem 4) re-comment, commit and push again - - @rem Do the build - call "%~dp0..\..\PCbuild\build.bat" -e -d -v %* + @rem Used by the buildbot "compile" step. -cmd /c Tools\buildbot\external.bat -call "%VS100COMNTOOLS%vsvars32.bat" -cmd /c Tools\buildbot\clean.bat + -msbuild PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=Win32 ++@rem Clean up ++set PLAT= ++if '%1' EQU '-p' if '%2' EQU 'x64' (set PLAT=-amd64) + ++call "%~dp0clean%PLAT%.bat" ++ ++@rem If you need the buildbots to start fresh (such as when upgrading to ++@rem a new version of an external library, especially Tcl/Tk): ++@rem 1) uncomment the following line: ++ ++@rem call "%~dp0..\..\PCbuild\get_externals.bat" --clean-only ++ ++@rem 2) commit and push ++@rem 3) wait for all Windows bots to start a build with that changeset ++@rem 4) re-comment, commit and push again ++ ++@rem Do the build ++call "%~dp0..\..\PCbuild\build.bat" -e -d -v %* diff --cc Tools/buildbot/buildmsi.bat index 6804d79479,4ca5604464..e3c2dbd73d --- a/Tools/buildbot/buildmsi.bat +++ b/Tools/buildbot/buildmsi.bat @@@ -1,9 -1,21 +1,9 @@@ - @rem Used by the buildbot "buildmsi" step. - setlocal - - pushd - - @rem build both snapshot MSIs - call "%~dp0..\msi\build.bat" -x86 -x64 - + @rem Used by the buildbot "buildmsi" step. ++setlocal + -cmd /c Tools\buildbot\external.bat -@rem build release versions of things -call "%VS100COMNTOOLS%vsvars32.bat" ++pushd + -@rem build Python -msbuild /p:useenv=true PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=Win32 - -@rem build the documentation -bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' -"%ProgramFiles%\HTML Help Workshop\hhc.exe" Doc\build\htmlhelp\python26a3.hhp - -@rem build the MSI file -cd PC -nmake /f icons.mak -cd ..\Tools\msi -del *.msi -nmake /f msisupport.mak -%HOST_PYTHON% msi.py ++@rem build both snapshot MSIs ++call "%~dp0..\msi\build.bat" -x86 -x64 + +popd diff --cc Tools/buildbot/clean-amd64.bat index b4882c2946,54d1fcf17d..5e68e30a64 --- a/Tools/buildbot/clean-amd64.bat +++ b/Tools/buildbot/clean-amd64.bat @@@ -1,2 -1,10 +1,2 @@@ - @rem Used by the buildbot "clean" step. - @call "%~dp0clean.bat" x64 + @rem Used by the buildbot "clean" step. -call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 -@echo Deleting .pyc/.pyo files ... -del /s Lib\*.pyc Lib\*.pyo -@echo Deleting test leftovers ... -rmdir /s /q build -cd PCbuild -msbuild /target:clean pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x64 -msbuild /target:clean pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x64 -cd .. ++@call "%~dp0clean.bat" x64 diff --cc Tools/buildbot/clean.bat index 09328bcc9c,c69bf56ca5..6890453cf5 --- a/Tools/buildbot/clean.bat +++ b/Tools/buildbot/clean.bat @@@ -1,29 -1,8 +1,29 @@@ - @echo off - rem Used by the buildbot "clean" step. - - setlocal - set root=%~dp0..\.. - set pcbuild=%root%\PCbuild - - if "%1" == "x64" ( - set vcvars_target=x86_amd64 - set platform=x64 - ) else ( - set vcvars_target=x86 - set platform=Win32 - ) - - call "%pcbuild%\env.bat" %vcvars_target% - - echo.Attempting to kill Pythons... - msbuild /v:m /nologo /target:KillPython "%pcbuild%\pythoncore.vcxproj" /p:Configuration=Release /p:Platform=%platform% /p:KillPython=true - - echo Deleting .pyc/.pyo files ... - del /s "%root%\Lib\*.pyc" "%root%\Lib\*.pyo" - - echo Deleting test leftovers ... - rmdir /s /q "%root%\build" - - echo Deleting build - msbuild /v:m /nologo /target:clean "%pcbuild%\pcbuild.proj" /p:Configuration=Release /p:Platform=%platform% - msbuild /v:m /nologo /target:clean "%pcbuild%\pcbuild.proj" /p:Configuration=Debug /p:Platform=%platform% -@rem Used by the buildbot "clean" step. -call "%VS100COMNTOOLS%vsvars32.bat" -@echo Deleting test leftovers ... -rmdir /s /q build -cd PCbuild -msbuild /target:clean pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x86 -msbuild /target:clean pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x86 -cd .. ++@echo off ++rem Used by the buildbot "clean" step. ++ ++setlocal ++set root=%~dp0..\.. ++set pcbuild=%root%\PCbuild ++ ++if "%1" == "x64" ( ++ set vcvars_target=x86_amd64 ++ set platform=x64 ++) else ( ++ set vcvars_target=x86 ++ set platform=Win32 ++) ++ ++call "%pcbuild%\env.bat" %vcvars_target% ++ ++echo.Attempting to kill Pythons... ++msbuild /v:m /nologo /target:KillPython "%pcbuild%\pythoncore.vcxproj" /p:Configuration=Release /p:Platform=%platform% /p:KillPython=true ++ ++echo Deleting .pyc/.pyo files ... ++del /s "%root%\Lib\*.pyc" "%root%\Lib\*.pyo" ++ ++echo Deleting test leftovers ... ++rmdir /s /q "%root%\build" ++ ++echo Deleting build ++msbuild /v:m /nologo /target:clean "%pcbuild%\pcbuild.proj" /p:Configuration=Release /p:Platform=%platform% ++msbuild /v:m /nologo /target:clean "%pcbuild%\pcbuild.proj" /p:Configuration=Debug /p:Platform=%platform% diff --cc Tools/buildbot/external-amd64.bat index 7a570d92ba,0ea56b8e65..13056c7674 --- a/Tools/buildbot/external-amd64.bat +++ b/Tools/buildbot/external-amd64.bat @@@ -1,2 -1,28 +1,2 @@@ - @echo Please use PCbuild\get_externals.bat instead. - @"%~dp0..\..\PCbuild\get_externals.bat" %* -@rem Fetches (and builds if necessary) external dependencies - -@rem Assume we start inside the Python source directory -call "Tools\buildbot\external-common.bat" -call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 - -if not exist tcltk64\bin\tcl86tg.dll ( - cd tcl-8.6.1.0\win - nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean core shell dlls - nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 install-binaries install-libraries - cd ..\.. -) - -if not exist tcltk64\bin\tk86tg.dll ( - cd tk-8.6.1.0\win - nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.6.1.0 clean - nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.6.1.0 all - nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.6.1.0 install-binaries install-libraries - cd ..\.. -) - -if not exist tcltk64\lib\tix8.4.3\tix84g.dll ( - cd tix-8.4.3.4\win - nmake -f python.mak DEBUG=1 MACHINE=AMD64 TCL_DIR=..\..\tcl-8.6.1.0 TK_DIR=..\..\tk-8.6.1.0 INSTALL_DIR=..\..\tcltk64 clean - nmake -f python.mak DEBUG=1 MACHINE=AMD64 TCL_DIR=..\..\tcl-8.6.1.0 TK_DIR=..\..\tk-8.6.1.0 INSTALL_DIR=..\..\tcltk64 all - nmake -f python.mak DEBUG=1 MACHINE=AMD64 TCL_DIR=..\..\tcl-8.6.1.0 TK_DIR=..\..\tk-8.6.1.0 INSTALL_DIR=..\..\tcltk64 install - cd ..\.. -) ++@echo Please use PCbuild\get_externals.bat instead. ++@"%~dp0..\..\PCbuild\get_externals.bat" %* diff --cc Tools/buildbot/external.bat index 7a570d92ba,7ee91c7d8b..13056c7674 --- a/Tools/buildbot/external.bat +++ b/Tools/buildbot/external.bat @@@ -1,2 -1,29 +1,2 @@@ - @echo Please use PCbuild\get_externals.bat instead. - @"%~dp0..\..\PCbuild\get_externals.bat" %* -@rem Fetches (and builds if necessary) external dependencies - -@rem Assume we start inside the Python source directory -call "Tools\buildbot\external-common.bat" -call "%VS100COMNTOOLS%\vsvars32.bat" - -if not exist tcltk\bin\tcl86tg.dll ( - @rem all and install need to be separate invocations, otherwise nmakehlp is not found on install - cd tcl-8.6.1.0\win - nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk clean core shell dlls - nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk install-binaries install-libraries - cd ..\.. -) - -if not exist tcltk\bin\tk86tg.dll ( - cd tk-8.6.1.0\win - nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.6.1.0 clean - nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.6.1.0 all - nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.6.1.0 install-binaries install-libraries - cd ..\.. -) - -if not exist tcltk\lib\tix8.4.3\tix84g.dll ( - cd tix-8.4.3.4\win - nmake -f python.mak DEBUG=1 MACHINE=IX86 TCL_DIR=..\..\tcl-8.6.1.0 TK_DIR=..\..\tk-8.6.1.0 INSTALL_DIR=..\..\tcltk clean - nmake -f python.mak DEBUG=1 MACHINE=IX86 TCL_DIR=..\..\tcl-8.6.1.0 TK_DIR=..\..\tk-8.6.1.0 INSTALL_DIR=..\..\tcltk all - nmake -f python.mak DEBUG=1 MACHINE=IX86 TCL_DIR=..\..\tcl-8.6.1.0 TK_DIR=..\..\tk-8.6.1.0 INSTALL_DIR=..\..\tcltk install - cd ..\.. -) ++@echo Please use PCbuild\get_externals.bat instead. ++@"%~dp0..\..\PCbuild\get_externals.bat" %* diff --cc Tools/buildbot/test-amd64.bat index 7a241f50ab,9d4d67d2c8..044026fa77 --- a/Tools/buildbot/test-amd64.bat +++ b/Tools/buildbot/test-amd64.bat @@@ -1,7 -1,3 +1,7 @@@ - @rem Used by the buildbot "test" step. - - setlocal - rem The following line should be removed before #20035 is closed - set TCL_LIBRARY=%~dp0..\..\externals\tcltk64\lib\tcl8.6 - - call "%~dp0..\..\PCbuild\rt.bat" -d -q -x64 -uall -rwW -n --timeout=3600 %* + @rem Used by the buildbot "test" step. -cd PCbuild -call rt.bat -d -q -x64 -uall -rwW -n --timeout=3600 %1 %2 %3 %4 %5 %6 %7 %8 %9 ++ ++setlocal ++rem The following line should be removed before #20035 is closed ++set TCL_LIBRARY=%~dp0..\..\externals\tcltk64\lib\tcl8.6 ++ ++call "%~dp0..\..\PCbuild\rt.bat" -d -q -x64 -uall -rwW -n --timeout=3600 %* diff --cc Tools/buildbot/test.bat index 6a6448c3ae,da90a558bb..427957b789 --- a/Tools/buildbot/test.bat +++ b/Tools/buildbot/test.bat @@@ -1,7 -1,3 +1,7 @@@ - @rem Used by the buildbot "test" step. - - setlocal - rem The following line should be removed before #20035 is closed - set TCL_LIBRARY=%~dp0..\..\externals\tcltk\lib\tcl8.6 - - call "%~dp0..\..\PCbuild\rt.bat" -d -q -uall -rwW -n --timeout=3600 %* + @rem Used by the buildbot "test" step. -cd PCbuild -call rt.bat -d -q -uall -rwW -n --timeout=3600 %1 %2 %3 %4 %5 %6 %7 %8 %9 ++ ++setlocal ++rem The following line should be removed before #20035 is closed ++set TCL_LIBRARY=%~dp0..\..\externals\tcltk\lib\tcl8.6 ++ ++call "%~dp0..\..\PCbuild\rt.bat" -d -q -uall -rwW -n --timeout=3600 %* diff --cc Tools/msi/build.bat index efee66bc25,0000000000..4dfa5fb8bd mode 100644,000000..100644 --- a/Tools/msi/build.bat +++ b/Tools/msi/build.bat @@@ -1,46 -1,0 +1,46 @@@ - @echo off - setlocal - set D=%~dp0 - set PCBUILD=%D%..\..\PCBuild\ - - set BUILDX86= - set BUILDX64= - set BUILDDOC= - - :CheckOpts - if '%1'=='-x86' (set BUILDX86=1) && shift && goto CheckOpts - if '%1'=='-x64' (set BUILDX64=1) && shift && goto CheckOpts - if '%1'=='--doc' (set BUILDDOC=1) && shift && goto CheckOpts - - if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) - - call "%PCBUILD%env.bat" x86 - - if defined BUILDX86 ( - call "%PCBUILD%build.bat" -d - if errorlevel 1 goto :eof - call "%PCBUILD%build.bat" - if errorlevel 1 goto :eof - ) - if defined BUILDX64 ( - call "%PCBUILD%build.bat" -p x64 -d - if errorlevel 1 goto :eof - call "%PCBUILD%build.bat" -p x64 - if errorlevel 1 goto :eof - ) - - if defined BUILDDOC ( - call "%PCBUILD%..\Doc\make.bat" htmlhelp - if errorlevel 1 goto :eof - ) - - if defined BUILDX86 ( - "%PCBUILD%win32\python.exe" "%D%get_wix.py" - msbuild "%D%bundle\snapshot.wixproj" - if errorlevel 1 goto :eof - ) - if defined BUILDX64 ( - "%PCBUILD%amd64\python.exe" "%D%get_wix.py" - msbuild "%D%bundle\snapshot.wixproj" /p:Platform=x64 - if errorlevel 1 goto :eof - ) ++@echo off ++setlocal ++set D=%~dp0 ++set PCBUILD=%D%..\..\PCBuild\ ++ ++set BUILDX86= ++set BUILDX64= ++set BUILDDOC= ++ ++:CheckOpts ++if '%1'=='-x86' (set BUILDX86=1) && shift && goto CheckOpts ++if '%1'=='-x64' (set BUILDX64=1) && shift && goto CheckOpts ++if '%1'=='--doc' (set BUILDDOC=1) && shift && goto CheckOpts ++ ++if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) ++ ++call "%PCBUILD%env.bat" x86 ++ ++if defined BUILDX86 ( ++ call "%PCBUILD%build.bat" -d ++ if errorlevel 1 goto :eof ++ call "%PCBUILD%build.bat" ++ if errorlevel 1 goto :eof ++) ++if defined BUILDX64 ( ++ call "%PCBUILD%build.bat" -p x64 -d ++ if errorlevel 1 goto :eof ++ call "%PCBUILD%build.bat" -p x64 ++ if errorlevel 1 goto :eof ++) ++ ++if defined BUILDDOC ( ++ call "%PCBUILD%..\Doc\make.bat" htmlhelp ++ if errorlevel 1 goto :eof ++) ++ ++if defined BUILDX86 ( ++ "%PCBUILD%win32\python.exe" "%D%get_wix.py" ++ msbuild "%D%bundle\snapshot.wixproj" ++ if errorlevel 1 goto :eof ++) ++if defined BUILDX64 ( ++ "%PCBUILD%amd64\python.exe" "%D%get_wix.py" ++ msbuild "%D%bundle\snapshot.wixproj" /p:Platform=x64 ++ if errorlevel 1 goto :eof ++) diff --cc Tools/msi/buildrelease.bat index 09c63a6830,0000000000..25f450866a mode 100644,000000..100644 --- a/Tools/msi/buildrelease.bat +++ b/Tools/msi/buildrelease.bat @@@ -1,164 -1,0 +1,164 @@@ - @setlocal - @echo off - - rem This script is intended for building official releases of Python. - rem To use it to build alternative releases, you should clone this file - rem and modify the following three URIs. - rem - rem The first two will ensure that your release can be installed - rem alongside an official Python release, while the second specifies - rem the URL that will be used to download installation files. The - rem files available from this URL *will* conflict with your installer. - rem Trust me, you don't want them, even if it seems like a good idea. - - set RELEASE_URI_X86=http://www.python.org/win32 - set RELEASE_URI_X64=http://www.python.org/amd64 - set DOWNLOAD_URL_BASE=https://www.python.org/ftp/python - set DOWNLOAD_URL= - - set D=%~dp0 - set PCBUILD=%D%..\..\PCBuild\ - - set BUILDX86= - set BUILDX64= - set TARGET=Rebuild - set TESTTARGETDIR= - - - :CheckOpts - if "%1" EQU "-h" goto Help - if "%1" EQU "-c" (set CERTNAME=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--certificate" (set CERTNAME=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "-o" (set OUTDIR=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--out" (set OUTDIR=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "-D" (set SKIPDOC=1) && shift && goto CheckOpts - if "%1" EQU "--skip-doc" (set SKIPDOC=1) && shift && goto CheckOpts - if "%1" EQU "-B" (set SKIPBUILD=1) && shift && goto CheckOpts - if "%1" EQU "--skip-build" (set SKIPBUILD=1) && shift && goto CheckOpts - if "%1" EQU "--download" (set DOWNLOAD_URL=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--test" (set TESTTARGETDIR=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "-b" (set TARGET=Build) && shift && goto CheckOpts - if "%1" EQU "--build" (set TARGET=Build) && shift && goto CheckOpts - if "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts - if "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts - - if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) - - :builddoc - if "%SKIPBUILD%" EQU "1" goto skipdoc - if "%SKIPDOC%" EQU "1" goto skipdoc - - if not defined PYTHON where py -q || echo Cannot find py on path and PYTHON is not set. && exit /B 1 - if not defined SPHINXBUILD where sphinx-build -q || echo Cannot find sphinx-build on path and SPHINXBUILD is not set. && exit /B 1 - call "%D%..\..\doc\make.bat" htmlhelp - if errorlevel 1 goto :eof - :skipdoc - - where hg /q || echo Cannot find Mercurial on PATH && exit /B 1 - - where dlltool /q && goto skipdlltoolsearch - set _DLLTOOL_PATH= - where /R "%D%..\..\externals" dlltool > "%TEMP%\dlltool.loc" 2> nul && set /P _DLLTOOL_PATH= < "%TEMP%\dlltool.loc" & del "%TEMP%\dlltool.loc" - if not exist "%_DLLTOOL_PATH%" echo Cannot find binutils on PATH or in external && exit /B 1 - for %%f in (%_DLLTOOL_PATH%) do set PATH=%PATH%;%%~dpf - set _DLLTOOL_PATH= - :skipdlltoolsearch - - if defined BUILDX86 ( - call :build x86 - if errorlevel 1 exit /B - ) - - if defined BUILDX64 ( - call :build x64 - if errorlevel 1 exit /B - ) - - if defined TESTTARGETDIR ( - call "%D%testrelease.bat" -t "%TESTTARGETDIR%" - ) - - exit /B 0 - - :build - @setlocal - @echo off - - if "%1" EQU "x86" ( - call "%PCBUILD%env.bat" x86 - set BUILD=%PCBUILD%win32\ - set BUILD_PLAT=Win32 - set OUTDIR_PLAT=win32 - set OBJDIR_PLAT=x86 - set RELEASE_URI=%RELEASE_URI_X86% - ) ELSE ( - call "%PCBUILD%env.bat" x86_amd64 - set BUILD=%PCBUILD%amd64\ - set BUILD_PLAT=x64 - set OUTDIR_PLAT=amd64 - set OBJDIR_PLAT=x64 - set RELEASE_URI=%RELEASE_URI_X64% - ) - - if exist "%BUILD%en-us" ( - echo Deleting %BUILD%en-us - rmdir /q/s "%BUILD%en-us" - if errorlevel 1 exit /B - ) - - if exist "%D%obj\Release_%OBJDIR_PLAT%" ( - echo Deleting "%D%obj\Release_%OBJDIR_PLAT%" - rmdir /q/s "%D%obj\Release_%OBJDIR_PLAT%" - if errorlevel 1 exit /B - ) - - if not "%CERTNAME%" EQU "" ( - set CERTOPTS="/p:SigningCertificate=%CERTNAME%" - ) else ( - set CERTOPTS= - ) - - if not "%SKIPBUILD%" EQU "1" ( - call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -d -t %TARGET% %CERTOPTS% - if errorlevel 1 exit /B - call "%PCBUILD%build.bat" -p %BUILD_PLAT% -t %TARGET% %CERTOPTS% - if errorlevel 1 exit /B - @rem build.bat turns echo back on, so we disable it again - @echo off - ) - - "%BUILD%python.exe" "%D%get_wix.py" - - set BUILDOPTS=/p:Platform=%1 /p:BuildForRelease=true /p:DownloadUrl=%DOWNLOAD_URL% /p:DownloadUrlBase=%DOWNLOAD_URL_BASE% /p:ReleaseUri=%RELEASE_URI% - msbuild "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true - if errorlevel 1 exit /B - msbuild "%D%bundle\releaseweb.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=false - if errorlevel 1 exit /B - - if not "%OUTDIR%" EQU "" ( - mkdir "%OUTDIR%\%OUTDIR_PLAT%" - copy /Y "%BUILD%en-us\*.cab" "%OUTDIR%\%OUTDIR_PLAT%" - copy /Y "%BUILD%en-us\*.exe" "%OUTDIR%\%OUTDIR_PLAT%" - copy /Y "%BUILD%en-us\*.msi" "%OUTDIR%\%OUTDIR_PLAT%" - copy /Y "%BUILD%en-us\*.msu" "%OUTDIR%\%OUTDIR_PLAT%" - ) - - exit /B 0 - - :Help - echo buildrelease.bat [--out DIR] [-x86] [-x64] [--certificate CERTNAME] [--build] [--skip-build] - echo [--skip-doc] [--download DOWNLOAD URL] [--test TARGETDIR] [-h] - echo. - echo --out (-o) Specify an additional output directory for installers - echo -x86 Build x86 installers - echo -x64 Build x64 installers - echo --build (-b) Incrementally build Python rather than rebuilding - echo --skip-build (-B) Do not build Python (just do the installers) - echo --skip-doc (-D) Do not build documentation - echo --download Specify the full download URL for MSIs (should include {2}) - echo --test Specify the test directory to run the installer tests - echo -h Display this help information - echo. - echo If no architecture is specified, all architectures will be built. - echo If --test is not specified, the installer tests are not run. ++@setlocal ++@echo off ++ ++rem This script is intended for building official releases of Python. ++rem To use it to build alternative releases, you should clone this file ++rem and modify the following three URIs. ++rem ++rem The first two will ensure that your release can be installed ++rem alongside an official Python release, while the second specifies ++rem the URL that will be used to download installation files. The ++rem files available from this URL *will* conflict with your installer. ++rem Trust me, you don't want them, even if it seems like a good idea. ++ ++set RELEASE_URI_X86=http://www.python.org/win32 ++set RELEASE_URI_X64=http://www.python.org/amd64 ++set DOWNLOAD_URL_BASE=https://www.python.org/ftp/python ++set DOWNLOAD_URL= ++ ++set D=%~dp0 ++set PCBUILD=%D%..\..\PCBuild\ ++ ++set BUILDX86= ++set BUILDX64= ++set TARGET=Rebuild ++set TESTTARGETDIR= ++ ++ ++:CheckOpts ++if "%1" EQU "-h" goto Help ++if "%1" EQU "-c" (set CERTNAME=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--certificate" (set CERTNAME=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "-o" (set OUTDIR=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--out" (set OUTDIR=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "-D" (set SKIPDOC=1) && shift && goto CheckOpts ++if "%1" EQU "--skip-doc" (set SKIPDOC=1) && shift && goto CheckOpts ++if "%1" EQU "-B" (set SKIPBUILD=1) && shift && goto CheckOpts ++if "%1" EQU "--skip-build" (set SKIPBUILD=1) && shift && goto CheckOpts ++if "%1" EQU "--download" (set DOWNLOAD_URL=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--test" (set TESTTARGETDIR=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "-b" (set TARGET=Build) && shift && goto CheckOpts ++if "%1" EQU "--build" (set TARGET=Build) && shift && goto CheckOpts ++if "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts ++if "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts ++ ++if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) ++ ++:builddoc ++if "%SKIPBUILD%" EQU "1" goto skipdoc ++if "%SKIPDOC%" EQU "1" goto skipdoc ++ ++if not defined PYTHON where py -q || echo Cannot find py on path and PYTHON is not set. && exit /B 1 ++if not defined SPHINXBUILD where sphinx-build -q || echo Cannot find sphinx-build on path and SPHINXBUILD is not set. && exit /B 1 ++call "%D%..\..\doc\make.bat" htmlhelp ++if errorlevel 1 goto :eof ++:skipdoc ++ ++where hg /q || echo Cannot find Mercurial on PATH && exit /B 1 ++ ++where dlltool /q && goto skipdlltoolsearch ++set _DLLTOOL_PATH= ++where /R "%D%..\..\externals" dlltool > "%TEMP%\dlltool.loc" 2> nul && set /P _DLLTOOL_PATH= < "%TEMP%\dlltool.loc" & del "%TEMP%\dlltool.loc" ++if not exist "%_DLLTOOL_PATH%" echo Cannot find binutils on PATH or in external && exit /B 1 ++for %%f in (%_DLLTOOL_PATH%) do set PATH=%PATH%;%%~dpf ++set _DLLTOOL_PATH= ++:skipdlltoolsearch ++ ++if defined BUILDX86 ( ++ call :build x86 ++ if errorlevel 1 exit /B ++) ++ ++if defined BUILDX64 ( ++ call :build x64 ++ if errorlevel 1 exit /B ++) ++ ++if defined TESTTARGETDIR ( ++ call "%D%testrelease.bat" -t "%TESTTARGETDIR%" ++) ++ ++exit /B 0 ++ ++:build ++@setlocal ++@echo off ++ ++if "%1" EQU "x86" ( ++ call "%PCBUILD%env.bat" x86 ++ set BUILD=%PCBUILD%win32\ ++ set BUILD_PLAT=Win32 ++ set OUTDIR_PLAT=win32 ++ set OBJDIR_PLAT=x86 ++ set RELEASE_URI=%RELEASE_URI_X86% ++) ELSE ( ++ call "%PCBUILD%env.bat" x86_amd64 ++ set BUILD=%PCBUILD%amd64\ ++ set BUILD_PLAT=x64 ++ set OUTDIR_PLAT=amd64 ++ set OBJDIR_PLAT=x64 ++ set RELEASE_URI=%RELEASE_URI_X64% ++) ++ ++if exist "%BUILD%en-us" ( ++ echo Deleting %BUILD%en-us ++ rmdir /q/s "%BUILD%en-us" ++ if errorlevel 1 exit /B ++) ++ ++if exist "%D%obj\Release_%OBJDIR_PLAT%" ( ++ echo Deleting "%D%obj\Release_%OBJDIR_PLAT%" ++ rmdir /q/s "%D%obj\Release_%OBJDIR_PLAT%" ++ if errorlevel 1 exit /B ++) ++ ++if not "%CERTNAME%" EQU "" ( ++ set CERTOPTS="/p:SigningCertificate=%CERTNAME%" ++) else ( ++ set CERTOPTS= ++) ++ ++if not "%SKIPBUILD%" EQU "1" ( ++ call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -d -t %TARGET% %CERTOPTS% ++ if errorlevel 1 exit /B ++ call "%PCBUILD%build.bat" -p %BUILD_PLAT% -t %TARGET% %CERTOPTS% ++ if errorlevel 1 exit /B ++ @rem build.bat turns echo back on, so we disable it again ++ @echo off ++) ++ ++"%BUILD%python.exe" "%D%get_wix.py" ++ ++set BUILDOPTS=/p:Platform=%1 /p:BuildForRelease=true /p:DownloadUrl=%DOWNLOAD_URL% /p:DownloadUrlBase=%DOWNLOAD_URL_BASE% /p:ReleaseUri=%RELEASE_URI% ++msbuild "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true ++if errorlevel 1 exit /B ++msbuild "%D%bundle\releaseweb.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=false ++if errorlevel 1 exit /B ++ ++if not "%OUTDIR%" EQU "" ( ++ mkdir "%OUTDIR%\%OUTDIR_PLAT%" ++ copy /Y "%BUILD%en-us\*.cab" "%OUTDIR%\%OUTDIR_PLAT%" ++ copy /Y "%BUILD%en-us\*.exe" "%OUTDIR%\%OUTDIR_PLAT%" ++ copy /Y "%BUILD%en-us\*.msi" "%OUTDIR%\%OUTDIR_PLAT%" ++ copy /Y "%BUILD%en-us\*.msu" "%OUTDIR%\%OUTDIR_PLAT%" ++) ++ ++exit /B 0 ++ ++:Help ++echo buildrelease.bat [--out DIR] [-x86] [-x64] [--certificate CERTNAME] [--build] [--skip-build] ++echo [--skip-doc] [--download DOWNLOAD URL] [--test TARGETDIR] [-h] ++echo. ++echo --out (-o) Specify an additional output directory for installers ++echo -x86 Build x86 installers ++echo -x64 Build x64 installers ++echo --build (-b) Incrementally build Python rather than rebuilding ++echo --skip-build (-B) Do not build Python (just do the installers) ++echo --skip-doc (-D) Do not build documentation ++echo --download Specify the full download URL for MSIs (should include {2}) ++echo --test Specify the test directory to run the installer tests ++echo -h Display this help information ++echo. ++echo If no architecture is specified, all architectures will be built. ++echo If --test is not specified, the installer tests are not run. +echo. diff --cc Tools/msi/testrelease.bat index aee5e2f36e,0000000000..b93306a1ee mode 100644,000000..100644 --- a/Tools/msi/testrelease.bat +++ b/Tools/msi/testrelease.bat @@@ -1,114 -1,0 +1,114 @@@ - @setlocal - @echo off - - set D=%~dp0 - set PCBUILD=%D%..\..\PCBuild\ - - set TARGETDIR=%TEMP% - set TESTX86= - set TESTX64= - set TESTALLUSER= - set TESTPERUSER= - - :CheckOpts - if "%1" EQU "-h" goto Help - if "%1" EQU "-x86" (set TESTX86=1) && shift && goto CheckOpts - if "%1" EQU "-x64" (set TESTX64=1) && shift && goto CheckOpts - if "%1" EQU "-t" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--target" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "-a" (set TESTALLUSER=1) && shift && goto CheckOpts - if "%1" EQU "--alluser" (set TESTALLUSER=1) && shift && goto CheckOpts - if "%1" EQU "-p" (set TESTPERUSER=1) && shift && goto CheckOpts - if "%1" EQU "--peruser" (set TESTPERUSER=1) && shift && goto CheckOpts - - if not defined TESTX86 if not defined TESTX64 (set TESTX86=1) && (set TESTX64=1) - if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (set TESTPERUSER=1) - - - if defined TESTX86 ( - for %%f in ("%PCBUILD%win32\en-us\*.exe") do ( - if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" - if errorlevel 1 exit /B - if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" - if errorlevel 1 exit /B - ) - ) - - if defined TESTX64 ( - for %%f in ("%PCBUILD%amd64\en-us\*.exe") do ( - if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" - if errorlevel 1 exit /B - if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" - if errorlevel 1 exit /B - ) - ) - - exit /B 0 - - :test - @setlocal - @echo on - - @if not exist "%~1" exit /B 1 - - @set EXITCODE=0 - @echo Installing %1 into %2 - "%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3 - - @if not errorlevel 1 ( - @echo Printing version - "%~2\Python\python.exe" -c "import sys; print(sys.version)" > "%~2\version.txt" 2>&1 - ) - - @if not errorlevel 1 ( - @echo Capturing Start Menu - @dir /s/b "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" > "%~2\startmenu.txt" 2>&1 - @dir /s/b "%APPDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" >> "%~2\startmenu.txt" 2>&1 - - @echo Capturing registry - @for /F "usebackq" %%f in (`reg query HKCR /s /f python /k`) do @( - echo %%f >> "%~2\hkcr.txt" - reg query "%%f" /s >> "%~2\hkcr.txt" 2>&1 - ) - @reg query HKCU\Software\Python /s > "%~2\hkcu.txt" 2>&1 - @reg query HKLM\Software\Python /reg:32 /s > "%~2\hklm.txt" 2>&1 - @reg query HKLM\Software\Python /reg:64 /s >> "%~2\hklm.txt" 2>&1 - cmd /k exit 0 - ) - - @if not errorlevel 1 ( - @echo Installing package - "%~2\Python\python.exe" -m pip install "azure<0.10" > "%~2\pip.txt" 2>&1 - @if not errorlevel 1 ( - "%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1 - ) - ) - @if not errorlevel 1 ( - @echo Testing Tcl/tk - @set TCL_LIBRARY=%~2\Python\tcl\tcl8.6 - "%~2\Python\python.exe" -m test -uall -v test_ttk_guionly test_tk test_idle > "%~2\tcltk.txt" 2>&1 - @set TCL_LIBRARY= - ) - - @set EXITCODE=%ERRORLEVEL% - - @echo Result was %EXITCODE% - @echo Removing %1 - "%~1" /passive /uninstall /log "%~2\uninstall\log.txt" - - @echo off - exit /B %EXITCODE% - - :Help - echo testrelease.bat [--target TARGET] [-x86] [-x64] [--alluser] [--peruser] [-h] - echo. - echo --target (-t) Specify the target directory for installs and logs - echo -x86 Run tests for x86 installers - echo -x64 Run tests for x64 installers - echo --alluser (-a) Run tests for all-user installs (requires Administrator) - echo --peruser (-p) Run tests for per-user installs - echo -h Display this help information - echo. - echo If no test architecture is specified, all architectures will be tested. - echo If no install type is selected, all install types will be tested. - echo. ++@setlocal ++@echo off ++ ++set D=%~dp0 ++set PCBUILD=%D%..\..\PCBuild\ ++ ++set TARGETDIR=%TEMP% ++set TESTX86= ++set TESTX64= ++set TESTALLUSER= ++set TESTPERUSER= ++ ++:CheckOpts ++if "%1" EQU "-h" goto Help ++if "%1" EQU "-x86" (set TESTX86=1) && shift && goto CheckOpts ++if "%1" EQU "-x64" (set TESTX64=1) && shift && goto CheckOpts ++if "%1" EQU "-t" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--target" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "-a" (set TESTALLUSER=1) && shift && goto CheckOpts ++if "%1" EQU "--alluser" (set TESTALLUSER=1) && shift && goto CheckOpts ++if "%1" EQU "-p" (set TESTPERUSER=1) && shift && goto CheckOpts ++if "%1" EQU "--peruser" (set TESTPERUSER=1) && shift && goto CheckOpts ++ ++if not defined TESTX86 if not defined TESTX64 (set TESTX86=1) && (set TESTX64=1) ++if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (set TESTPERUSER=1) ++ ++ ++if defined TESTX86 ( ++ for %%f in ("%PCBUILD%win32\en-us\*.exe") do ( ++ if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" ++ if errorlevel 1 exit /B ++ if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" ++ if errorlevel 1 exit /B ++ ) ++) ++ ++if defined TESTX64 ( ++ for %%f in ("%PCBUILD%amd64\en-us\*.exe") do ( ++ if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" ++ if errorlevel 1 exit /B ++ if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" ++ if errorlevel 1 exit /B ++ ) ++) ++ ++exit /B 0 ++ ++:test ++@setlocal ++@echo on ++ ++@if not exist "%~1" exit /B 1 ++ ++@set EXITCODE=0 ++@echo Installing %1 into %2 ++"%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3 ++ ++@if not errorlevel 1 ( ++ @echo Printing version ++ "%~2\Python\python.exe" -c "import sys; print(sys.version)" > "%~2\version.txt" 2>&1 ++) ++ ++@if not errorlevel 1 ( ++ @echo Capturing Start Menu ++ @dir /s/b "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" > "%~2\startmenu.txt" 2>&1 ++ @dir /s/b "%APPDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" >> "%~2\startmenu.txt" 2>&1 ++ ++ @echo Capturing registry ++ @for /F "usebackq" %%f in (`reg query HKCR /s /f python /k`) do @( ++ echo %%f >> "%~2\hkcr.txt" ++ reg query "%%f" /s >> "%~2\hkcr.txt" 2>&1 ++ ) ++ @reg query HKCU\Software\Python /s > "%~2\hkcu.txt" 2>&1 ++ @reg query HKLM\Software\Python /reg:32 /s > "%~2\hklm.txt" 2>&1 ++ @reg query HKLM\Software\Python /reg:64 /s >> "%~2\hklm.txt" 2>&1 ++ cmd /k exit 0 ++) ++ ++@if not errorlevel 1 ( ++ @echo Installing package ++ "%~2\Python\python.exe" -m pip install "azure<0.10" > "%~2\pip.txt" 2>&1 ++ @if not errorlevel 1 ( ++ "%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1 ++ ) ++) ++@if not errorlevel 1 ( ++ @echo Testing Tcl/tk ++ @set TCL_LIBRARY=%~2\Python\tcl\tcl8.6 ++ "%~2\Python\python.exe" -m test -uall -v test_ttk_guionly test_tk test_idle > "%~2\tcltk.txt" 2>&1 ++ @set TCL_LIBRARY= ++) ++ ++@set EXITCODE=%ERRORLEVEL% ++ ++@echo Result was %EXITCODE% ++@echo Removing %1 ++"%~1" /passive /uninstall /log "%~2\uninstall\log.txt" ++ ++@echo off ++exit /B %EXITCODE% ++ ++:Help ++echo testrelease.bat [--target TARGET] [-x86] [-x64] [--alluser] [--peruser] [-h] ++echo. ++echo --target (-t) Specify the target directory for installs and logs ++echo -x86 Run tests for x86 installers ++echo -x64 Run tests for x64 installers ++echo --alluser (-a) Run tests for all-user installs (requires Administrator) ++echo --peruser (-p) Run tests for per-user installs ++echo -h Display this help information ++echo. ++echo If no test architecture is specified, all architectures will be tested. ++echo If no install type is selected, all install types will be tested. ++echo. diff --cc Tools/msi/uploadrelease.bat index 37091964cc,0000000000..796763730a mode 100644,000000..100644 --- a/Tools/msi/uploadrelease.bat +++ b/Tools/msi/uploadrelease.bat @@@ -1,56 -1,0 +1,56 @@@ - @setlocal - @echo off - - set D=%~dp0 - set PCBUILD=%D%..\..\PCBuild\ - - set HOST= - set USER= - set TARGET= - set DRYRUN=false - - :CheckOpts - if "%1" EQU "-h" goto Help - if "%1" EQU "-o" (set HOST=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--host" (set HOST=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "-u" (set USER=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--user" (set USER=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "-t" (set TARGET=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--target" (set TARGET=%~2) && shift && shift && goto CheckOpts - if "%1" EQU "--dry-run" (set DRYRUN=true) && shift && goto CheckOpts - - if not defined PLINK where plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" - if not defined PLINK where /R "%ProgramFiles(x86)%\PuTTY" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" - if not defined PLINK where /R "%ProgramFiles(x86)%" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" - if not defined PLINK echo Cannot locate plink.exe & exit /B 1 - echo Found plink.exe at %PLINK% - - if not defined PSCP where pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" - if not defined PSCP where /R "%ProgramFiles(x86)%\PuTTY" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" - if not defined PSCP where /R "%ProgramFiles(x86)%" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" - if not defined PSCP echo Cannot locate pscp.exe & exit /B 1 - echo Found pscp.exe at %PSCP% - - if not defined GPG where gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" - if not defined GPG where /R "%PCBUILD%..\externals" gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" - if not defined GPG echo Cannot locate gpg2.exe. Signatures will not be uploaded & pause - echo Found gpg2.exe at %GPG% - - call "%PCBUILD%env.bat" > nul 2> nul - pushd "%D%" - msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x86 - msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x64 /p:IncludeDoc=false - msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x86 - msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x64 /p:IncludeDoc=false - popd - exit /B 0 - - :Help - echo uploadrelease.bat --host HOST --user USERNAME [--target TARGET] [--dry-run] [-h] - echo. - echo --host (-o) Specify the upload host (required) - echo --user (-u) Specify the user on the host (required) - echo --target (-t) Specify the target directory on the host - echo --dry-run Display commands and filenames without executing them - echo -h Display this help information - echo. ++@setlocal ++@echo off ++ ++set D=%~dp0 ++set PCBUILD=%D%..\..\PCBuild\ ++ ++set HOST= ++set USER= ++set TARGET= ++set DRYRUN=false ++ ++:CheckOpts ++if "%1" EQU "-h" goto Help ++if "%1" EQU "-o" (set HOST=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--host" (set HOST=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "-u" (set USER=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--user" (set USER=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "-t" (set TARGET=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--target" (set TARGET=%~2) && shift && shift && goto CheckOpts ++if "%1" EQU "--dry-run" (set DRYRUN=true) && shift && goto CheckOpts ++ ++if not defined PLINK where plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" ++if not defined PLINK where /R "%ProgramFiles(x86)%\PuTTY" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" ++if not defined PLINK where /R "%ProgramFiles(x86)%" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" ++if not defined PLINK echo Cannot locate plink.exe & exit /B 1 ++echo Found plink.exe at %PLINK% ++ ++if not defined PSCP where pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" ++if not defined PSCP where /R "%ProgramFiles(x86)%\PuTTY" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" ++if not defined PSCP where /R "%ProgramFiles(x86)%" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" ++if not defined PSCP echo Cannot locate pscp.exe & exit /B 1 ++echo Found pscp.exe at %PSCP% ++ ++if not defined GPG where gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" ++if not defined GPG where /R "%PCBUILD%..\externals" gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" ++if not defined GPG echo Cannot locate gpg2.exe. Signatures will not be uploaded & pause ++echo Found gpg2.exe at %GPG% ++ ++call "%PCBUILD%env.bat" > nul 2> nul ++pushd "%D%" ++msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x86 ++msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x64 /p:IncludeDoc=false ++msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x86 ++msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x64 /p:IncludeDoc=false ++popd ++exit /B 0 ++ ++:Help ++echo uploadrelease.bat --host HOST --user USERNAME [--target TARGET] [--dry-run] [-h] ++echo. ++echo --host (-o) Specify the upload host (required) ++echo --user (-u) Specify the user on the host (required) ++echo --target (-t) Specify the target directory on the host ++echo --dry-run Display commands and filenames without executing them ++echo -h Display this help information ++echo.