Merged revisions 59376-59406 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r59377 | georg.brandl | 2007-12-06 01:24:23 +0100 (Thu, 06 Dec 2007) | 2 lines

  Add another GHOP student to ACKS.
........
  r59378 | raymond.hettinger | 2007-12-06 01:56:53 +0100 (Thu, 06 Dec 2007) | 5 lines

  Fix Issue 1045.
  Factor-out common calling code by simplifying the length_hint API.
  Speed-up the function by caching the PyObject_String for the attribute lookup.
........
  r59380 | georg.brandl | 2007-12-06 02:52:24 +0100 (Thu, 06 Dec 2007) | 2 lines

  Diverse markup fixes.
........
  r59383 | georg.brandl | 2007-12-06 10:45:39 +0100 (Thu, 06 Dec 2007) | 2 lines

  Better re.split examples.
........
  r59386 | christian.heimes | 2007-12-06 14:15:13 +0100 (Thu, 06 Dec 2007) | 2 lines

  Fixed get_config_h_filename for Windows. Without the patch it can't find the pyconfig.h file inside a build tree.
  Added several small unit tests for sysconfig.
........
  r59387 | christian.heimes | 2007-12-06 14:30:11 +0100 (Thu, 06 Dec 2007) | 1 line

  Silence more warnings, _CRT_NONSTDC_NO_DEPRECATE is already defined in pyconfig.h but several projects don't include it.
........
  r59389 | christian.heimes | 2007-12-06 14:55:01 +0100 (Thu, 06 Dec 2007) | 1 line

  Disabled one test that is failing on Unix
........
  r59399 | christian.heimes | 2007-12-06 22:13:06 +0100 (Thu, 06 Dec 2007) | 8 lines

  Several Windows related cleanups:
  * Removed a #define from pyconfig.h. The macro was already defined a few lines higher.
  * Fixed path to tix in the build_tkinter.py script
  * Changed make_buildinfo.c to use versions of unlink and strcat which are considered safe by Windows (as suggested by MvL).
  * Removed two defines from pyproject.vsprops that are no longer required. Both are defined in pyconfig.h and make_buildinfo.c doesn't use the unsafe versions any more (as suggested by MvL).
  * Added some more information about PGO and the property files to PCbuild9/readme.txt.

  Are you fine with the changes, Martin?
........
  r59400 | raymond.hettinger | 2007-12-07 02:53:01 +0100 (Fri, 07 Dec 2007) | 4 lines

  Don't have the docs berate themselves.  Keep a professional tone.
  If a todo is needed, put it in the tracker.
........
  r59402 | georg.brandl | 2007-12-07 10:07:10 +0100 (Fri, 07 Dec 2007) | 3 lines

  Increase unit test coverage of SimpleXMLRPCServer.
  Written for GHOP by Turkay Eren.
........
  r59406 | georg.brandl | 2007-12-07 16:16:57 +0100 (Fri, 07 Dec 2007) | 2 lines

  Update to windows doc from Robert.
........
diff --git a/PCbuild9/build_tkinter.py b/PCbuild9/build_tkinter.py
index d76ea26..3e24d00 100644
--- a/PCbuild9/build_tkinter.py
+++ b/PCbuild9/build_tkinter.py
@@ -14,7 +14,7 @@
 
 TCL = "tcl8.4.16"
 TK = "tk8.4.16"
-TIX = "Tix8.4.0"
+TIX = "tix-8.4.0"
 #TIX = "Tix8.4.2"
 ROOT = os.path.abspath(os.path.join(here, par, par))
 NMAKE = "nmake /nologo "
@@ -53,6 +53,7 @@
 
     # TIX
     if True:
+        # python9.mak is available at http://svn.python.org
         os.chdir(os.path.join(ROOT, TIX, "win"))
         if clean:
             system(NMAKE + "/f python9.mak clean")
diff --git a/PCbuild9/make_buildinfo.c b/PCbuild9/make_buildinfo.c
index 4cebf45..22b9882 100644
--- a/PCbuild9/make_buildinfo.c
+++ b/PCbuild9/make_buildinfo.c
@@ -3,6 +3,8 @@
 #include <sys/stat.h>
 #include <stdio.h>
 
+#define CMD_SIZE 500
+
 /* This file creates the getbuildinfo.o object, by first
    invoking subwcrev.exe (if found), and then invoking cl.exe.
    As a side effect, it might generate PCBuild\getbuildinfo2.c
@@ -23,7 +25,7 @@
 {
 	struct _stat st;
 	HKEY hTortoise;
-	char command[500];
+	char command[CMD_SIZE+1];
 	DWORD type, size;
 	if (_stat(".svn", &st) < 0)
 		return 0;
@@ -40,11 +42,11 @@
 	    type != REG_SZ)
 		/* Registry corrupted */
 		return 0;
