summaryrefslogtreecommitdiff
path: root/Modules/ExternalProject/download.cmake.in
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/ExternalProject/download.cmake.in')
-rw-r--r--Modules/ExternalProject/download.cmake.in205
1 files changed, 0 insertions, 205 deletions
diff --git a/Modules/ExternalProject/download.cmake.in b/Modules/ExternalProject/download.cmake.in
deleted file mode 100644
index c8d2f28f18..0000000000
--- a/Modules/ExternalProject/download.cmake.in
+++ /dev/null
@@ -1,205 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-cmake_minimum_required(VERSION 3.5)
-
-set(quiet "@quiet@")
-set(script_dir "@CMAKE_CURRENT_FUNCTION_LIST_DIR@/ExternalProject")
-include(${script_dir}/captured_process_setup.cmake)
-
-function(check_file_hash has_hash hash_is_good)
- if("${has_hash}" STREQUAL "")
- _ep_message_quiet_capture(FATAL_ERROR "has_hash Can't be empty")
- endif()
-
- if("${hash_is_good}" STREQUAL "")
- _ep_message_quiet_capture(FATAL_ERROR "hash_is_good Can't be empty")
- endif()
-
- if("@ALGO@" STREQUAL "")
- # No check
- set("${has_hash}" FALSE PARENT_SCOPE)
- set("${hash_is_good}" FALSE PARENT_SCOPE)
- return()
- endif()
-
- set("${has_hash}" TRUE PARENT_SCOPE)
-
- _ep_message_quiet_capture(STATUS "verifying file...
- file='@LOCAL@'")
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
-
- file("@ALGO@" "@LOCAL@" actual_value)
-
- if(NOT "${actual_value}" STREQUAL "@EXPECT_VALUE@")
- set("${hash_is_good}" FALSE PARENT_SCOPE)
- _ep_message_quiet_capture(STATUS "@ALGO@ hash of
- @LOCAL@
- does not match expected value
- expected: '@EXPECT_VALUE@'
- actual: '${actual_value}'")
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- else()
- set("${hash_is_good}" TRUE PARENT_SCOPE)
- endif()
-endfunction()
-
-function(sleep_before_download attempt)
- if(attempt EQUAL 0)
- return()
- endif()
-
- if(attempt EQUAL 1)
- _ep_message_quiet_capture(STATUS "Retrying...")
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- return()
- endif()
-
- set(sleep_seconds 0)
-
- if(attempt EQUAL 2)
- set(sleep_seconds 5)
- elseif(attempt EQUAL 3)
- set(sleep_seconds 5)
- elseif(attempt EQUAL 4)
- set(sleep_seconds 15)
- elseif(attempt EQUAL 5)
- set(sleep_seconds 60)
- elseif(attempt EQUAL 6)
- set(sleep_seconds 90)
- elseif(attempt EQUAL 7)
- set(sleep_seconds 300)
- else()
- set(sleep_seconds 1200)
- endif()
-
- _ep_message_quiet_capture(STATUS
- "Retry after ${sleep_seconds} seconds (attempt #${attempt}) ..."
- )
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
-
- execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep "${sleep_seconds}")
-endfunction()
-
-if("@LOCAL@" STREQUAL "")
- message(FATAL_ERROR "LOCAL can't be empty")
-endif()
-
-if("@REMOTE@" STREQUAL "")
- message(FATAL_ERROR "REMOTE can't be empty")
-endif()
-
-function(download_and_verify)
- if(EXISTS "@LOCAL@")
- check_file_hash(has_hash hash_is_good)
- if(has_hash)
- if(hash_is_good)
- _ep_message_quiet_capture(STATUS
-"File already exists and hash match (skip download):
- file='@LOCAL@'
- @ALGO@='@EXPECT_VALUE@'"
- )
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- return()
- else()
- _ep_message_quiet_capture(STATUS
- "File already exists but hash mismatch. Removing..."
- )
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- file(REMOVE "@LOCAL@")
- endif()
- else()
- _ep_message_quiet_capture(STATUS
-"File already exists but no hash specified (use URL_HASH):
- file='@LOCAL@'
-Old file will be removed and new file downloaded from URL."
- )
- file(REMOVE "@LOCAL@")
- endif()
- endif()
-
- set(retry_number 5)
-
- _ep_message_quiet_capture(STATUS "Downloading...
- dst='@LOCAL@'
- timeout='@TIMEOUT_MSG@'
- inactivity timeout='@INACTIVITY_TIMEOUT_MSG@'"
- )
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- set(download_retry_codes 7 6 8 15)
- set(skip_url_list)
- set(status_code)
- foreach(i RANGE ${retry_number})
- if(status_code IN_LIST download_retry_codes)
- sleep_before_download(${i})
- endif()
- foreach(url @REMOTE@)
- if(NOT url IN_LIST skip_url_list)
- _ep_message_quiet_capture(STATUS "Using src='${url}'")
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
-
- @TLS_VERIFY_CODE@
- @TLS_CAINFO_CODE@
- @NETRC_CODE@
- @NETRC_FILE_CODE@
-
- file(
- DOWNLOAD
- "${url}" "@LOCAL@"
- @SHOW_PROGRESS@
- @TIMEOUT_ARGS@
- @INACTIVITY_TIMEOUT_ARGS@
- STATUS status
- LOG log
- @USERPWD_ARGS@
- @HTTP_HEADERS_ARGS@
- )
-
- list(GET status 0 status_code)
- list(GET status 1 status_string)
-
- if(status_code EQUAL 0)
- check_file_hash(has_hash hash_is_good)
- if(has_hash AND NOT hash_is_good)
- _ep_message_quiet_capture(STATUS "Hash mismatch, removing...")
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- file(REMOVE "@LOCAL@")
- else()
- _ep_message_quiet_capture(STATUS "Downloading... done")
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- return()
- endif()
- else()
- string(APPEND logFailedURLs
-"error: downloading '${url}' failed
- status_code: ${status_code}
- status_string: ${status_string}
- log:
- --- LOG BEGIN ---
- ${log}
- --- LOG END ---
- "
- )
- if(NOT status_code IN_LIST download_retry_codes)
- list(APPEND skip_url_list "${url}")
- break()
- endif()
- endif()
- endif()
- endforeach()
- endforeach()
-
- _ep_message_quiet_capture(FATAL_ERROR
-"Each download failed!
- ${logFailedURLs}
- "
- )
-
-endfunction()
-
-download_and_verify()
-
-set(extract_script @extract_script_filename@)
-if(NOT "${extract_script}" STREQUAL "")
- include(${extract_script})
-endif()