Clean up/refactor the batch scripts used for building on Windows.

This is mostly a backport of issue #21907, but also includes a few
extras necessary to make the bulidbot scripts as thin as possible.
This commit is contained in:
Zachary Ware 2015-06-09 23:16:52 -05:00
parent 17d5f47423
commit 6250df81bf
14 changed files with 261 additions and 199 deletions

View file

@ -1,36 +0,0 @@
Comments on building tcl/tk for AMD64 with the MS SDK compiler
==============================================================
I did have to build tcl/tk manually.
First, I had to build the nmakehlp.exe helper utility manually by executing
cl nmakehlp.c /link bufferoverflowU.lib
in both the tcl8.4.12\win and tk8.4.12\win directories.
Second, the AMD64 compiler refuses to compile the file
tcl8.4.12\generic\tclExecute.c because it insists on using intrinsics
for the 'ceil' and 'floor' functions:
..\generic\tclExecute.c(394) : error C2099: initializer is not a constant
..\generic\tclExecute.c(398) : error C2099: initializer is not a constant
I did comment out these lines; an alternative would have been to use
the /Oi- compiler flag to disable the intrinsic functions.
The commands then used were these:
svn export http://svn.python.org/projects/external/tcl8.4.12
cd tcl8.4.12\win
REM
echo patch the tcl8.4.12\generic\tclExecute.c file
pause
REM
cl nmakehlp.c /link bufferoverflowU.lib
nmake -f makefile.vc MACHINE=AMD64
nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
cd ..\..
svn export http://svn.python.org/projects/external/tk8.4.12
cd tk8.4.12\win
cl nmakehlp.c /link bufferoverflowU.lib
nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 MACHINE=AMD64
nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install
cd ..\..

View file

@ -1,6 +1,2 @@
@rem Used by the buildbot "compile" step.
cmd /c Tools\buildbot\external-amd64.bat
call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
cmd /c Tools\buildbot\clean-amd64.bat
msbuild PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=x64
call "%~dp0build.bat" -p x64 %*

View file

@ -1,7 +1,17 @@
@rem Used by the buildbot "compile" step.
cmd /c Tools\buildbot\external.bat
call "%VS100COMNTOOLS%vsvars32.bat"
cmd /c Tools\buildbot\clean.bat
msbuild PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=Win32
@rem Clean up
call "%~dp0clean.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 -k -v %*

View file

@ -1,10 +1,2 @@
@rem Used by the buildbot "clean" step.
call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
@echo Deleting .pyc/.pyo files ...
del /s Lib\*.pyc Lib\*.pyo
@echo Deleting test leftovers ...
rmdir /s /q build
cd PCbuild
msbuild /target:clean pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x64
msbuild /target:clean pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x64
cd ..
call "%~dp0clean.bat" -p x64 %*

View file

@ -1,8 +1,16 @@
@rem Used by the buildbot "clean" step.
call "%VS100COMNTOOLS%vsvars32.bat"
@echo Deleting test leftovers ...
rmdir /s /q build
cd PCbuild
msbuild /target:clean pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x86
msbuild /target:clean pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x86
cd ..
@echo off
rem Used by the buildbot "clean" step.
setlocal
set root=%~dp0..\..
set pcbuild=%root%\PCbuild
echo Deleting build
call "%pcbuild%\build.bat" -t Clean -k %*
call "%pcbuild%\build.bat" -t Clean -k -d %*
echo Deleting .pyc/.pyo files ...
del /s "%root%\Lib\*.pyc" "%root%\Lib\*.pyo"
echo Deleting test leftovers ...
rmdir /s /q "%root%\build"

View file

@ -1,28 +1,2 @@
@rem Fetches (and builds if necessary) external dependencies
@rem Assume we start inside the Python source directory
call "Tools\buildbot\external-common.bat"
call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
if not exist tcltk64\bin\tcl86tg.dll (
cd tcl-8.6.1.0\win
nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean core shell dlls
nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 install-binaries install-libraries
cd ..\..
)
if not exist tcltk64\bin\tk86tg.dll (
cd tk-8.6.1.0\win
nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.6.1.0 clean
nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.6.1.0 all
nmake -f makefile.vc OPTS=symbols MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.6.1.0 install-binaries install-libraries
cd ..\..
)
if not exist tcltk64\lib\tix8.4.3\tix84g.dll (
cd tix-8.4.3.4\win
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
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
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
cd ..\..
)
@echo Please use PCbuild\get_externals.bat instead.
@"%~dp0..\..\PCbuild\get_externals.bat" %*

