diff options
| author | Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> | 2020-07-03 09:36:40 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-03 09:36:40 -0700 |
| commit | 21b56d99293aa364964b99946847986c5276c3b8 (patch) | |
| tree | fc010edec8fbaf0674bc0ceb454a36c753c8b4d8 /scripts | |
| parent | 3d2a7ca33e9997051ea221c30ccd4835989879ad (diff) | |
| download | vcpkg-21b56d99293aa364964b99946847986c5276c3b8.tar.gz vcpkg-21b56d99293aa364964b99946847986c5276c3b8.zip | |
[vcpkg_from_sourceforge] Add retry mirror function (2/2) (#12018)
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/cmake/vcpkg_download_distfile.cmake | 37 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_from_sourceforge.cmake | 71 |
2 files changed, 90 insertions, 18 deletions
diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index 8a8efd205..6ad073803 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -47,7 +47,7 @@ ## * [fontconfig](https://github.com/Microsoft/vcpkg/blob/master/ports/fontconfig/portfile.cmake) ## * [freetype](https://github.com/Microsoft/vcpkg/blob/master/ports/freetype/portfile.cmake) function(vcpkg_download_distfile VAR) - set(options SKIP_SHA512) + set(options SKIP_SHA512 SILENT_EXIT) set(oneValueArgs FILENAME SHA512) set(multipleValuesArgs URLS HEADERS) cmake_parse_arguments(vcpkg_download_distfile "${options}" "${oneValueArgs}" "${multipleValuesArgs}" ${ARGN}) @@ -171,18 +171,31 @@ function(vcpkg_download_distfile VAR) endforeach(url) endif() - if (NOT download_success) - message(FATAL_ERROR - " \n" - " Failed to download file.\n" - " If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment\n" - " variables to \"https://user:password@your-proxy-ip-address:port/\".\n" - " Otherwise, please submit an issue at https://github.com/Microsoft/vcpkg/issues\n") + if (NOT vcpkg_download_distfile_SILENT_EXIT) + if (NOT download_success) + message(FATAL_ERROR + " \n" + " Failed to download file.\n" + " If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment\n" + " variables to \"https://user:password@your-proxy-ip-address:port/\".\n" + " Otherwise, please submit an issue at https://github.com/Microsoft/vcpkg/issues\n") + else() + test_hash("${download_file_path_part}" "downloaded file" "The file may have been corrupted in transit. This can be caused by proxies. If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment variables to \"https://user:password@your-proxy-ip-address:port/\".\n") + get_filename_component(downloaded_file_dir "${downloaded_file_path}" DIRECTORY) + file(MAKE_DIRECTORY "${downloaded_file_dir}") + file(RENAME ${download_file_path_part} ${downloaded_file_path}) + endif() else() - test_hash("${download_file_path_part}" "downloaded file" "The file may have been corrupted in transit. This can be caused by proxies. If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment variables to \"https://user:password@your-proxy-ip-address:port/\".\n") - get_filename_component(downloaded_file_dir "${downloaded_file_path}" DIRECTORY) - file(MAKE_DIRECTORY "${downloaded_file_dir}") - file(RENAME ${download_file_path_part} ${downloaded_file_path}) + if (NOT download_success) + message(WARNING + " \n" + " Failed to download file.\n") + else() + test_hash("${download_file_path_part}" "downloaded file" "The file may have been corrupted in transit. This can be caused by proxies. If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment variables to \"https://user:password@your-proxy-ip-address:port/\".\n") + get_filename_component(downloaded_file_dir "${downloaded_file_path}" DIRECTORY) + file(MAKE_DIRECTORY "${downloaded_file_dir}") + file(RENAME ${download_file_path_part} ${downloaded_file_path}) + endif() endif() endif() set(${VAR} ${downloaded_file_path} PARENT_SCOPE) diff --git a/scripts/cmake/vcpkg_from_sourceforge.cmake b/scripts/cmake/vcpkg_from_sourceforge.cmake index 4df36a81d..258499242 100644 --- a/scripts/cmake/vcpkg_from_sourceforge.cmake +++ b/scripts/cmake/vcpkg_from_sourceforge.cmake @@ -82,7 +82,8 @@ function(vcpkg_from_sourceforge) else() set(URL_PROTOCOL https:) endif() - set(SOURCEFORGE_HOST ${URL_PROTOCOL}//downloads.sourceforge.net/project) + + set(SOURCEFORGE_HOST ${URL_PROTOCOL}//sourceforge.net/projects) string(FIND ${_vdus_REPO} "/" FOUND_ORG) if (NOT FOUND_ORG EQUAL -1) @@ -94,14 +95,14 @@ function(vcpkg_from_sourceforge) endif() set(ORG_NAME ${ORG_NAME}/) else() - set(REPO_NAME ${_vdus_REPO}) - set(ORG_NAME ) + set(ORG_NAME ${_vdus_REPO}/) + set(REPO_NAME ) endif() if (DEFINED _vdus_REF) - set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}${REPO_NAME}/${_vdus_REF}/${_vdus_FILENAME}") + set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}files/${REPO_NAME}/${_vdus_REF}/${_vdus_FILENAME}") else() - set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}${REPO_NAME}/${_vdus_FILENAME}") + set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}${REPO_NAME}/files/${_vdus_FILENAME}") endif() set(NO_REMOVE_ONE_LEVEL ) @@ -111,12 +112,70 @@ function(vcpkg_from_sourceforge) string(SUBSTRING "${_vdus_SHA512}" 0 10 SANITIZED_REF) + list(APPEND SOURCEFORGE_MIRRORS + cfhcable # United States + pilotfiber # New York, NY + gigenet # Chicago, IL + versaweb # Las Vegas, NV + ayera # Modesto, CA + netactuate # Durham, NC + phoenixnap # Tempe, AZ + astuteinternet # Vancouver, BC + freefr # Paris, France + netcologne # Cologne, Germany + deac-riga # Latvia + excellmedia # Hyderabad, India + iweb # Montreal, QC + jaist # Nomi, Japan + jztkft # Mezotur, Hungary + managedway # Detroit, MI + nchc # Taipei, Taiwan + netix # Bulgaria + ufpr # Curitiba, Brazil + tenet # Wynberg, South Africa + ) + + # Try to use auto-select first + set(DOWNLOAD_URL ${URL}/download) + message(STATUS "Trying auto-select mirror...") vcpkg_download_distfile(ARCHIVE - URLS "${URL}" + URLS "${DOWNLOAD_URL}" SHA512 "${_vdus_SHA512}" FILENAME "${_vdus_FILENAME}" + SILENT_EXIT ) + + if (EXISTS ${ARCHIVE}) + set(download_success 1) + endif() + + if (NOT download_success EQUAL 1) + foreach(SOURCEFORGE_MIRROR ${SOURCEFORGE_MIRRORS}) + set(DOWNLOAD_URL ${URL}/download?use_mirror=${SOURCEFORGE_MIRROR}) + message(STATUS "Trying mirror ${SOURCEFORGE_MIRROR}...") + vcpkg_download_distfile(ARCHIVE + URLS "${DOWNLOAD_URL}" + SHA512 "${_vdus_SHA512}" + FILENAME "${_vdus_FILENAME}" + SILENT_EXIT + ) + + if (EXISTS ${ARCHIVE}) + set(download_success 1) + break() + endif() + endforeach() + endif() + if (NOT download_success) + message(FATAL_ERROR [[ + Couldn't download source from any of the sourceforge mirrors, please check your network. + If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment + variables to "http[s]://user:password@your-proxy-ip-address:port/". + Otherwise, please submit an issue at https://github.com/Microsoft/vcpkg/issues + ]]) + endif() + vcpkg_extract_source_archive_ex( OUT_SOURCE_PATH SOURCE_PATH ARCHIVE "${ARCHIVE}" |
