From 3827991e87422aaa47cda3d9af0899e777b85ec0 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 26 Mar 2008 13:14:16 -0400 Subject: [PATCH] ENH: try to fix dashboard issue with not being able to remove try compile code --- Source/cmCoreTryCompile.cxx | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index 0135db49ce..7ac06d88de 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -359,9 +359,25 @@ void cmCoreTryCompile::CleanupFiles(const char* binDir) { if(!cmSystemTools::RemoveFile(fullPath.c_str())) { - std::string m = "Remove failed on file: "; - m += fullPath; - cmSystemTools::ReportLastSystemError(m.c_str()); + bool removed = false; + int numAttempts = 0; + // sometimes anti-virus software hangs on to + // new files and we can not delete them, so try + // 5 times with .5 second delay between tries. + while(!removed && numAttempts < 5) + { + cmSystemTools::Delay(500); + if(cmSystemTools::RemoveFile(fullPath.c_str())) + { + removed = true; + } + } + if(!removed) + { + std::string m = "Remove failed on file: "; + m += fullPath; + cmSystemTools::ReportLastSystemError(m.c_str()); + } } } }