View file

@ -1,54 +0,0 @@
@rem Common file shared between external.bat and external-amd64.bat. Responsible for
@rem fetching external components into the root\.. buildbot directories.
if "%SVNROOT%"=="" set SVNROOT=http://svn.python.org/projects/external/
if not exist externals mkdir externals
cd externals
@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.6 rd /s/q bzip2-1.0.6
@rem if exist tcltk rd /s/q tcltk
@rem if exist tcltk64 rd /s/q tcltk64
@rem if exist tcl-8.6.1.0 rd /s/q tcl-8.6.1.0
@rem if exist tk-8.6.1.0 rd /s/q tk-8.6.1.0
@rem if exist tix-8.4.3.4 rd /s/q tix-8.4.3.4
@rem if exist db-4.4.20 rd /s/q db-4.4.20
@rem if exist openssl-1.0.2a rd /s/q openssl-1.0.2a
@rem if exist sqlite-3.7.12 rd /s/q sqlite-3.7.12
@rem bzip
if not exist bzip2-1.0.6 (
rd /s/q bzip2-1.0.5
svn export %SVNROOT%bzip2-1.0.6
)
@rem NASM, for OpenSSL build
@rem if exist nasm-2.11.06 rd /s/q nasm-2.11.06
if not exist nasm-2.11.06 svn export %SVNROOT%nasm-2.11.06
@rem OpenSSL
if not exist openssl-1.0.2a (
rd /s/q openssl-1.0.1l
svn export %SVNROOT%openssl-1.0.2a
)
@rem tcl/tk
if not exist tcl-8.6.1.0 (
rd /s/q tcltk tcltk64 tcl-8.5.11.0 tk-8.5.11.0
svn export %SVNROOT%tcl-8.6.1.0
)
if not exist tk-8.6.1.0 svn export %SVNROOT%tk-8.6.1.0
if not exist tix-8.4.3.4 svn export %SVNROOT%tix-8.4.3.4
@rem sqlite3
if not exist sqlite-3.8.3.1 (
rd /s/q sqlite-source-3.8.1
svn export %SVNROOT%sqlite-3.8.3.1
)
@rem lzma
if not exist xz-5.0.5 (
rd /s/q xz-5.0.3
svn export %SVNROOT%xz-5.0.5
)

View file

@ -1,29 +1,2 @@
@rem Fetches (and builds if necessary) external dependencies
@rem Assume we start inside the Python source directory
call "Tools\buildbot\external-common.bat"
call "%VS100COMNTOOLS%\vsvars32.bat"
if not exist tcltk\bin\tcl86tg.dll (
@rem all and install need to be separate invocations, otherwise nmakehlp is not found on install
cd tcl-8.6.1.0\win
nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk clean core shell dlls
nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk install-binaries install-libraries
cd ..\..
)
if not exist tcltk\bin\tk86tg.dll (
cd tk-8.6.1.0\win
nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.6.1.0 clean
nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.6.1.0 all
nmake -f makefile.vc OPTS=symbols INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.6.1.0 install-binaries install-libraries
cd ..\..
)
if not exist tcltk\lib\tix8.4.3\tix84g.dll (
cd tix-8.4.3.4\win
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
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
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
cd ..\..
)
@echo Please use PCbuild\get_externals.bat instead.
@"%~dp0..\..\PCbuild\get_externals.bat" %*

View file

@ -1,3 +1,2 @@
@rem Used by the buildbot "test" step.
cd PCbuild
call rt.bat -d -q -x64 -uall -rwW -n --timeout=3600 %1 %2 %3 %4 %5 %6 %7 %8 %9
call "%~dp0test.bat" -x64 %*

View file

@ -1,3 +1,15 @@
@rem Used by the buildbot "test" step.
cd PCbuild
call rt.bat -d -q -uall -rwW -n --timeout=3600 %1 %2 %3 %4 %5 %6 %7 %8 %9
@setlocal
@set here=%~dp0
@set rt_opts=-q -d
:CheckOpts
@if '%1'=='-x64' (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
@if '%1'=='-d' (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
@if '%1'=='-O' (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
@if '%1'=='-q' (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
@if '%1'=='+d' (set rt_opts=%rt_opts:-d=%) & shift & goto CheckOpts
@if '%1'=='+q' (set rt_opts=%rt_opts:-q=%) & shift & goto CheckOpts
call "%here%..\..\PCbuild\rt.bat" %rt_opts% -uall -rwW -n --timeout=3600 %1 %2 %3 %4 %5 %6 %7 %8 %9