summaryrefslogtreecommitdiffstats
path: root/Modules/ExternalProject-download.cmake.in
Commit message (Collapse)AuthorAgeFilesLines
* Revert ExternalProject and FetchContent refactoringCraig Scott2021-03-091-0/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | Refactoring of the ExternalProject and FetchContent modules moved the commands into CMake scripts. This broke custom commands that used shell redirection or special build tool variables of the form $(MakeVar). Undo the sequence of commits that performed this refactoring and follow-up fixes associated with it. The following commits are reverted by this change: 4f3d1abbb4 (ExternalProject: Refactor pre-configure steps to support no-target uses, 2021-02-05) 17e5516e60 (FetchContent: Invoke steps directly and avoid a separate sub-build, 2021-01-29) bd876f3849 (FetchContent: Restore patch command support, 2021-02-18) 404cddb7bb (ExternalProject: Fix misuse of IS_NEWER_THAN in timestamp checks, 2021-02-21) b0da671243 (FetchContent: Don't update timestamps if files don't change, 2021-02-18) Fixes: #21892
* ExternalProject: Refactor pre-configure steps to support no-target usesCraig Scott2021-02-041-173/+0
| | | | | | | | | | | | | | | | | | | | | | The mkdir, download, update and patch steps are used by FetchContent during the configure phase of the main build. Because these steps need a target, this has so far required a sub-build to be set up. The changes here factor out the preparation of the scripts from the creation of the targets, allowing future work to leverage these steps without a sub-build (see #21703). As part of the refactoring, some rationalisation of the stamp files, repository info files and script names was done to make things more consistent between download methods and step implementations. Every download method now records its own specific repository info in a file and that file is a dependency of the download step. The source directory is also written to that file, so if the SOURCE_DIR changes, the download will be retriggered (the existing implementation fails in this scenario). Each download method now also has just one driver script that implements the whole step (it may pull in other scripts to do its task though). The patch step gained support for USES_TERMINAL as a result of generalising the implementation for custom commands. Fixes: #21748
* ExternalProject: add INACTIVITY_TIMEOUT argumentThomas Bernard2020-08-181-1/+3
| | | | | | | In order to abort transfers on slow connections the ExternalProject command support passing the INACTIVITY_TIMEOUT argument. Fixes: #20992
* ExternalProject: retry download on recoverable errorsThomas Bernard2020-08-111-31/+40
| | | | | | In order to shorten the download failure of ExternalProject download steps, a download retry is only done when a recoverable network error is encountered.
* ExternalProject: Add support for NETRC and NETRC_FILE suboptionShane Parris2017-10-181-0/+2
|
* Simplify CMake per-source license noticesBrad King2016-09-271-13/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* ExternalProject: Add HTTP_HEADERRuslan Baratov2016-09-191-0/+1
|
* ExternalProject: Add HTTP_{USERNAME,PASSWORD}Ruslan Baratov2016-09-151-0/+1
|
* ExternalProject: Add support for multiple alternative URLsLars Schmertmann2016-07-131-38/+46
| | | | | | | Now it is possible to pass multiple URLs as a list that will be tried in and foreach(). So it will try next URL if the previous failed. Fixes #15749.
* ExternalProject: Re-implement download logic as a dedicated scriptRuslan Baratov2016-05-191-0/+161
Move the content to a `ExternalProject-download.cmake.in` file and use `configure_file` to generate the final script. Retry logic was not working before because similar script trigger FATAL_ERROR if 'file(DOWNLOAD ...)' exits with nonzero 'status_code'. FATAL_ERROR makes the whole chain of commands stop and '_ep_write_verifyfile_script' retry logic was not used in fact. Default retry number set to 5 with pauses 0, 5, 5, 15, 60 seconds. Some space left for future improvements if needed (90, 300, 1200=20min). Can be controlled by user.