Improve Windows release scripts

This commit is contained in:
Steve Dower 2015-02-07 22:20:48 -08:00
parent 914db0f11c
commit 312cef086b
5 changed files with 81 additions and 35 deletions

View File

@ -8,13 +8,17 @@ set this=%~n0
if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build
if "%PYTHON%" EQU "" set PYTHON=py
if "%HTMLHELP%" EQU "" (
where hhc 2>nul >"%TEMP%\hhc.loc"
if errorlevel 1 dir "..\externals\hhc.exe" /s/b > "%TEMP%\hhc.loc"
if errorlevel 1 echo Cannot find HHC on PATH or in externals & exit /B 1
set /P HTMLHELP= < "%TEMP%\hhc.loc"
del "%TEMP%\hhc.loc"
)
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

View File

@ -26,15 +26,21 @@ 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 '-x86' (set BUILDX86=1) && shift && goto CheckOpts
if '%1' EQU '-x64' (set BUILDX64=1) && 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)
@ -42,21 +48,21 @@ if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX6
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 >nul 2>nul
if errorlevel 1 echo Cannot find hg on PATH & exit /B 1
where dlltool 2>nul >"%TEMP%\dlltool.loc"
if errorlevel 1 dir "%D%..\..\externals\dlltool.exe" /s/b > "%TEMP%\dlltool.loc"
if errorlevel 1 echo Cannot find binutils on PATH or in externals & exit /B 1
set /P DLLTOOL= < "%TEMP%\dlltool.loc"
set PATH=%PATH%;%DLLTOOL:~,-12%
set DLLTOOL=
del "%TEMP%\dlltool.loc"
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
@ -94,14 +100,12 @@ if "%1" EQU "x86" (
set RELEASE_URI=%RELEASE_URI_X64%
)
echo on
if exist "%BUILD%en-us" (
echo Deleting %BUILD%en-us
rmdir /q/s "%BUILD%en-us"
if errorlevel 1 exit /B
)
echo on
if exist "%D%obj\Release_%OBJDIR_PLAT%" (
echo Deleting "%D%obj\Release_%OBJDIR_PLAT%"
rmdir /q/s "%D%obj\Release_%OBJDIR_PLAT%"
@ -138,3 +142,22 @@ if not "%OUTDIR%" EQU "" (
copy /Y "%BUILD%en-us\*.msi" "%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.

View File

@ -14,8 +14,8 @@
<OutputPath>$(OutputPath)en-us\</OutputPath>
<OutDir>$(OutputPath)</OutDir>
<DownloadUrl Condition="'$(DownloadUrl)' == '' and '$(DownloadUrlBase)' != ''">$(DownloadUrlBase.TrimEnd(`/`))/$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)/$(ArchName)$(ReleaseLevelName)/{2}</DownloadUrl>
<DefineConstants Condition="'$(DownloadUrl)' != ''">$(DefineConstants);DownloadUrl=$(DownloadUrl)</DefineConstants>
<DownloadUrl Condition="'$(DownloadUrl)' == '' and '$(DownloadUrlBase)' != ''">$(DownloadUrlBase.TrimEnd(`/`))/$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)/$(ArchName)$(ReleaseLevelName)/</DownloadUrl>
<DefineConstants Condition="'$(DownloadUrl)' != ''">$(DefineConstants);DownloadUrl=$(DownloadUrl){2}</DefineConstants>
<DefineConstants Condition="'$(DownloadUrl)' == ''">$(DefineConstants);DownloadUrl={2}</DefineConstants>
</PropertyGroup>

View File

@ -69,7 +69,6 @@
MajorVersionNumber=$(MajorVersionNumber);
MinorVersionNumber=$(MinorVersionNumber);
UpgradeMinimumVersion=$(MajorVersionNumber).$(MinorVersionNumber).0.0;
UpgradeMaximumVersion=$(MajorVersionNumber).$(MinorVersionNumber).150.0;
NextMajorVersionNumber=$(MajorVersionNumber).$([msbuild]::Add($(MinorVersionNumber), 1)).0.0;
PyDebugExt=$(PyDebugExt);
</DefineConstants>

View File

@ -11,11 +11,15 @@ set TESTALLUSER=
set TESTPERUSER=
:CheckOpts
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 '-a' (set TESTALLUSER=1) && shift && goto CheckOpts
if '%1' EQU '-p' (set TESTPERUSER=1) && shift && goto 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)
@ -23,16 +27,18 @@ if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (se
if defined TESTX86 (
for %%f in ("%PCBUILD%win32\en-us\*.exe") do (
if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" InstallAllUsers=1
if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" InstallAllUsers=0
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
if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" InstallAllUsers=0
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
)
)
@ -47,7 +53,7 @@ exit /B 0
@set EXITCODE=0
@echo Installing %1 into %2
"%~1" /passive /log "%~2\install\log.txt" %~3 TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 CompileAll=1
"%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3
@if not errorlevel 1 (
@echo Printing version
@ -57,7 +63,7 @@ exit /B 0
@echo Installing package
"%~2\Python\python.exe" -m pip install azure > "%~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
"%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1
)
)
@if not errorlevel 1 (
@ -78,3 +84,17 @@ exit /B 0
@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.