diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2023-09-21 11:56:20 (GMT) |
---|---|---|
committer | Craig Scott <craig.scott@crascit.com> | 2023-09-30 05:59:22 (GMT) |
commit | 872daff159d8c7b3bfdabe3918c2832539168c91 (patch) | |
tree | 7bffd2d153cdaa449e395b2d6a0dacfae5f568dc /Modules | |
parent | 4ac624debc11e3b87d53a34ccfe3e25ff9c5a426 (diff) | |
download | CMake-872daff159d8c7b3bfdabe3918c2832539168c91.zip CMake-872daff159d8c7b3bfdabe3918c2832539168c91.tar.gz CMake-872daff159d8c7b3bfdabe3918c2832539168c91.tar.bz2 |
ExternalProject: declare byproducts for the download step
This can surface a conflict where two projects download the same file
and get scheduled against each other.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/ExternalProject.cmake | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 36eb70e..f43f48d 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -2825,6 +2825,7 @@ function(_ep_add_download_command name) set(comment) set(work_dir) set(extra_repo_info) + set(byproduct_file) if(cmd_set) set(work_dir ${download_dir}) @@ -3105,14 +3106,16 @@ hash=${hash} get_filename_component(fname "${fname}" NAME) else() # Fall back to a default file name. The actual file name does not - # matter because it is used only internally and our extraction tool - # inspects the file content directly. If it turns out the wrong URL - # was given that will be revealed during the build which is an easier - # place for users to diagnose than an error here anyway. - set(fname "archive.tar") + # matter as long as it doesn't conflict with other projects because + # it is used only internally and our extraction tool inspects the + # file content directly. If it turns out the wrong URL was given + # that will be revealed during the build which is an easier place for + # users to diagnose than an error here anyway. + set(fname "${name}-archive.tar") endif() string(REPLACE ";" "-" fname "${fname}") set(file ${download_dir}/${fname}) + set(byproduct_file "${download_dir}/${fname}") get_property(timeout TARGET ${name} PROPERTY _EP_TIMEOUT) get_property(inactivity_timeout TARGET ${name} @@ -3289,6 +3292,7 @@ hash=${hash} COMMAND ${__cmdQuoted} WORKING_DIRECTORY \${work_dir} DEPENDS \${depends} + BYPRODUCTS \${byproduct_file} DEPENDEES mkdir ${log} ${uses_terminal} |