]> granicus.if.org Git - python/commitdiff
Closes #17202: Merge with 3.4
authorZachary Ware <zachary.ware@gmail.com>
Mon, 13 Apr 2015 17:11:40 +0000 (12:11 -0500)
committerZachary Ware <zachary.ware@gmail.com>
Mon, 13 Apr 2015 17:11:40 +0000 (12:11 -0500)
23 files changed:
1  2 
Doc/make.bat
PC/bdist_wininst/build.bat
PCbuild/build.bat
PCbuild/build_pgo.bat
PCbuild/clean.bat
PCbuild/env.bat
PCbuild/get_externals.bat
PCbuild/idle.bat
PCbuild/prepare_ssl.bat
PCbuild/rt.bat
Tools/buildbot/build-amd64.bat
Tools/buildbot/build.bat
Tools/buildbot/buildmsi.bat
Tools/buildbot/clean-amd64.bat
Tools/buildbot/clean.bat
Tools/buildbot/external-amd64.bat
Tools/buildbot/external.bat
Tools/buildbot/test-amd64.bat
Tools/buildbot/test.bat
Tools/msi/build.bat
Tools/msi/buildrelease.bat
Tools/msi/testrelease.bat
Tools/msi/uploadrelease.bat

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