This commit is contained in:
Larry Hastings 2015-02-08 14:07:35 -08:00
commit df4fb13cdc
7 changed files with 158 additions and 25 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

@ -1143,6 +1143,7 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \
test/audiodata \
test/capath test/data \
test/cjkencodings test/decimaltestdata test/xmltestdata \
test/eintrdata \
test/imghdrdata \
test/subprocessdata test/sndhdrdata test/support \
test/tracedmodules test/encoded_modules \

View File

@ -22,17 +22,25 @@ 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 '-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)
@ -40,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
@ -66,6 +74,10 @@ if defined BUILDX64 (
if errorlevel 1 exit /B
)
if defined TESTTARGETDIR (
call "%D%testrelease.bat" -t "%TESTTARGETDIR%"
)
exit /B 0
:build
@ -88,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%"
@ -132,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(`/`))/$(PythonVersion)/$(ArchName)/{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

@ -22,7 +22,7 @@ if not EXTERNALS_DIR:
print("Cannot find project root")
sys.exit(1)
WIX_BINARIES_ZIP = 'http://wixtoolset.org/downloads/v3.10.1124.0/wix310-binaries.zip'
WIX_BINARIES_ZIP = 'http://wixtoolset.org/downloads/v3.10.0.1403/wix310-binaries.zip'
TARGET_BIN_ZIP = EXTERNALS_DIR / "wix.zip"
TARGET_BIN_DIR = EXTERNALS_DIR / "wix"

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>

100
Tools/msi/testrelease.bat Normal file
View File

@ -0,0 +1,100 @@
@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 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
)
)
@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%
@for /d %%f in ("%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Python*") do @dir "%%~ff\*.lnk" /s/b > "%~2\startmenu.txt" 2>&1
@for /d %%f in ("%APPDATA%\Microsoft\Windows\Start Menu\Programs\Python*") do @dir "%%~ff\*.lnk" /s/b >> "%~2\startmenu.txt" 2>&1
@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.