cpython/Tools/buildbot
Trent Nelson 05a96641b4 Refine the Visual Studio 2008 build solution in order to improve how we deal with external components, as well as fixing outstanding issues with Windows x64 build support. Introduce two new .vcproj files, _bsddb44.vcproj and sqlite3.vcproj, which replace the previous pre-link event scripts for _bsddb and _sqlite3 respectively. The new project files inherit from our property files as if they were any other Python module. This has numerous benefits. First, the components get built with exactly the same compiler flags and settings as the rest of Python. Second, it makes it much easier to debug problems in the external components when they're part of the build system. Third, they'll benefit from profile guided optimisation in the release builds, just like the rest of Python core.
I've also introduced a slightly new pattern for managing externals in subversion.  New components get checked in as <name>-<version>.x, where <version> matches the exact vendor version string.  After the initial import of the external component, the .x is tagged as .0 (i.e. tcl-8.4.18.x -> tcl-8.4.18.0).  Some components may not need any tweaking, whereas there are others that might (tcl/tk fall into this bucket).  In that case, the relevant modifications are made to the .x branch, which will be subsequently tagged as .1 (and then n+1 going forward) when they build successfully and all tests pass.  Buildbots will be converted to rely on these explicit tags only, which makes it easy for us to switch them over to a new version as and when required.  (Simple change to external(-amd64).bat: if we've bumped tcl to 8.4.18.1, change the .bat to rmdir 8.4.18.0 if it exists and check out a new .1 copy.)
2008-03-19 07:45:19 +00:00
..
build-amd64.bat Change amd64 buildbot scripts to use Visual Studio 2008, and 2008-01-09 21:35:43 +00:00
build.bat Use Visual Studio 2009 on the build slaves. 2008-01-01 23:00:48 +00:00
buildmsi.bat Use vcbuild for VS 2009. 2008-01-06 10:09:48 +00:00
clean-amd64.bat Change amd64 buildbot scripts to use Visual Studio 2008, and 2008-01-09 21:35:43 +00:00
clean.bat cd PCbuild only after deleting all pyc files. 2008-03-05 22:24:31 +00:00
external-amd64.bat Refine the Visual Studio 2008 build solution in order to improve how we deal with external components, as well as fixing outstanding issues with Windows x64 build support. Introduce two new .vcproj files, _bsddb44.vcproj and sqlite3.vcproj, which replace the previous pre-link event scripts for _bsddb and _sqlite3 respectively. The new project files inherit from our property files as if they were any other Python module. This has numerous benefits. First, the components get built with exactly the same compiler flags and settings as the rest of Python. Second, it makes it much easier to debug problems in the external components when they're part of the build system. Third, they'll benefit from profile guided optimisation in the release builds, just like the rest of Python core. 2008-03-19 07:45:19 +00:00
external.bat Build db-4.4.20 with VS9; remove VS2003 build if necessary. 2008-02-29 18:17:23 +00:00
kill_python.bat Revert to 45478, disable kill_python command for now. 2006-04-17 10:39:39 +00:00
kill_python.c Use Visual Studio 2009 on the build slaves. 2008-01-01 23:00:48 +00:00
kill_python.mak Revert to 45478, disable kill_python command for now. 2006-04-17 10:39:39 +00:00
Makefile Port cygwin kill_python changes from 2.4 branch. 2006-06-10 08:14:03 +00:00
README.tcltk-AMD64 Notes about building tcl/tk for windows/AMD64. 2007-06-13 07:07:41 +00:00
test-amd64.bat Run debug version, cd to PCbuild. 2008-03-14 21:19:28 +00:00
test.bat Test in PCbuild directory. 2008-01-01 23:36:24 +00:00

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 ..\..