aboutsummaryrefslogtreecommitdiff
path: root/scripts/cmake/vcpkg_from_sourceforge.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/cmake/vcpkg_from_sourceforge.cmake')
-rw-r--r--scripts/cmake/vcpkg_from_sourceforge.cmake46
1 files changed, 41 insertions, 5 deletions
diff --git a/scripts/cmake/vcpkg_from_sourceforge.cmake b/scripts/cmake/vcpkg_from_sourceforge.cmake
index 34b2a12b0..10dc8b623 100644
--- a/scripts/cmake/vcpkg_from_sourceforge.cmake
+++ b/scripts/cmake/vcpkg_from_sourceforge.cmake
@@ -65,6 +65,34 @@
## * [tinyfiledialogs](https://github.com/Microsoft/vcpkg/blob/master/ports/tinyfiledialogs/portfile.cmake)
function(vcpkg_from_sourceforge)
+ macro(check_file_content)
+ if (EXISTS ${ARCHIVE})
+ file(SIZE ${ARCHIVE} DOWNLOAD_FILE_SIZE)
+ if (DOWNLOAD_FILE_SIZE LESS_EQUAL 1024)
+ file(READ ${ARCHIVE} _FILE_CONTENT_)
+ string(FIND "${_FILE_CONTENT_}" "the Sourceforge site is currently in Disaster Recovery mode." OUT_CONTENT)
+ message("OUT_CONTENT: ${OUT_CONTENT}")
+ if (OUT_CONTENT EQUAL -1)
+ set(download_success 1)
+ else()
+ file(REMOVE ${ARCHIVE})
+ endif()
+ endif()
+ endif()
+ endmacro()
+
+ macro(check_file_sha512)
+ file(SHA512 ${ARCHIVE} FILE_HASH)
+ if(NOT FILE_HASH STREQUAL _vdus_SHA512)
+ message(FATAL_ERROR
+ "\nFile does not have expected hash:\n"
+ " File path: [ ${ARCHIVE} ]\n"
+ " Expected hash: [ ${_vdus_SHA512} ]\n"
+ " Actual hash: [ ${FILE_HASH} ]\n"
+ "${CUSTOM_ERROR_ADVICE}\n")
+ endif()
+ endmacro()
+
set(booleanValueArgs DISABLE_SSL NO_REMOVE_ONE_LEVEL)
set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 FILENAME WORKING_DIRECTORY)
set(multipleValuesArgs PATCHES)
@@ -151,13 +179,15 @@ function(vcpkg_from_sourceforge)
message(STATUS "Trying auto-select mirror...")
vcpkg_download_distfile(ARCHIVE
URLS "${DOWNLOAD_URL}"
- SHA512 "${_vdus_SHA512}"
+ SKIP_SHA512
FILENAME "${_vdus_FILENAME}"
SILENT_EXIT
)
-
- if (EXISTS ${ARCHIVE})
- set(download_success 1)
+ check_file_content()
+ if (download_success)
+ check_file_sha512()
+ else()
+ message(STATUS "The default mirror is in Disaster Recovery mode, trying other mirrors...")
endif()
if (NOT download_success EQUAL 1)
@@ -166,13 +196,19 @@ function(vcpkg_from_sourceforge)
message(STATUS "Trying mirror ${SOURCEFORGE_MIRROR}...")
vcpkg_download_distfile(ARCHIVE
URLS "${DOWNLOAD_URL}"
- SHA512 "${_vdus_SHA512}"
+ SKIP_SHA512
FILENAME "${_vdus_FILENAME}"
SILENT_EXIT
)
if (EXISTS ${ARCHIVE})
set(download_success 1)
+ check_file_content()
+ if (download_success)
+ check_file_sha512()
+ else()
+ message(STATUS "Mirror ${SOURCEFORGE_MIRROR} is in Disaster Recovery mode, trying other mirrors...")
+ endif()
break()
endif()
endforeach()