[Python-checkins] r86137 - in python/branches/py3k/PCbuild: make_buildinfo.c make_buildinfo.vcproj pythoncore.vcproj

kristjan.jonsson python-checkins at python.org
Wed Nov 3 14:57:00 CET 2010


Author: kristjan.jonsson
Date: Wed Nov  3 14:57:00 2010
New Revision: 86137

Log:
issue 9981
let make_buildinfo use a temporary directory on windows

Modified:
   python/branches/py3k/PCbuild/make_buildinfo.c
   python/branches/py3k/PCbuild/make_buildinfo.vcproj
   python/branches/py3k/PCbuild/pythoncore.vcproj

Modified: python/branches/py3k/PCbuild/make_buildinfo.c
==============================================================================
--- python/branches/py3k/PCbuild/make_buildinfo.c	(original)
+++ python/branches/py3k/PCbuild/make_buildinfo.c	Wed Nov  3 14:57:00 2010
@@ -19,9 +19,15 @@
    invoked as a pre-link step for pythoncore, so that overwrites
    any previous getbuildinfo.o.
 
+   However, if a second argument is provided, this will be used
+   as a temporary directory where any getbuildinfo2.c and
+   getbuildinfo.o files are put.  This is useful if multiple
+   configurations are being built in parallel, to avoid them
+   trampling each other's files.
+
 */
 
-int make_buildinfo2()
+int make_buildinfo2(const char *tmppath)
 {
     struct _stat st;
     HKEY hTortoise;
@@ -46,7 +52,9 @@
     if (_stat(command+1, &st) < 0)
         /* subwcrev.exe not part of the release */
         return 0;
-    strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c");
+    strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c ");
+    strcat_s(command, CMD_SIZE, tmppath);
+    strcat_s(command, CMD_SIZE, "getbuildinfo2.c");
     puts(command); fflush(stdout);
     if (system(command) < 0)
         return 0;
@@ -55,10 +63,12 @@
 
 int main(int argc, char*argv[])
 {
-    char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+    char command[CMD_SIZE] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+    char tmppath[CMD_SIZE] = "";
     int do_unlink, result;
-    if (argc != 2) {
-        fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");
+    char *tmpdir = NULL;
+    if (argc <= 2 || argc > 3) {
+        fprintf(stderr, "make_buildinfo $(ConfigurationName) [tmpdir]\n");
         return EXIT_FAILURE;
     }
     if (strcmp(argv[1], "Release") == 0) {
@@ -78,16 +88,28 @@
         fprintf(stderr, "unsupported configuration %s\n", argv[1]);
         return EXIT_FAILURE;
     }
+    if (argc > 2) {
+        tmpdir = argv[2];
+        strcat_s(tmppath, _countof(tmppath), tmpdir);
+        strcat_s(tmppath, _countof(tmppath), "\\");
+    }
 
-    if ((do_unlink = make_buildinfo2()))
+    if ((do_unlink = make_buildinfo2(tmppath))) {
+        strcat_s(command, CMD_SIZE, tmppath);
         strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
-    else
+    } else
         strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c");
-    strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\Include -I..\\PC");
+    strcat_s(command, CMD_SIZE, " -Fo");
+    strcat_s(command, CMD_SIZE, tmppath);
+    strcat_s(command, CMD_SIZE, "getbuildinfo.o -I..\\Include -I..\\PC");
     puts(command); fflush(stdout);
     result = system(command);
-    if (do_unlink)
-        _unlink("getbuildinfo2.c");
+    if (do_unlink) {
+        command[0] = '\0';
+        strcat_s(command, CMD_SIZE, tmppath);
+        strcat_s(command, CMD_SIZE, "getbuildinfo2.c");
+        _unlink(command);
+    }
     if (result < 0)
         return EXIT_FAILURE;
     return 0;

Modified: python/branches/py3k/PCbuild/make_buildinfo.vcproj
==============================================================================
--- python/branches/py3k/PCbuild/make_buildinfo.vcproj	(original)
+++ python/branches/py3k/PCbuild/make_buildinfo.vcproj	Wed Nov  3 14:57:00 2010
@@ -12,9 +12,6 @@
 		<Platform
 			Name="Win32"
 		/>
-		<Platform
-			Name="x64"
-		/>
 	</Platforms>
 	<ToolFiles>
 	</ToolFiles>
@@ -84,64 +81,6 @@
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			ConfigurationType="1"
-			InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				PreprocessorDefinitions="_CONSOLE"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
 	</Configurations>
 	<References>
 	</References>

Modified: python/branches/py3k/PCbuild/pythoncore.vcproj
==============================================================================
--- python/branches/py3k/PCbuild/pythoncore.vcproj	(original)
+++ python/branches/py3k/PCbuild/pythoncore.vcproj	Wed Nov  3 14:57:00 2010
@@ -59,11 +59,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName).dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -134,11 +134,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName).dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -212,11 +212,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug $(IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName)_d.dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
@@ -290,11 +290,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug $(IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName)_d.dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
@@ -364,11 +364,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName).dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -439,11 +439,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName).dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -514,11 +514,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release ($IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName).dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -589,11 +589,11 @@
 			<Tool
 				Name="VCPreLinkEventTool"
 				Description="Generate build information..."
-				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+				CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="getbuildinfo.o"
+				AdditionalDependencies="$(IntDir)\getbuildinfo.o"
 				OutputFile="$(OutDir)\$(PyDllName).dll"
 				IgnoreDefaultLibraryNames="libc"
 				ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"


More information about the Python-checkins mailing list