summaryrefslogtreecommitdiffstats
path: root/Modules/ExternalProject.cmake
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2013-03-20 21:54:49 (GMT)
committerBrad King <brad.king@kitware.com>2013-03-26 14:31:39 (GMT)
commit118f741c495be8e244ad7d021623907d450d63ee (patch)
treeb5bdb269e7f6d28ca26f9e8696957c2593839b5d /Modules/ExternalProject.cmake
parent2557e84d672cc50e30c8934e06de10c6080dc092 (diff)
downloadCMake-118f741c495be8e244ad7d021623907d450d63ee.zip
CMake-118f741c495be8e244ad7d021623907d450d63ee.tar.gz
CMake-118f741c495be8e244ad7d021623907d450d63ee.tar.bz2
ExternalProject: Retry on a failed git clone
Git sometimes fails to clone repositories due to network outage or server load. Try 3 times before giving up.
Diffstat (limited to 'Modules/ExternalProject.cmake')
-rw-r--r--Modules/ExternalProject.cmake20
1 files changed, 15 insertions, 5 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index bf2892b..40e14d5 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -287,11 +287,21 @@ if(error_code)
message(FATAL_ERROR \"Failed to remove directory: '${source_dir}'\")
endif()
-execute_process(
- COMMAND \"${git_EXECUTABLE}\" clone \"${git_repository}\" \"${src_name}\"
- WORKING_DIRECTORY \"${work_dir}\"
- RESULT_VARIABLE error_code
- )
+# try the clone 3 times incase there is an odd git clone issue
+set(error_code 1)
+set(number_of_tries 0)
+while(error_code AND number_of_tries LESS 3)
+ execute_process(
+ COMMAND \"${git_EXECUTABLE}\" clone \"${git_repository}\" \"${src_name}\"
+ WORKING_DIRECTORY \"${work_dir}\"
+ RESULT_VARIABLE error_code
+ )
+ math(EXPR number_of_tries \"\${number_of_tries} + 1\")
+endwhile()
+if(number_of_tries GREATER 1)
+ message(STATUS \"Had to git clone more than once:
+ \${number_of_tries} times.\")
+endif()
if(error_code)
message(FATAL_ERROR \"Failed to clone repository: '${git_repository}'\")
endif()