Index: Lib/distutils/msvccompiler.py =================================================================== --- Lib/distutils/msvccompiler.py (revision 72717) +++ Lib/distutils/msvccompiler.py (working copy) @@ -475,6 +475,11 @@ build_temp=None, target_lang=None): + import os + orig_output_filename = output_filename + if not os.path.splitext(output_filename)[1]: + output_filename += ".tmp" + if not self.initialized: self.initialize() (objects, output_dir) = self._fix_object_args (objects, output_dir) (libraries, library_dirs, runtime_library_dirs) = \ @@ -531,6 +536,8 @@ self.mkpath (os.path.dirname (output_filename)) try: self.spawn ([self.linker] + ld_args) + if orig_output_filename != output_filename: + os.rename(output_filename, orig_output_filename) except DistutilsExecError, msg: raise LinkError, msg Index: Lib/distutils/tests/test_build_ext.py =================================================================== --- Lib/distutils/tests/test_build_ext.py (revision 72717) +++ Lib/distutils/tests/test_build_ext.py (working copy) @@ -299,7 +299,6 @@ cmd.run() self.assertEquals(cmd.compiler, 'unix') - @unittest.skipIf(UNDER_MSVC8, 'not running this test for MSVC < 8') def test_get_outputs(self): tmp_dir = self.mkdtemp() c_file = os.path.join(tmp_dir, 'foo.c')