issue 10501
authorKristján Valur Jónsson <kristjan@ccpgames.com>
Mon, 22 Nov 2010 11:37:06 +0000 (11:37 +0000)
committerKristján Valur Jónsson <kristjan@ccpgames.com>
Mon, 22 Nov 2010 11:37:06 +0000 (11:37 +0000)
make_buildinfo regression with unquoted path
Make_buildinfo.exe should be called with a quoted path, and should quote the full paths to its temp files, to support spaces in filenames.

PCbuild/make_buildinfo.c
PCbuild/pythoncore.vcproj

index a41aac59b8c20391c92fc5f5dcdfa7980539f4de..94ca8c08b62e2a279010ea99848cb52120a063b0 100644 (file)
@@ -52,9 +52,9 @@ int make_buildinfo2(const char *tmppath)
     if (_stat(command+1, &st) < 0)
         /* subwcrev.exe not part of the release */
         return 0;
-    strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c ");
-    strcat_s(command, CMD_SIZE, tmppath);
-    strcat_s(command, CMD_SIZE, "getbuildinfo2.c");
+    strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c \"");
+    strcat_s(command, CMD_SIZE, tmppath); /* quoted tmppath */
+    strcat_s(command, CMD_SIZE, "getbuildinfo2.c\"");
     puts(command); fflush(stdout);
     if (system(command) < 0)
         return 0;
@@ -95,19 +95,21 @@ int main(int argc, char*argv[])
     }
 
     if ((do_unlink = make_buildinfo2(tmppath))) {
+        strcat_s(command, CMD_SIZE, "\"");
         strcat_s(command, CMD_SIZE, tmppath);
-        strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
+        strcat_s(command, CMD_SIZE, "getbuildinfo2.c\" -DSUBWCREV ");
     } else
         strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c");
-    strcat_s(command, CMD_SIZE, " -Fo");
+    strcat_s(command, CMD_SIZE, " -Fo\"");
     strcat_s(command, CMD_SIZE, tmppath);
-    strcat_s(command, CMD_SIZE, "getbuildinfo.o -I..\\Include -I..\\PC");
+    strcat_s(command, CMD_SIZE, "getbuildinfo.o\" -I..\\Include -I..\\PC");
     puts(command); fflush(stdout);
     result = system(command);
     if (do_unlink) {
         command[0] = '\0';
+        strcat_s(command, CMD_SIZE, "\"");
         strcat_s(command, CMD_SIZE, tmppath);
-        strcat_s(command, CMD_SIZE, "getbuildinfo2.c");
+        strcat_s(command, CMD_SIZE, "getbuildinfo2.c\"");
         _unlink(command);
     }
     if (result < 0)
index f5d12a3fb4daf4412e41bb7f48582148af22161e..c0ffae55484926fda3ba85a4a46853937ee8a7a4 100644 (file)
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName).dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName).dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug $(IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName)_d.dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug $(IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName)_d.dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName).dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName).dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release ($IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName).dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
                        <Tool
                                Name="VCPreLinkEventTool"
                                Description="Generate build information..."
-                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
+                               CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release &quot;$(IntDir)\&quot;"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="$(IntDir)\getbuildinfo.o"
+                               AdditionalDependencies="&quot;$(IntDir)getbuildinfo.o&quot;"
                                OutputFile="$(OutDir)\$(PyDllName).dll"
                                IgnoreDefaultLibraryNames="libc"
                                ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"