diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2013-03-20 21:54:49 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-03-26 14:31:39 (GMT) |
commit | 118f741c495be8e244ad7d021623907d450d63ee (patch) | |
tree | b5bdb269e7f6d28ca26f9e8696957c2593839b5d /Modules/ExternalProject.cmake | |
parent | 2557e84d672cc50e30c8934e06de10c6080dc092 (diff) | |
download | CMake-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.cmake | 20 |
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() |