Index: Source/cmSystemTools.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSystemTools.cxx,v
retrieving revision 1.403
diff -u -r1.403 cmSystemTools.cxx
--- Source/cmSystemTools.cxx	1 Oct 2009 20:47:08 -0000	1.403
+++ Source/cmSystemTools.cxx	2 Oct 2009 07:13:27 -0000
@@ -2130,11 +2130,26 @@
 bool cmSystemTools::CopyFileTime(const char* fromFile, const char* toFile)
 {
 #if defined(_WIN32) && !defined(__CYGWIN__)
+  const DWORD retryDelay_millisecs = 250;
+  const int maxRetries = 15;
+  int retries = 0;
+
   cmSystemToolsWindowsHandle hFrom =
     CreateFile(fromFile, GENERIC_READ, FILE_SHARE_READ, 0,
                OPEN_EXISTING, 0, 0);
-  cmSystemToolsWindowsHandle hTo =
-    CreateFile(toFile, GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
+
+  HANDLE hTry;
+
+  while ((hTry = CreateFile(toFile, GENERIC_WRITE, 
+                            FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE
+         && GetLastError() == ERROR_SHARING_VIOLATION
+         && ++retries <= maxRetries) 
+    {
+    Sleep(retryDelay_millisecs);
+    }
+
+  cmSystemToolsWindowsHandle hTo(hTry);
+
   if(!hFrom || !hTo)
     {
     return false;
