Kaydet (Commit) b5c93e9c authored tarafından Georg Brandl's avatar Georg Brandl

Add .hgeol file and fix newlines in the 2.6 branch.

üst 6feb9003
[patterns]
# Non human-editable files are binary
**.dsp = BIN
**.dsw = BIN
**.mk = BIN
**.sln = BIN
**.vcproj = BIN
**.vsprops = BIN
**.aif = BIN
**.au = BIN
**.bmp = BIN
**.db = BIN
**.exe = BIN
**.icns = BIN
**.gif = BIN
**.ico = BIN
**.info = BIN
**.jpg = BIN
**.pck = BIN
**.png = BIN
**.psd = BIN
**.tar = BIN
**.xar = BIN
**.zip = BIN
Lib/email/test/data/msg_26.txt = BIN
Lib/test/sndhdrdata/sndhdr.* = BIN
Lib/test/decimaltestdata/*.decTest = BIN
# All other files (which presumably are human-editable) are "native".
# This must be the last rule!
** = native
[repository]
native = LF
@@echo off @@echo off
setlocal setlocal
set SVNROOT=http://svn.python.org/projects set SVNROOT=http://svn.python.org/projects
if "%PYTHON%" EQU "" set PYTHON=..\pcbuild\python if "%PYTHON%" EQU "" set PYTHON=..\pcbuild\python
if "%HTMLHELP%" EQU "" set HTMLHELP=%ProgramFiles%\HTML Help Workshop\hhc.exe if "%HTMLHELP%" EQU "" set HTMLHELP=%ProgramFiles%\HTML Help Workshop\hhc.exe
if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/sphinxext/patchlevel.py`) do set DISTVERSION=%%v if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/sphinxext/patchlevel.py`) do set DISTVERSION=%%v
if "%1" EQU "" goto help if "%1" EQU "" goto help
if "%1" EQU "html" goto build if "%1" EQU "html" goto build
if "%1" EQU "htmlhelp" goto build if "%1" EQU "htmlhelp" goto build
if "%1" EQU "latex" goto build if "%1" EQU "latex" goto build
if "%1" EQU "text" goto build if "%1" EQU "text" goto build
if "%1" EQU "suspicious" goto build if "%1" EQU "suspicious" goto build
if "%1" EQU "linkcheck" goto build if "%1" EQU "linkcheck" goto build
if "%1" EQU "changes" goto build if "%1" EQU "changes" goto build
if "%1" EQU "checkout" goto checkout if "%1" EQU "checkout" goto checkout
if "%1" EQU "update" goto update if "%1" EQU "update" goto update
:help :help
set this=%~n0 set this=%~n0
echo HELP echo HELP
echo. echo.
echo %this% checkout echo %this% checkout
echo %this% update echo %this% update
echo %this% html echo %this% html
echo %this% htmlhelp echo %this% htmlhelp
echo %this% latex echo %this% latex
echo %this% text echo %this% text
echo %this% suspicious echo %this% suspicious
echo %this% linkcheck echo %this% linkcheck
echo %this% changes echo %this% changes
echo. echo.
goto end goto end
:checkout :checkout
svn co %SVNROOT%/external/Sphinx-0.6.5/sphinx tools/sphinx svn co %SVNROOT%/external/Sphinx-0.6.5/sphinx tools/sphinx
svn co %SVNROOT%/external/docutils-0.6/docutils tools/docutils svn co %SVNROOT%/external/docutils-0.6/docutils tools/docutils
svn co %SVNROOT%/external/Jinja-2.3.1/jinja2 tools/jinja2 svn co %SVNROOT%/external/Jinja-2.3.1/jinja2 tools/jinja2
svn co %SVNROOT%/external/Pygments-1.3.1/pygments tools/pygments svn co %SVNROOT%/external/Pygments-1.3.1/pygments tools/pygments
goto end goto end
:update :update
svn update tools/sphinx svn update tools/sphinx
svn update tools/docutils svn update tools/docutils
svn update tools/jinja2 svn update tools/jinja2
svn update tools/pygments svn update tools/pygments
goto end goto end
:build :build
if not exist build mkdir build if not exist build mkdir build
if not exist build\%1 mkdir build\%1 if not exist build\%1 mkdir build\%1
if not exist build\doctrees mkdir build\doctrees if not exist build\doctrees mkdir build\doctrees
cmd /C %PYTHON% tools\sphinx-build.py -b%1 -dbuild\doctrees . build\%* cmd /C %PYTHON% tools\sphinx-build.py -b%1 -dbuild\doctrees . build\%*
if "%1" EQU "htmlhelp" "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp if "%1" EQU "htmlhelp" "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp
goto end goto end
:end :end
if "%1" == "ReleaseAMD64" call "%MSSdk%\SetEnv" /XP64 /RETAIL if "%1" == "ReleaseAMD64" call "%MSSdk%\SetEnv" /XP64 /RETAIL
@echo off @echo off
if not defined HOST_PYTHON ( if not defined HOST_PYTHON (
if %1 EQU Debug ( if %1 EQU Debug (
set HOST_PYTHON=python_d.exe set HOST_PYTHON=python_d.exe
) ELSE ( ) ELSE (
set HOST_PYTHON=python.exe set HOST_PYTHON=python.exe
) )
) )
%HOST_PYTHON% build_ssl.py %1 %2 %HOST_PYTHON% build_ssl.py %1 %2
@echo off @echo off
rem A batch program to build or rebuild a particular configuration. rem A batch program to build or rebuild a particular configuration.
rem just for convenience. rem just for convenience.
setlocal setlocal
set platf=Win32 set platf=Win32
set conf=Release set conf=Release
set build=/build set build=/build
:CheckOpts :CheckOpts
if "%1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts if "%1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts
if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts
if "%1"=="-r" (set build=/rebuild) & shift & goto CheckOpts if "%1"=="-r" (set build=/rebuild) & shift & goto CheckOpts
set cmd=devenv pcbuild.sln %build% "%conf%|%platf%" set cmd=devenv pcbuild.sln %build% "%conf%|%platf%"
echo %cmd% echo %cmd%
%cmd% %cmd%
@%comspec% /k env.bat %* @%comspec% /k env.bat %*
@echo off @echo off
rem A batch program to build PGO (Profile guided optimization) by first rem A batch program to build PGO (Profile guided optimization) by first
rem building instrumented binaries, then running the testsuite, and rem building instrumented binaries, then running the testsuite, and
rem finally building the optimized code. rem finally building the optimized code.
rem Note, after the first instrumented run, one can just keep on rem Note, after the first instrumented run, one can just keep on
rem building the PGUpdate configuration while developing. rem building the PGUpdate configuration while developing.
setlocal setlocal
set platf=Win32 set platf=Win32
rem use the performance testsuite. This is quick and simple rem use the performance testsuite. This is quick and simple
set job1=..\..\tools\pybench\pybench.py -n 1 -C 1 --with-gc set job1=..\..\tools\pybench\pybench.py -n 1 -C 1 --with-gc
set path1=..\..\tools\pybench set path1=..\..\tools\pybench
rem or the whole testsuite for more thorough testing rem or the whole testsuite for more thorough testing
set job2=..\..\lib\test\regrtest.py set job2=..\..\lib\test\regrtest.py
set path2=..\..\lib set path2=..\..\lib
set job=%job1% set job=%job1%
set clrpath=%path1% set clrpath=%path1%
:CheckOpts :CheckOpts
if "%1"=="-p" (set platf=%2) & shift & shift & goto 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"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts
set PGI=%platf%-pgi set PGI=%platf%-pgi
set PGO=%platf%-pgo set PGO=%platf%-pgo
@echo on @echo on
rem build the instrumented version rem build the instrumented version
call build -p %platf% -c PGInstrument call build -p %platf% -c PGInstrument
rem remove .pyc files, .pgc files and execute the job rem remove .pyc files, .pgc files and execute the job
%PGI%\python.exe rmpyc.py %clrpath% %PGI%\python.exe rmpyc.py %clrpath%
del %PGI%\*.pgc del %PGI%\*.pgc
%PGI%\python.exe %job% %PGI%\python.exe %job%
rem finally build the optimized version rem finally build the optimized version
if exist %PGO% del /s /q %PGO% if exist %PGO% del /s /q %PGO%
call build -p %platf% -c PGUpdate call build -p %platf% -c PGUpdate
@echo off @echo off
if not defined HOST_PYTHON ( if not defined HOST_PYTHON (
if %1 EQU Debug ( if %1 EQU Debug (
set HOST_PYTHON=python_d.exe set HOST_PYTHON=python_d.exe
if not exist python26_d.dll exit 1 if not exist python26_d.dll exit 1
) ELSE ( ) ELSE (
set HOST_PYTHON=python.exe set HOST_PYTHON=python.exe
if not exist python26.dll exit 1 if not exist python26.dll exit 1
) )
) )
%HOST_PYTHON% build_ssl.py %1 %2 %3 %HOST_PYTHON% build_ssl.py %1 %2 %3
@echo off @echo off
set VS8=%ProgramFiles%\Microsoft Visual Studio 8 set VS8=%ProgramFiles%\Microsoft Visual Studio 8
echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64 echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64
echo. echo.
call "%VS8%\VC\vcvarsall.bat" %1 call "%VS8%\VC\vcvarsall.bat" %1
@echo off @echo off
rem start idle rem start idle
rem Usage: idle [-d] rem Usage: idle [-d]
rem -d Run Debug build (python_d.exe). Else release build. rem -d Run Debug build (python_d.exe). Else release build.
setlocal setlocal
set exe=python set exe=python
PATH %PATH%;..\..\..\tcltk\bin PATH %PATH%;..\..\..\tcltk\bin
if "%1"=="-d" (set exe=python_d) & shift if "%1"=="-d" (set exe=python_d) & shift
set cmd=%exe% ../../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 set cmd=%exe% ../../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9
echo on echo on
%cmd% %cmd%
@echo off @echo off
rem Run Tests. Run the regression test suite. rem Run Tests. Run the regression test suite.
rem Usage: rt [-d] [-O] [-q] regrtest_args rem Usage: rt [-d] [-O] [-q] regrtest_args
rem -d Run Debug build (python_d.exe). Else release build. 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 -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 -q "quick" -- normally the tests are run twice, the first time
rem after deleting all the .py[co] files reachable from Lib/. 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 -q runs the tests just once, and without deleting .py[co] files.
rem All leading instances of these switches are shifted off, and rem All leading instances of these switches are shifted off, and
rem whatever remains is passed to regrtest.py. For example, rem whatever remains is passed to regrtest.py. For example,
rem rt -O -d -x test_thread rem rt -O -d -x test_thread
rem runs rem runs
rem python_d -O ../lib/test/regrtest.py -x test_thread rem python_d -O ../lib/test/regrtest.py -x test_thread
rem twice, and rem twice, and
rem rt -q -g test_binascii rem rt -q -g test_binascii
rem runs rem runs
rem python_d ../lib/test/regrtest.py -g test_binascii rem python_d ../lib/test/regrtest.py -g test_binascii
rem to generate the expected-output file for binascii quickly. rem to generate the expected-output file for binascii quickly.
rem rem
rem Confusing: if you want to pass a comma-separated list, like rem Confusing: if you want to pass a comma-separated list, like
rem -u network,largefile rem -u network,largefile
rem then you have to quote it on the rt line, like rem then you have to quote it on the rt line, like
rem rt -u "network,largefile" rem rt -u "network,largefile"
setlocal setlocal
set exe=python set exe=python
set qmode= set qmode=
set dashO= set dashO=
PATH %PATH%;..\..\..\tcltk\bin PATH %PATH%;..\..\..\tcltk\bin
:CheckOpts :CheckOpts
if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts
if "%1"=="-d" (set exe=python_d) & shift & goto CheckOpts if "%1"=="-d" (set exe=python_d) & shift & goto CheckOpts
set cmd=%exe% %dashO% -E -tt ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9 set cmd=%exe% %dashO% -E -tt ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9
if defined qmode goto Qmode if defined qmode goto Qmode
echo Deleting .pyc/.pyo files ... echo Deleting .pyc/.pyo files ...
%exe% rmpyc.py %exe% rmpyc.py
echo on echo on
%cmd% %cmd%
@echo off @echo off
echo About to run again without deleting .pyc/.pyo first: echo About to run again without deleting .pyc/.pyo first:
pause pause
:Qmode :Qmode
echo on echo on
%cmd% %cmd%
@rem Used by the buildbot "compile" step. @rem Used by the buildbot "compile" step.
cmd /c Tools\buildbot\external-amd64.bat cmd /c Tools\buildbot\external-amd64.bat
call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
cmd /c Tools\buildbot\clean-amd64.bat cmd /c Tools\buildbot\clean-amd64.bat
vcbuild /useenv PCbuild\kill_python.vcproj "Debug|x64" && PCbuild\amd64\kill_python_d.exe vcbuild /useenv PCbuild\kill_python.vcproj "Debug|x64" && PCbuild\amd64\kill_python_d.exe
vcbuild PCbuild\pcbuild.sln "Debug|x64" vcbuild PCbuild\pcbuild.sln "Debug|x64"
@rem Used by the buildbot "compile" step. @rem Used by the buildbot "compile" step.
cmd /c Tools\buildbot\external.bat cmd /c Tools\buildbot\external.bat
call "%VS90COMNTOOLS%vsvars32.bat" call "%VS90COMNTOOLS%vsvars32.bat"
cmd /c Tools\buildbot\clean.bat cmd /c Tools\buildbot\clean.bat
vcbuild /useenv PCbuild\kill_python.vcproj "Debug|Win32" && PCbuild\kill_python_d.exe vcbuild /useenv PCbuild\kill_python.vcproj "Debug|Win32" && PCbuild\kill_python_d.exe
vcbuild /useenv PCbuild\pcbuild.sln "Debug|Win32" vcbuild /useenv PCbuild\pcbuild.sln "Debug|Win32"
@rem Used by the buildbot "buildmsi" step. @rem Used by the buildbot "buildmsi" step.
cmd /c Tools\buildbot\external.bat cmd /c Tools\buildbot\external.bat
@rem build release versions of things @rem build release versions of things
call "%VS90COMNTOOLS%vsvars32.bat" call "%VS90COMNTOOLS%vsvars32.bat"
@rem build Python @rem build Python
vcbuild /useenv PCbuild\pcbuild.sln "Release|Win32" vcbuild /useenv PCbuild\pcbuild.sln "Release|Win32"
@rem build the documentation @rem build the documentation
bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp'
"%ProgramFiles%\HTML Help Workshop\hhc.exe" Doc\build\htmlhelp\python26a3.hhp "%ProgramFiles%\HTML Help Workshop\hhc.exe" Doc\build\htmlhelp\python26a3.hhp
@rem buold the MSI file @rem buold the MSI file
cd PC cd PC
nmake /f icons.mak nmake /f icons.mak
cd ..\Tools\msi cd ..\Tools\msi
del *.msi del *.msi
nmake /f msisupport.mak nmake /f msisupport.mak
%HOST_PYTHON% msi.py %HOST_PYTHON% msi.py
@rem Used by the buildbot "clean" step. @rem Used by the buildbot "clean" step.
call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
cd PCbuild cd PCbuild
@echo Deleting .pyc/.pyo files ... @echo Deleting .pyc/.pyo files ...
del /s Lib\*.pyc Lib\*.pyo del /s Lib\*.pyc Lib\*.pyo
vcbuild /clean pcbuild.sln "Release|x64" vcbuild /clean pcbuild.sln "Release|x64"
vcbuild /clean pcbuild.sln "Debug|x64" vcbuild /clean pcbuild.sln "Debug|x64"
@rem Used by the buildbot "clean" step. @rem Used by the buildbot "clean" step.
call "%VS90COMNTOOLS%vsvars32.bat" call "%VS90COMNTOOLS%vsvars32.bat"
@echo Deleting .pyc/.pyo files ... @echo Deleting .pyc/.pyo files ...
del /s Lib\*.pyc Lib\*.pyo del /s Lib\*.pyc Lib\*.pyo
cd PCbuild cd PCbuild
vcbuild /clean pcbuild.sln "Release|Win32" vcbuild /clean pcbuild.sln "Release|Win32"
vcbuild /clean pcbuild.sln "Debug|Win32" vcbuild /clean pcbuild.sln "Debug|Win32"
@rem Fetches (and builds if necessary) external dependencies @rem Fetches (and builds if necessary) external dependencies
@rem Assume we start inside the Python source directory @rem Assume we start inside the Python source directory
call "Tools\buildbot\external-common.bat" call "Tools\buildbot\external-common.bat"
call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
if not exist tcltk64\bin\tcl85g.dll ( if not exist tcltk64\bin\tcl85g.dll (
cd tcl-8.5.2.1\win cd tcl-8.5.2.1\win
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean all nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean all
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 install nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 install
cd ..\.. cd ..\..
) )
if not exist tcltk64\bin\tk85g.dll ( if not exist tcltk64\bin\tk85g.dll (
cd tk-8.5.2.0\win cd tk-8.5.2.0\win
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 clean nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 clean
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 all nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 all
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 install nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 install
cd ..\.. cd ..\..
) )
@rem Common file shared between external.bat and external-amd64.bat. Responsible for @rem Common file shared between external.bat and external-amd64.bat. Responsible for
@rem fetching external components into the root\.. buildbot directories. @rem fetching external components into the root\.. buildbot directories.
cd .. cd ..
@rem XXX: If you need to force the buildbots to start from a fresh environment, uncomment @rem XXX: If you need to force the buildbots to start from a fresh environment, uncomment
@rem the following, check it in, then check it out, comment it out, then check it back in. @rem the following, check it in, then check it out, comment it out, then check it back in.
@rem if exist bzip2-1.0.5 rd /s/q bzip2-1.0.5 @rem if exist bzip2-1.0.5 rd /s/q bzip2-1.0.5
@rem if exist tcltk rd /s/q tcltk @rem if exist tcltk rd /s/q tcltk
@rem if exist tcltk64 rd /s/q tcltk64 @rem if exist tcltk64 rd /s/q tcltk64
@rem if exist tcl8.4.12 rd /s/q tcl8.4.12 @rem if exist tcl8.4.12 rd /s/q tcl8.4.12
@rem if exist tcl8.4.16 rd /s/q tcl8.4.16 @rem if exist tcl8.4.16 rd /s/q tcl8.4.16
@rem if exist tcl-8.4.18.1 rd /s/q tcl-8.4.18.1 @rem if exist tcl-8.4.18.1 rd /s/q tcl-8.4.18.1
@rem if exist tk8.4.12 rd /s/q tk8.4.12 @rem if exist tk8.4.12 rd /s/q tk8.4.12
@rem if exist tk8.4.16 rd /s/q tk8.4.16 @rem if exist tk8.4.16 rd /s/q tk8.4.16
@rem if exist tk-8.4.18.1 rd /s/q tk-8.4.18.1 @rem if exist tk-8.4.18.1 rd /s/q tk-8.4.18.1
@rem if exist db-4.4.20 rd /s/q db-4.4.20 @rem if exist db-4.4.20 rd /s/q db-4.4.20
@rem if exist db-4.7.25.0 rd /s/q db-4.7.25.0 @rem if exist db-4.7.25.0 rd /s/q db-4.7.25.0
@rem if exist openssl-0.9.8l rd /s/q openssl-0.9.8l @rem if exist openssl-0.9.8l rd /s/q openssl-0.9.8l
@rem if exist sqlite-3.5.9 rd /s/q sqlite-3.5.9 @rem if exist sqlite-3.5.9 rd /s/q sqlite-3.5.9
@rem bzip @rem bzip
if not exist bzip2-1.0.5 ( if not exist bzip2-1.0.5 (
rd /s/q bzip2-1.0.3 rd /s/q bzip2-1.0.3
svn export http://svn.python.org/projects/external/bzip2-1.0.5 svn export http://svn.python.org/projects/external/bzip2-1.0.5
) )
@rem Berkeley DB @rem Berkeley DB
if exist db-4.4.20 rd /s/q db-4.4.20 if exist db-4.4.20 rd /s/q db-4.4.20
if not exist db-4.7.25.0 svn export http://svn.python.org/projects/external/db-4.7.25.0 if not exist db-4.7.25.0 svn export http://svn.python.org/projects/external/db-4.7.25.0
@rem OpenSSL @rem OpenSSL
if not exist openssl-0.9.8l svn export http://svn.python.org/projects/external/openssl-0.9.8l if not exist openssl-0.9.8l svn export http://svn.python.org/projects/external/openssl-0.9.8l
@rem tcl/tk @rem tcl/tk
if not exist tcl-8.5.2.1 ( if not exist tcl-8.5.2.1 (
rd /s/q tcltk tcltk64 rd /s/q tcltk tcltk64
svn export http://svn.python.org/projects/external/tcl-8.5.2.1 svn export http://svn.python.org/projects/external/tcl-8.5.2.1
) )
if not exist tk-8.5.2.0 svn export http://svn.python.org/projects/external/tk-8.5.2.0 if not exist tk-8.5.2.0 svn export http://svn.python.org/projects/external/tk-8.5.2.0
@rem sqlite3 @rem sqlite3
if not exist sqlite-3.5.9 ( if not exist sqlite-3.5.9 (
rd /s/q sqlite-source-3.3.4 rd /s/q sqlite-source-3.3.4
svn export http://svn.python.org/projects/external/sqlite-3.5.9 svn export http://svn.python.org/projects/external/sqlite-3.5.9
) )
@rem Fetches (and builds if necessary) external dependencies @rem Fetches (and builds if necessary) external dependencies
@rem Assume we start inside the Python source directory @rem Assume we start inside the Python source directory
call "Tools\buildbot\external-common.bat" call "Tools\buildbot\external-common.bat"
call "%VS90COMNTOOLS%\vsvars32.bat" call "%VS90COMNTOOLS%\vsvars32.bat"
if not exist tcltk\bin\tcl85g.dll ( if not exist tcltk\bin\tcl85g.dll (
@rem all and install need to be separate invocations, otherwise nmakehlp is not found on install @rem all and install need to be separate invocations, otherwise nmakehlp is not found on install
cd tcl-8.5.2.1\win cd tcl-8.5.2.1\win
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk clean all nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk clean all
nmake -f makefile.vc DEBUG=1 INSTALLDIR=..\..\tcltk install nmake -f makefile.vc DEBUG=1 INSTALLDIR=..\..\tcltk install
cd ..\.. cd ..\..
) )
if not exist tcltk\bin\tk85g.dll ( if not exist tcltk\bin\tk85g.dll (
cd tk-8.5.2.0\win cd tk-8.5.2.0\win
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 clean nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 clean
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 all nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 all
nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 install nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 install
cd ..\.. cd ..\..
) )
@rem Used by the buildbot "test" step. @rem Used by the buildbot "test" step.
cd PCbuild cd PCbuild
call rt.bat -q -d -x64 -uall -rw call rt.bat -q -d -x64 -uall -rw
@rem Used by the buildbot "test" step. @rem Used by the buildbot "test" step.
cd PCbuild cd PCbuild
call rt.bat -d -q -uall -rw call rt.bat -d -q -uall -rw
import msilib,os,win32com,tempfile,sys import msilib,os,win32com,tempfile,sys
PCBUILD="PCBuild" PCBUILD="PCBuild"
certname = None certname = None
from config import * from config import *
Win64 = "amd64" in PCBUILD Win64 = "amd64" in PCBUILD
mod_dir = os.path.join(os.environ["ProgramFiles"], "Common Files", "Merge Modules") mod_dir = os.path.join(os.environ["ProgramFiles"], "Common Files", "Merge Modules")
msi = None msi = None
if len(sys.argv)==2: if len(sys.argv)==2:
msi = sys.argv[1] msi = sys.argv[1]
if Win64: if Win64:
modules = ["Microsoft_VC90_CRT_x86_x64.msm", "policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"] modules = ["Microsoft_VC90_CRT_x86_x64.msm", "policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"]
if not msi: msi = "python-%s.amd64.msi" % full_current_version if not msi: msi = "python-%s.amd64.msi" % full_current_version
else: else:
modules = ["Microsoft_VC90_CRT_x86.msm","policy_9_0_Microsoft_VC90_CRT_x86.msm"] modules = ["Microsoft_VC90_CRT_x86.msm","policy_9_0_Microsoft_VC90_CRT_x86.msm"]
if not msi: msi = "python-%s.msi" % full_current_version if not msi: msi = "python-%s.msi" % full_current_version
for i, n in enumerate(modules): for i, n in enumerate(modules):
modules[i] = os.path.join(mod_dir, n) modules[i] = os.path.join(mod_dir, n)
def merge(msi, feature, rootdir, modules): def merge(msi, feature, rootdir, modules):
cab_and_filecount = [] cab_and_filecount = []
# Step 1: Merge databases, extract cabfiles # Step 1: Merge databases, extract cabfiles
m = msilib.MakeMerge2() m = msilib.MakeMerge2()
m.OpenLog("merge.log") m.OpenLog("merge.log")
print "Opened Log" print "Opened Log"
m.OpenDatabase(msi) m.OpenDatabase(msi)
print "Opened DB" print "Opened DB"
for module in modules: for module in modules:
print module print module
m.OpenModule(module,0) m.OpenModule(module,0)
print "Opened Module",module print "Opened Module",module
m.Merge(feature, rootdir) m.Merge(feature, rootdir)
print "Errors:" print "Errors:"
for e in m.Errors: for e in m.Errors:
print e.Type, e.ModuleTable, e.DatabaseTable print e.Type, e.ModuleTable, e.DatabaseTable
print " Modkeys:", print " Modkeys:",
for s in e.ModuleKeys: print s, for s in e.ModuleKeys: print s,
print print
print " DBKeys:", print " DBKeys:",
for s in e.DatabaseKeys: print s, for s in e.DatabaseKeys: print s,
print print
cabname = tempfile.mktemp(suffix=".cab") cabname = tempfile.mktemp(suffix=".cab")
m.ExtractCAB(cabname) m.ExtractCAB(cabname)
cab_and_filecount.append((cabname, len(m.ModuleFiles))) cab_and_filecount.append((cabname, len(m.ModuleFiles)))
m.CloseModule() m.CloseModule()
m.CloseDatabase(True) m.CloseDatabase(True)
m.CloseLog() m.CloseLog()
# Step 2: Add CAB files # Step 2: Add CAB files
i = msilib.MakeInstaller() i = msilib.MakeInstaller()
db = i.OpenDatabase(msi, win32com.client.constants.msiOpenDatabaseModeTransact) db = i.OpenDatabase(msi, win32com.client.constants.msiOpenDatabaseModeTransact)
v = db.OpenView("SELECT LastSequence FROM Media") v = db.OpenView("SELECT LastSequence FROM Media")
v.Execute(None) v.Execute(None)
maxmedia = -1 maxmedia = -1
while 1: while 1:
r = v.Fetch() r = v.Fetch()
if not r: break if not r: break
seq = r.IntegerData(1) seq = r.IntegerData(1)
if seq > maxmedia: if seq > maxmedia:
maxmedia = seq maxmedia = seq
print "Start of Media", maxmedia print "Start of Media", maxmedia
for cabname, count in cab_and_filecount: for cabname, count in cab_and_filecount:
stream = "merged%d" % maxmedia stream = "merged%d" % maxmedia
msilib.add_data(db, "Media", msilib.add_data(db, "Media",
[(maxmedia+1, maxmedia+count, None, "#"+stream, None, None)]) [(maxmedia+1, maxmedia+count, None, "#"+stream, None, None)])
msilib.add_stream(db, stream, cabname) msilib.add_stream(db, stream, cabname)
os.unlink(cabname) os.unlink(cabname)
maxmedia += count maxmedia += count
# The merge module sets ALLUSERS to 1 in the property table. # The merge module sets ALLUSERS to 1 in the property table.
# This is undesired; delete that # This is undesired; delete that
v = db.OpenView("DELETE FROM Property WHERE Property='ALLUSERS'") v = db.OpenView("DELETE FROM Property WHERE Property='ALLUSERS'")
v.Execute(None) v.Execute(None)
v.Close() v.Close()
db.Commit() db.Commit()
merge(msi, "SharedCRT", "TARGETDIR", modules) merge(msi, "SharedCRT", "TARGETDIR", modules)
# certname (from config.py) should be (a substring of) # certname (from config.py) should be (a substring of)
# the certificate subject, e.g. "Python Software Foundation" # the certificate subject, e.g. "Python Software Foundation"
if certname: if certname:
os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msi)) os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msi))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment