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