Use Visual Studio 2009 on the build slaves.
diff --git a/Tools/buildbot/build.bat b/Tools/buildbot/build.bat
index f64c219..69edef2 100644
--- a/Tools/buildbot/build.bat
+++ b/Tools/buildbot/build.bat
@@ -1,5 +1,6 @@
 @rem Used by the buildbot "compile" step.
 cmd /c Tools\buildbot\external.bat
-call "%VS71COMNTOOLS%vsvars32.bat"
+call "%VS90COMNTOOLS%vsvars32.bat"
 cmd /q/c Tools\buildbot\kill_python.bat
-devenv.com /useenv /build Debug PC\VS7.1\pcbuild.sln
+vcbuild /useenv PCbuild\pcbuild.sln "Debug|Win32"
+
diff --git a/Tools/buildbot/buildmsi.bat b/Tools/buildbot/buildmsi.bat
index c30faee..c0537b4 100644
--- a/Tools/buildbot/buildmsi.bat
+++ b/Tools/buildbot/buildmsi.bat
@@ -2,14 +2,14 @@
 
 cmd /c Tools\buildbot\external.bat
 @rem build release versions of things
-call "%VS71COMNTOOLS%vsvars32.bat"
+call "%VS90COMNTOOLS%vsvars32.bat"
 if not exist ..\db-4.4.20\build_win32\release\libdb44s.lib (
    devenv ..\db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static
 )
 
 @rem build Python
 cmd /q/c Tools\buildbot\kill_python.bat
-devenv.com /useenv /build Release PC\VS7.1\pcbuild.sln
+devenv.com /useenv /build Release PCbuild\pcbuild.sln
 
 @rem build the documentation
 bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp'
diff --git a/Tools/buildbot/clean-amd64.bat b/Tools/buildbot/clean-amd64.bat
index e828c88..585476a 100644
--- a/Tools/buildbot/clean-amd64.bat
+++ b/Tools/buildbot/clean-amd64.bat
@@ -2,5 +2,5 @@
 call "%VS71COMNTOOLS%vsvars32.bat"
 cd PC\VS7.1
 @echo Deleting .pyc/.pyo files ...
-python.exe rmpyc.py
+del /s Lib\*.pyc Lib\*.pyo
 devenv.com /clean ReleaseAMD64 pcbuild.sln
diff --git a/Tools/buildbot/clean.bat b/Tools/buildbot/clean.bat
index 5e7e790..15d7365 100644
--- a/Tools/buildbot/clean.bat
+++ b/Tools/buildbot/clean.bat
@@ -1,7 +1,7 @@
 @rem Used by the buildbot "clean" step.
-call "%VS71COMNTOOLS%vsvars32.bat"
-cd PC\VS7.1
+call "%VS90COMNTOOLS%vsvars32.bat"
+cd PCbuild
 @echo Deleting .pyc/.pyo files ...
-python_d.exe rmpyc.py
-devenv.com /clean Release pcbuild.sln
-devenv.com /clean Debug pcbuild.sln
+del /s Lib\*.pyc Lib\*.pyo
+vcbuild /clean pcbuild.sln "Release|Win32"
+vcbuild /clean pcbuild.sln "Debug|Win32"
diff --git a/Tools/buildbot/external.bat b/Tools/buildbot/external.bat
index 463285f..9797aa2 100644
--- a/Tools/buildbot/external.bat
+++ b/Tools/buildbot/external.bat
@@ -2,7 +2,7 @@
 

 @rem Assume we start inside the Python source directory

 cd ..

-call "%VS71COMNTOOLS%vsvars32.bat"

+call "%VS90COMNTOOLS%vsvars32.bat"

 

 @rem bzip

 if not exist bzip2-1.0.3 svn export http://svn.python.org/projects/external/bzip2-1.0.3

@@ -10,24 +10,29 @@
 @rem Sleepycat db

 if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20

 if not exist db-4.4.20\build_win32\debug\libdb44sd.lib (

-   devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static

+   vcbuild db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static

 )

 

 @rem OpenSSL

-if not exist openssl-0.9.8a svn export http://svn.python.org/projects/external/openssl-0.9.8a

+if not exist openssl-0.9.8g (

+  if exist openssl-0.9.8a rd /s/q openssl-0.9.8a

+  svn export http://svn.python.org/projects/external/openssl-0.9.8g

+)

 

 @rem tcltk

-if not exist tcl8.4.12 (

+if not exist tcl8.4.16 (

    if exist tcltk rd /s/q tcltk

-   svn export http://svn.python.org/projects/external/tcl8.4.12

-   svn export http://svn.python.org/projects/external/tk8.4.12

-   cd tcl8.4.12\win

-   nmake -f makefile.vc

-   nmake -f makefile.vc INSTALLDIR=..\..\tcltk install

+   if exist tcl8.4.12 rd /s/q tcl8.4.12

+   if exist tk8.4.12 rd /s/q tk8.4.12

+   svn export http://svn.python.org/projects/external/tcl8.4.16

+   svn export http://svn.python.org/projects/external/tk8.4.16

+   cd tcl8.4.16\win

+   nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500

+   nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 INSTALLDIR=..\..\tcltk install

    cd ..\..

-   cd tk8.4.12\win

-   nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12

-   nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install

+   cd tk8.4.16\win

+   nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16

+   nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16 INSTALLDIR=..\..\tcltk install

    cd ..\..

 )

 

diff --git a/Tools/buildbot/kill_python.c b/Tools/buildbot/kill_python.c
index fd707da..5ba450f 100644
--- a/Tools/buildbot/kill_python.c
+++ b/Tools/buildbot/kill_python.c
@@ -1,4 +1,4 @@
-/* This program looks for processes which have build\PC\VS7.1\python.exe
+/* This program looks for processes which have build\PCbuild\python.exe
    in their path and terminates them. */
 #include <windows.h>
 #include <psapi.h>
@@ -46,14 +46,14 @@
 		/* Check if we are running a buildbot version of Python.
 
 		   On Windows, this will always be a debug build from the
-		   PC\VS7.1 directory.  build\\PC\\VS7.1\\python_d.exe
+		   PCbuild directory.  build\\PCbuild\\python_d.exe
 		   
 		   On Cygwin, the pathname is similar to other Unixes.
 		   Use \\build\\python.exe to ensure we don't match
-		   PC\\VS7.1\\python.exe which could be a normal instance
+		   PCbuild\\python.exe which could be a normal instance
 		   of Python running on vanilla Windows.
 		*/
-		if ((strstr(path, "build\\pc\\vs7.1\\python_d.exe") != NULL) ||
+		if ((strstr(path, "pcbuild\\python_d.exe") != NULL) ||
 		    (strstr(path, "\\build\\python.exe") != NULL)) {
 			printf("Terminating %s (pid %d)\n", path, pids[i]);
 			if (!TerminateProcess(hProcess, 1)) {