diff options
author | Craig Scott <craig.scott@crascit.com> | 2022-01-22 22:36:14 +1100 |
---|---|---|
committer | Craig Scott <craig.scott@crascit.com> | 2022-01-22 23:00:26 +1100 |
commit | 5fbac2bb24250eeeb64e2fb4868dcf976ee29d64 (patch) | |
tree | 6339f02b8edee2bf7b9455fca4b6f505756c68a4 /Modules/ExternalProject/hgclone.cmake.in | |
parent | 8feaa41ee90166ca69afebcd588b62c11f13e1a4 (diff) | |
download | cmake-5fbac2bb24250eeeb64e2fb4868dcf976ee29d64.tar.gz |
ExternalProject: Move inline scripts to separate files
This makes the scripts easier to work on, since the separate files
don't require the extra level of escaping that the inlined code did.
This also means the scripts can be rendered with appropriate
syntax highlighting in IDEs, etc.
Diffstat (limited to 'Modules/ExternalProject/hgclone.cmake.in')
-rw-r--r-- | Modules/ExternalProject/hgclone.cmake.in | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Modules/ExternalProject/hgclone.cmake.in b/Modules/ExternalProject/hgclone.cmake.in new file mode 100644 index 0000000000..e2b55ba423 --- /dev/null +++ b/Modules/ExternalProject/hgclone.cmake.in @@ -0,0 +1,49 @@ +# 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) + +if(EXISTS "@hgclone_stampfile@" AND EXISTS "@hgclone_infofile@" AND + "@hgclone_stampfile@" IS_NEWER_THAN "@hgclone_infofile@") + message(STATUS + "Avoiding repeated hg clone, stamp file is up to date: " + "'@hgclone_stampfile@'" + ) + return() +endif() + +execute_process( + COMMAND ${CMAKE_COMMAND} -E rm -rf "@source_dir@" + RESULT_VARIABLE error_code +) +if(error_code) + message(FATAL_ERROR "Failed to remove directory: '@source_dir@'") +endif() + +execute_process( + COMMAND "@hg_EXECUTABLE@" clone -U "@hg_repository@" "@src_name@" + WORKING_DIRECTORY "@work_dir@" + RESULT_VARIABLE error_code +) +if(error_code) + message(FATAL_ERROR "Failed to clone repository: '@hg_repository@'") +endif() + +execute_process( + COMMAND "@hg_EXECUTABLE@" update @hg_tag@ + WORKING_DIRECTORY "@work_dir@/@src_name@" + RESULT_VARIABLE error_code +) +if(error_code) + message(FATAL_ERROR "Failed to checkout tag: '@hg_tag@'") +endif() + +# Complete success, update the script-last-run stamp file: +# +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy "@hgclone_infofile@" "@hgclone_stampfile@" + RESULT_VARIABLE error_code +) +if(error_code) + message(FATAL_ERROR "Failed to copy script-last-run stamp file: '@hgclone_stampfile@'") +endif() |