summaryrefslogtreecommitdiff
path: root/Modules/ExternalProject
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/ExternalProject')
-rw-r--r--Modules/ExternalProject/RepositoryInfo.txt.in1
-rw-r--r--Modules/ExternalProject/captured_process_setup.cmake55
-rw-r--r--Modules/ExternalProject/cfgcmd.txt.in1
-rw-r--r--Modules/ExternalProject/copydir.cmake.in10
-rw-r--r--Modules/ExternalProject/customcommand.cmake.in8
-rw-r--r--Modules/ExternalProject/customcommand_preamble.cmake.in8
-rw-r--r--Modules/ExternalProject/download.cmake.in205
-rw-r--r--Modules/ExternalProject/extractfile.cmake.in73
-rw-r--r--Modules/ExternalProject/gitclone.cmake.in93
-rw-r--r--Modules/ExternalProject/gitupdate.cmake.in315
-rw-r--r--Modules/ExternalProject/hgclone.cmake.in59
-rw-r--r--Modules/ExternalProject/hgupdate.cmake.in24
-rw-r--r--Modules/ExternalProject/mkdirs.cmake.in19
-rw-r--r--Modules/ExternalProject/verify.cmake.in58
14 files changed, 0 insertions, 929 deletions
diff --git a/Modules/ExternalProject/RepositoryInfo.txt.in b/Modules/ExternalProject/RepositoryInfo.txt.in
deleted file mode 100644
index d82f04c724..0000000000
--- a/Modules/ExternalProject/RepositoryInfo.txt.in
+++ /dev/null
@@ -1 +0,0 @@
-@repo_info_content@
diff --git a/Modules/ExternalProject/captured_process_setup.cmake b/Modules/ExternalProject/captured_process_setup.cmake
deleted file mode 100644
index 9c8abb1203..0000000000
--- a/Modules/ExternalProject/captured_process_setup.cmake
+++ /dev/null
@@ -1,55 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-if(quiet)
- set(capture_output
- OUTPUT_VARIABLE out_var
- ERROR_VARIABLE out_var
- OUTPUT_STRIP_TRAILING_WHITESPACE
- ERROR_STRIP_TRAILING_WHITESPACE
- )
- set(capture_error_only
- ERROR_VARIABLE out_var
- ERROR_STRIP_TRAILING_WHITESPACE
- )
-else()
- unset(capture_output)
- unset(capture_error_only)
-endif()
-
-set(out_var "")
-set(accumulated_output "")
-
-macro(_ep_message_quiet_capture mode)
- if("${mode}" STREQUAL "FATAL_ERROR")
- string(JOIN "" detail "${ARGN}")
- if(NOT detail STREQUAL "" AND NOT accumulated_output STREQUAL "")
- string(PREPEND detail "\n")
- endif()
- message(FATAL_ERROR "${accumulated_output}${detail}")
- endif()
-
- if(quiet)
- if("${mode}" MATCHES "WARNING")
- # We can't provide the full CMake backtrace, but we can at least record
- # the warning message with a sensible prefix
- string(APPEND accumulated_output "${mode}: ")
- endif()
- string(APPEND accumulated_output "${ARGN}\n")
- else()
- message(${mode} ${ARGN})
- endif()
-endmacro()
-
-macro(_ep_accumulate_captured_output)
- if(NOT "${out_var}" STREQUAL "")
- string(APPEND accumulated_output "${out_var}\n")
- endif()
-endmacro()
-
-macro(_ep_command_check_result result)
- _ep_accumulate_captured_output()
- if(result)
- _ep_message_quiet_capture(FATAL_ERROR ${ARGN})
- endif()
-endmacro()
diff --git a/Modules/ExternalProject/cfgcmd.txt.in b/Modules/ExternalProject/cfgcmd.txt.in
deleted file mode 100644
index b3f09efc8d..0000000000
--- a/Modules/ExternalProject/cfgcmd.txt.in
+++ /dev/null
@@ -1 +0,0 @@
-cmd='@cmd@'
diff --git a/Modules/ExternalProject/copydir.cmake.in b/Modules/ExternalProject/copydir.cmake.in
deleted file mode 100644
index 5dd3891c3f..0000000000
--- a/Modules/ExternalProject/copydir.cmake.in
+++ /dev/null
@@ -1,10 +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)
-
-file(REMOVE_RECURSE "@to_dir@")
-
-# Copy the _contents_ of the source dir into the destination dir, hence the
-# trailing slash on the from_dir
-file(COPY "@from_dir@/" DESTINATION "@to_dir@")
diff --git a/Modules/ExternalProject/customcommand.cmake.in b/Modules/ExternalProject/customcommand.cmake.in
deleted file mode 100644
index d41f31b83e..0000000000
--- a/Modules/ExternalProject/customcommand.cmake.in
+++ /dev/null
@@ -1,8 +0,0 @@
-
-execute_process(
- COMMAND @this_command@
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE result
- ${capture_output}
-)
-_ep_command_check_result(result)
diff --git a/Modules/ExternalProject/customcommand_preamble.cmake.in b/Modules/ExternalProject/customcommand_preamble.cmake.in
deleted file mode 100644
index ae4fec66cd..0000000000
--- a/Modules/ExternalProject/customcommand_preamble.cmake.in
+++ /dev/null
@@ -1,8 +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)
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()
diff --git a/Modules/ExternalProject/extractfile.cmake.in b/Modules/ExternalProject/extractfile.cmake.in
deleted file mode 100644
index d46de73408..0000000000
--- a/Modules/ExternalProject/extractfile.cmake.in
+++ /dev/null
@@ -1,73 +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)
-
-# Make file names absolute:
-#
-get_filename_component(filename "@filename@" ABSOLUTE)
-get_filename_component(directory "@directory@" ABSOLUTE)
-
-_ep_message_quiet_capture(STATUS "extracting...
- src='${filename}'
- dst='${directory}'"
-)
-
-if(NOT EXISTS "${filename}")
- _ep_message_quiet_capture(FATAL_ERROR
- "File to extract does not exist: '${filename}'"
- )
-endif()
-
-# Prepare a space for extracting:
-#
-set(i 1234)
-while(EXISTS "${directory}/../ex-@name@${i}")
- math(EXPR i "${i} + 1")
-endwhile()
-set(ut_dir "${directory}/../ex-@name@${i}")
-file(MAKE_DIRECTORY "${ut_dir}")
-
-# Extract it:
-#
-_ep_message_quiet_capture(STATUS "extracting... [tar @args@]")
-execute_process(COMMAND ${CMAKE_COMMAND} -E tar @args@ ${filename}
- WORKING_DIRECTORY ${ut_dir}
- RESULT_VARIABLE rv
- ${capture_output}
-)
-_ep_accumulate_captured_output()
-
-if(NOT rv EQUAL 0)
- _ep_message_quiet_capture(STATUS "extracting... [error clean up]")
- file(REMOVE_RECURSE "${ut_dir}")
- _ep_message_quiet_capture(FATAL_ERROR "Extract of '${filename}' failed")
-endif()
-
-# Analyze what came out of the tar file:
-#
-_ep_message_quiet_capture(STATUS "extracting... [analysis]")
-file(GLOB contents "${ut_dir}/*")
-list(REMOVE_ITEM contents "${ut_dir}/.DS_Store")
-list(LENGTH contents n)
-if(NOT n EQUAL 1 OR NOT IS_DIRECTORY "${contents}")
- set(contents "${ut_dir}")
-endif()
-
-# Move "the one" directory to the final directory:
-#
-_ep_message_quiet_capture(STATUS "extracting... [rename]")
-file(REMOVE_RECURSE ${directory})
-get_filename_component(contents ${contents} ABSOLUTE)
-file(RENAME ${contents} ${directory})
-
-# Clean up:
-#
-_ep_message_quiet_capture(STATUS "extracting... [clean up]")
-file(REMOVE_RECURSE "${ut_dir}")
-
-_ep_message_quiet_capture(STATUS "extracting... done")
diff --git a/Modules/ExternalProject/gitclone.cmake.in b/Modules/ExternalProject/gitclone.cmake.in
deleted file mode 100644
index edbdd72bde..0000000000
--- a/Modules/ExternalProject/gitclone.cmake.in
+++ /dev/null
@@ -1,93 +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)
-
-if(EXISTS "@gitclone_stampfile@" AND EXISTS "@gitclone_infofile@" AND
- "@gitclone_stampfile@" IS_NEWER_THAN "@gitclone_infofile@")
- if(NOT quiet)
- message(STATUS
- "Avoiding repeated git clone, stamp file is up to date: "
- "'@gitclone_stampfile@'"
- )
- endif()
- return()
-endif()
-
-execute_process(
- COMMAND ${CMAKE_COMMAND} -E rm -rf "@source_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(
- error_code "Failed to remove directory: '@source_dir@'"
-)
-
-# try the clone 3 times in case 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)
- # If you are seeing the following call hang and you have QUIET enabled, try
- # turning QUIET off to show any output immediately. The command may be
- # blocking while waiting for user input (e.g. a password to a SSH key).
- execute_process(
- COMMAND "@git_EXECUTABLE@" @git_options@
- clone @git_clone_options@ "@git_repository@" "@src_name@"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- if(NOT "${out_var}" STREQUAL "")
- string(APPEND accumulated_output "${out_var}\n")
- endif()
- math(EXPR number_of_tries "${number_of_tries} + 1")
-endwhile()
-if(number_of_tries GREATER 1)
- set(msg "Had to git clone more than once: ${number_of_tries} times.")
- if(quiet)
- string(APPEND accumulated_output "${msg}\n")
- else()
- message(STATUS "${msg}")
- endif()
-endif()
-_ep_command_check_result(
- error_code "Failed to clone repository: '@git_repository@'"
-)
-
-execute_process(
- COMMAND "@git_EXECUTABLE@" @git_options@
- checkout "@git_tag@" @git_checkout_explicit--@
- WORKING_DIRECTORY "@work_dir@/@src_name@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(error_code "Failed to checkout tag: '@git_tag@'")
-
-set(init_submodules @init_submodules@)
-if(init_submodules)
- execute_process(
- COMMAND "@git_EXECUTABLE@" @git_options@
- submodule update @git_submodules_recurse@ --init @git_submodules@
- WORKING_DIRECTORY "@work_dir@/@src_name@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_command_check_result(
- error_code "Failed to update submodules in: '@work_dir@/@src_name@'"
- )
-endif()
-
-# Complete success, update the script-last-run stamp file:
-#
-execute_process(
- COMMAND ${CMAKE_COMMAND} -E copy "@gitclone_infofile@" "@gitclone_stampfile@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(
- error_code "Failed to copy script-last-run stamp file: '@gitclone_stampfile@'"
-)
diff --git a/Modules/ExternalProject/gitupdate.cmake.in b/Modules/ExternalProject/gitupdate.cmake.in
deleted file mode 100644
index fc2a6aba5e..0000000000
--- a/Modules/ExternalProject/gitupdate.cmake.in
+++ /dev/null
@@ -1,315 +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(get_hash_for_ref ref out_var err_var)
- execute_process(
- COMMAND "@git_EXECUTABLE@" rev-parse "${ref}"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- OUTPUT_VARIABLE ref_hash
- ERROR_VARIABLE error_msg
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if(error_code)
- set(${out_var} "" PARENT_SCOPE)
- else()
- set(${out_var} "${ref_hash}" PARENT_SCOPE)
- endif()
- set(${err_var} "${error_msg}" PARENT_SCOPE)
-endfunction()
-
-get_hash_for_ref(HEAD head_sha error_msg)
-if(head_sha STREQUAL "")
- message(FATAL_ERROR "Failed to get the hash for HEAD:\n${error_msg}")
-endif()
-
-
-execute_process(
- COMMAND "@git_EXECUTABLE@" show-ref "@git_tag@"
- WORKING_DIRECTORY "@work_dir@"
- OUTPUT_VARIABLE show_ref_output
-)
-if(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/remotes/")
- # Given a full remote/branch-name and we know about it already. Since
- # branches can move around, we always have to fetch.
- set(fetch_required YES)
- set(checkout_name "@git_tag@")
-
-elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/tags/")
- # Given a tag name that we already know about. We don't know if the tag we
- # have matches the remote though (tags can move), so we should fetch.
- set(fetch_required YES)
- set(checkout_name "@git_tag@")
-
- # Special case to preserve backward compatibility: if we are already at the
- # same commit as the tag we hold locally, don't do a fetch and assume the tag
- # hasn't moved on the remote.
- # FIXME: We should provide an option to always fetch for this case
- get_hash_for_ref("@git_tag@" tag_sha error_msg)
- if(tag_sha STREQUAL head_sha)
- _ep_message_quiet_capture(VERBOSE "Already at requested tag: ${tag_sha}")
- return()
- endif()
-
-elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/heads/")
- # Given a branch name without any remote and we already have a branch by that
- # name. We might already have that branch checked out or it might be a
- # different branch. It isn't safe to use a bare branch name without the
- # remote, so do a fetch and replace the ref with one that includes the remote.
- set(fetch_required YES)
- set(checkout_name "@git_remote_name@/@git_tag@")
-
-else()
- get_hash_for_ref("@git_tag@" tag_sha error_msg)
- if(tag_sha STREQUAL head_sha)
- # Have the right commit checked out already
- _ep_message_quiet_capture(VERBOSE "Already at requested ref: ${tag_sha}")
- return()
-
- elseif(tag_sha STREQUAL "")
- # We don't know about this ref yet, so we have no choice but to fetch.
- # We deliberately swallow any error message at the default log level
- # because it can be confusing for users to see a failed git command.
- # That failure is being handled here, so it isn't an error.
- set(fetch_required YES)
- set(checkout_name "@git_tag@")
- if(NOT error_msg STREQUAL "")
- _ep_message_quiet_capture(VERBOSE "${error_msg}")
- endif()
-
- else()
- # We have the commit, so we know we were asked to find a commit hash
- # (otherwise it would have been handled further above), but we don't
- # have that commit checked out yet
- set(fetch_required NO)
- set(checkout_name "@git_tag@")
- if(NOT error_msg STREQUAL "")
- _ep_message_quiet_capture(WARNING "${error_msg}")
- endif()
-
- endif()
-endif()
-
-if(fetch_required)
- _ep_message_quiet_capture(VERBOSE "Fetching latest from the remote @git_remote_name@")
- execute_process(
- COMMAND "@git_EXECUTABLE@" fetch --tags --force "@git_remote_name@"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_command_check_result(
- error_code "Failed to fetch from the remote @git_remote_name@'"
- )
-endif()
-
-set(git_update_strategy "@git_update_strategy@")
-if(git_update_strategy STREQUAL "")
- # Backward compatibility requires REBASE as the default behavior
- set(git_update_strategy REBASE)
-endif()
-
-if(git_update_strategy MATCHES "^REBASE(_CHECKOUT)?$")
- # Asked to potentially try to rebase first, maybe with fallback to checkout.
- # We can't if we aren't already on a branch and we shouldn't if that local
- # branch isn't tracking the one we want to checkout.
- execute_process(
- COMMAND "@git_EXECUTABLE@" symbolic-ref -q HEAD
- WORKING_DIRECTORY "@work_dir@"
- OUTPUT_VARIABLE current_branch
- OUTPUT_STRIP_TRAILING_WHITESPACE
- # Don't test for an error. If this isn't a branch, we get a non-zero error
- # code but empty output.
- )
-
- if(current_branch STREQUAL "")
- # Not on a branch, checkout is the only sensible option since any rebase
- # would always fail (and backward compatibility requires us to checkout in
- # this situation)
- set(git_update_strategy CHECKOUT)
-
- else()
- execute_process(
- COMMAND "@git_EXECUTABLE@" for-each-ref
- "--format='%(upstream:short)'" "${current_branch}"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code # There is no error if no upstream is set
- OUTPUT_VARIABLE upstream_branch
- OUTPUT_STRIP_TRAILING_WHITESPACE
- ${capture_error_only}
- )
- _ep_command_check_result(error_code)
- if(NOT upstream_branch STREQUAL checkout_name)
- # Not safe to rebase when asked to checkout a different branch to the one
- # we are tracking. If we did rebase, we could end up with arbitrary
- # commits added to the ref we were asked to checkout if the current local
- # branch happens to be able to rebase onto the target branch. There would
- # be no error message and the user wouldn't know this was occurring.
- set(git_update_strategy CHECKOUT)
- endif()
-
- endif()
-elseif(NOT git_update_strategy STREQUAL "CHECKOUT")
- _ep_message_quiet_capture(FATAL_ERROR
- "Unsupported git update strategy: ${git_update_strategy}"
- )
-endif()
-
-
-# Check if stash is needed
-execute_process(
- COMMAND "@git_EXECUTABLE@" status --porcelain
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- OUTPUT_VARIABLE repo_status
- ${capture_error_only}
-)
-_ep_command_check_result(error_code "Failed to get the status")
-string(LENGTH "${repo_status}" need_stash)
-
-# If not in clean state, stash changes in order to be able to perform a
-# rebase or checkout without losing those changes permanently
-if(need_stash)
- execute_process(
- COMMAND "@git_EXECUTABLE@" stash save @git_stash_save_options@
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_command_check_result(error_code)
-endif()
-
-if(git_update_strategy STREQUAL "CHECKOUT")
- execute_process(
- COMMAND "@git_EXECUTABLE@" checkout "${checkout_name}"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_command_check_result(error_code)
-else()
- execute_process(
- COMMAND "@git_EXECUTABLE@" rebase "${checkout_name}"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- OUTPUT_VARIABLE rebase_output
- ERROR_VARIABLE rebase_output
- )
- if(error_code)
- # Rebase failed, undo the rebase attempt before continuing
- execute_process(
- COMMAND "@git_EXECUTABLE@" rebase --abort
- WORKING_DIRECTORY "@work_dir@"
- )
-
- if(NOT git_update_strategy STREQUAL "REBASE_CHECKOUT")
- # Not allowed to do a checkout as a fallback, so cannot proceed
- if(need_stash)
- execute_process(
- COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
- WORKING_DIRECTORY "@work_dir@"
- )
- endif()
- _ep_message_quiet_capture(FATAL_ERROR
- "\nFailed to rebase in: '@work_dir@'."
- "\nOutput from the attempted rebase follows:"
- "\n${rebase_output}"
- "\n\nYou will have to resolve the conflicts manually"
- )
- endif()
-
- # Fall back to checkout. We create an annotated tag so that the user
- # can manually inspect the situation and revert if required.
- # We can't log the failed rebase output because MSVC sees it and
- # intervenes, causing the build to fail even though it completes.
- # Write it to a file instead.
- string(TIMESTAMP tag_timestamp "%Y%m%dT%H%M%S" UTC)
- set(tag_name _cmake_ExternalProject_moved_from_here_${tag_timestamp}Z)
- set(error_log_file ${CMAKE_CURRENT_LIST_DIR}/rebase_error_${tag_timestamp}Z.log)
- file(WRITE ${error_log_file} "${rebase_output}")
- _ep_message_quiet_capture(WARNING
- "Rebase failed, output has been saved to ${error_log_file}"
- "\nFalling back to checkout, previous commit tagged as ${tag_name}"
- )
- execute_process(
- COMMAND "@git_EXECUTABLE@" tag -a
- -m "ExternalProject attempting to move from here to ${checkout_name}"
- ${tag_name}
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_command_check_result(error_code)
-
- execute_process(
- COMMAND "@git_EXECUTABLE@" checkout "${checkout_name}"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_command_check_result(error_code)
- endif()
-endif()
-
-if(need_stash)
- # Put back the stashed changes
- execute_process(
- COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_accumulate_captured_output()
- if(error_code)
- # Stash pop --index failed: Try again dropping the index
- execute_process(
- COMMAND "@git_EXECUTABLE@" reset --hard --quiet
- WORKING_DIRECTORY "@work_dir@"
- ${capture_output}
- )
- _ep_accumulate_captured_output()
- execute_process(
- COMMAND "@git_EXECUTABLE@" stash pop --quiet
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_accumulate_captured_output()
- if(error_code)
- # Stash pop failed: Restore previous state.
- execute_process(
- COMMAND "@git_EXECUTABLE@" reset --hard --quiet ${head_sha}
- WORKING_DIRECTORY "@work_dir@"
- ${capture_output}
- )
- _ep_accumulate_captured_output()
- execute_process(
- COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
- WORKING_DIRECTORY "@work_dir@"
- ${capture_output}
- )
- _ep_accumulate_captured_output()
- _ep_message_quiet_capture(FATAL_ERROR
- "Failed to unstash changes in: '@work_dir@'.\n"
- "You will have to resolve the conflicts manually"
- )
- endif()
- endif()
-endif()
-
-set(init_submodules "@init_submodules@")
-if(init_submodules)
- execute_process(
- COMMAND "@git_EXECUTABLE@" submodule update @git_submodules_recurse@ --init @git_submodules@
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
- )
- _ep_command_check_result(error_code)
-endif()
diff --git a/Modules/ExternalProject/hgclone.cmake.in b/Modules/ExternalProject/hgclone.cmake.in
deleted file mode 100644
index 9a574d201c..0000000000
--- a/Modules/ExternalProject/hgclone.cmake.in
+++ /dev/null
@@ -1,59 +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)
-
-if(EXISTS "@hgclone_stampfile@" AND EXISTS "@hgclone_infofile@" AND
- "@hgclone_stampfile@" IS_NEWER_THAN "@hgclone_infofile@")
- if(NOT quiet)
- message(STATUS
- "Avoiding repeated hg clone, stamp file is up to date: "
- "'@hgclone_stampfile@'"
- )
- endif()
- return()
-endif()
-
-execute_process(
- COMMAND ${CMAKE_COMMAND} -E rm -rf "@source_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(
- error_code "Failed to remove directory: '@source_dir@'"
-)
-
-execute_process(
- COMMAND "@hg_EXECUTABLE@" clone -U "@hg_repository@" "@src_name@"
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(
- error_code "Failed to clone repository: '@hg_repository@'"
-)
-
-execute_process(
- COMMAND "@hg_EXECUTABLE@" update @hg_tag@
- WORKING_DIRECTORY "@work_dir@/@src_name@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(
- error_code "Failed to checkout tag: '@hg_tag@'"
-)
-
-# Complete success, update the script-last-run stamp file:
-#
-execute_process(
- COMMAND ${CMAKE_COMMAND} -E copy "@hgclone_infofile@" "@hgclone_stampfile@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(
- error_code "Failed to copy script-last-run stamp file: '@hgclone_stampfile@'"
-)
diff --git a/Modules/ExternalProject/hgupdate.cmake.in b/Modules/ExternalProject/hgupdate.cmake.in
deleted file mode 100644
index a82a819f47..0000000000
--- a/Modules/ExternalProject/hgupdate.cmake.in
+++ /dev/null
@@ -1,24 +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.19)
-
-set(quiet "@quiet@")
-set(script_dir "@CMAKE_CURRENT_FUNCTION_LIST_DIR@/ExternalProject")
-include(${script_dir}/captured_process_setup.cmake)
-
-execute_process(
- COMMAND "@hg_EXECUTABLE@" pull
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(error_code)
-
-execute_process(
- COMMAND "@hg_EXECUTABLE@" update @hg_tag@
- WORKING_DIRECTORY "@work_dir@"
- RESULT_VARIABLE error_code
- ${capture_output}
-)
-_ep_command_check_result(error_code)
diff --git a/Modules/ExternalProject/mkdirs.cmake.in b/Modules/ExternalProject/mkdirs.cmake.in
deleted file mode 100644
index 73e80fad29..0000000000
--- a/Modules/ExternalProject/mkdirs.cmake.in
+++ /dev/null
@@ -1,19 +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)
-
-file(MAKE_DIRECTORY
- "@source_dir@"
- "@binary_dir@"
- "@install_dir@"
- "@tmp_dir@"
- "@stamp_dir@"
- "@download_dir@"
- "@log_dir@"
-)
-
-set(configSubDirs @CMAKE_CONFIGURATION_TYPES@)
-foreach(subDir IN LISTS configSubDirs)
- file(MAKE_DIRECTORY "@stamp_dir@/${subDir}")
-endforeach()
diff --git a/Modules/ExternalProject/verify.cmake.in b/Modules/ExternalProject/verify.cmake.in
deleted file mode 100644
index cd34ba95ea..0000000000
--- a/Modules/ExternalProject/verify.cmake.in
+++ /dev/null
@@ -1,58 +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)
-
-if("@LOCAL@" STREQUAL "")
- message(FATAL_ERROR "LOCAL can't be empty")
-endif()
-
-if(NOT EXISTS "@LOCAL@")
- message(FATAL_ERROR "File not found: @LOCAL@")
-endif()
-
-function(do_verify)
- if("@ALGO@" STREQUAL "")
- _ep_message_quiet_capture(WARNING
- "File will not be verified since no URL_HASH specified"
- )
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
- return()
- endif()
-
- if("@EXPECT_VALUE@" STREQUAL "")
- _ep_message_quiet_capture(FATAL_ERROR "EXPECT_VALUE can't be empty")
- endif()
-
- _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@")
- _ep_message_quiet_capture(FATAL_ERROR
-"error: @ALGO@ hash of
- @LOCAL@
-does not match expected value
- expected: '@EXPECT_VALUE@'
- actual: '${actual_value}'
-")
- endif()
-
- _ep_message_quiet_capture(STATUS "verifying file... done")
- set(accumulated_output "${accumulated_output}" PARENT_SCOPE)
-endfunction()
-
-do_verify()
-
-set(extract_script "@extract_script_filename@")
-if(NOT "${extract_script}" STREQUAL "")
- include("${extract_script}")
-endif()