-	strcat(command, "bin\\subwcrev.exe");
+	strcat_s(command, CMD_SIZE, "bin\\subwcrev.exe");
 	if (_stat(command+1, &st) < 0)
 		/* subwcrev.exe not part of the release */
 		return 0;
-	strcat(command, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c");
+	strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c");
 	puts(command); fflush(stdout);
 	if (system(command) < 0)
 		return 0;
@@ -60,17 +62,17 @@
 		return EXIT_FAILURE;
 	}
 	if (strcmp(argv[1], "Release") == 0) {
-		strcat(command, "-MD ");
+		strcat_s(command, CMD_SIZE, "-MD ");
 	}
 	else if (strcmp(argv[1], "Debug") == 0) {
-		strcat(command, "-D_DEBUG -MDd ");
+		strcat_s(command, CMD_SIZE, "-D_DEBUG -MDd ");
 	}
 	else if (strcmp(argv[1], "ReleaseItanium") == 0) {
-		strcat(command, "-MD /USECL:MS_ITANIUM ");
+		strcat_s(command, CMD_SIZE, "-MD /USECL:MS_ITANIUM ");
 	}
 	else if (strcmp(argv[1], "ReleaseAMD64") == 0) {
-		strcat(command, "-MD ");
-		strcat(command, "-MD /USECL:MS_OPTERON ");
+		strcat_s(command, CMD_SIZE, "-MD ");
+		strcat_s(command, CMD_SIZE, "-MD /USECL:MS_OPTERON ");
 	}
 	else {
 		fprintf(stderr, "unsupported configuration %s\n", argv[1]);
@@ -78,14 +80,14 @@
 	}
 
 	if ((do_unlink = make_buildinfo2()))
-		strcat(command, "getbuildinfo2.c -DSUBWCREV ");
+		strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
 	else
-		strcat(command, "..\\Modules\\getbuildinfo.c");
-	strcat(command, " -Fogetbuildinfo.o -I..\\Include -I..\\PC");
+		strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c");
+	strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\Include -I..\\PC");
 	puts(command); fflush(stdout);
 	result = system(command);
 	if (do_unlink)
-		unlink("getbuildinfo2.c");
+		_unlink("getbuildinfo2.c");
 	if (result < 0)
 		return EXIT_FAILURE;
 	return 0;
diff --git a/PCbuild9/pyproject.vsprops b/PCbuild9/pyproject.vsprops
index ba3a675..e8252c0 100644
--- a/PCbuild9/pyproject.vsprops
+++ b/PCbuild9/pyproject.vsprops
@@ -12,7 +12,7 @@
 		InlineFunctionExpansion="1"
 		EnableIntrinsicFunctions="true"
 		AdditionalIncludeDirectories="..\Include; ..\PC"
-		PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WIN32"
+		PreprocessorDefinitions="_WIN32"
 		StringPooling="true"
 		ExceptionHandling="0"
 		RuntimeLibrary="0"
diff --git a/PCbuild9/readme.txt b/PCbuild9/readme.txt
index fd3967a..ef3b97d 100644
--- a/PCbuild9/readme.txt
+++ b/PCbuild9/readme.txt
@@ -281,6 +281,14 @@
 Profile Guided Optimization
 ---------------------------
 
+The solution has two configurations for PGO. The PGInstrument configuration
+must be build first. The PGInstrument binaries are lniked against a profiling
+library and contain extra debug information. The PGUpdate configuration takes the profiling data and generates optimized binaries.
+
+The build_pgo.bat script automates the creation of optimized binaries. It
+creates the PGI files, runs the unit test suite or PyBench with the PGI
+python and finally creates the optimized files.
+
 http://msdn2.microsoft.com/en-us/library/e7k32f4k(VS.90).aspx
 
 Static library
@@ -300,7 +308,7 @@
 (*.vsprops). The properties can be viewed and altered in the Property
 Manager (View -> Other Windows -> Property Manager).
 
- * debug (debug macros)
+ * debug (debug macro: _DEBUG)
  * pginstrument (PGO)
  * pgupdate (PGO)
     +-- pginstrument
@@ -310,8 +318,8 @@
  * pyd_d (python extension, debug build)
     +-- debug
     +-- pyproject
- * pyproject (base settings for all projects)
- * release (release macros)
+ * pyproject (base settings for all projects, user macros like PyDllName)
+ * release (release macro: NDEBUG)
  * x64 (AMD64 / x64 platform specific settings)
 
 The pyproject propertyfile defines _WIN32 and x64 defines _WIN64 and _M_X64
@@ -320,6 +328,7 @@
 
 YOUR OWN EXTENSION DLLs
 -----------------------
+
 If you want to create your own extension module DLL, there's an example
 with easy-to-follow instructions in ../PC/example/; read the file
 readme.txt there first.