@ -89,37 +89,49 @@ endif()
set ( _cmake_package_dest ${ CPACK_BINARY_DIR } / ${ CPACK_CMAKE_PACKAGE_FILE } )
string ( REPLACE "." ";" _version_componets "${CPACK_DESIRED_CMAKE_VERSION}" )
list ( GET _version_componets 0 _major_version )
list ( GET _version_componets 1 _minor_version )
set ( _url_version_tag "v${_major_version}.${_minor_version}" )
set ( _package_url "https://cmake.org/files/${_url_version_tag}/${CPACK_CMAKE_PACKAGE_FILE}" )
message ( STATUS "Downloading CMake ${CPACK_DESIRED_CMAKE_VERSION} for packaging..." )
download_file (
U R L $ { _ p a c k a g e _ u r l }
T A R G E T _ F I L E $ { _ c m a k e _ p a c k a g e _ d e s t }
E X P E C T E D _ H A S H $ { C P A C K _ C M A K E _ P A C K A G E _ H A S H }
R E S U L T S _ r e s u l t s
)
list ( GET _results 0 _status_code )
if ( EXISTS ${ _cmake_package_dest } )
file ( SHA256 ${ _cmake_package_dest } hash_of_downloaded_file )
if ( NOT "${hash_of_downloaded_file}" STREQUAL "${CPACK_CMAKE_PACKAGE_HASH}" )
message ( STATUS "CMake ${CPACK_DESIRED_CMAKE_VERSION} found at ${_cmake_package_dest} but expected hash missmatches, re-downloading..." )
file ( REMOVE ${ _cmake_package_dest } )
else ( )
message ( STATUS "CMake ${CPACK_DESIRED_CMAKE_VERSION} found" )
endif ( )
endif ( )
if ( NOT EXISTS ${ _cmake_package_dest } )
# d o w n l o a d i t
string ( REPLACE "." ";" _version_componets "${CPACK_DESIRED_CMAKE_VERSION}" )
list ( GET _version_componets 0 _major_version )
list ( GET _version_componets 1 _minor_version )
set ( _url_version_tag "v${_major_version}.${_minor_version}" )
set ( _package_url "https://cmake.org/files/${_url_version_tag}/${CPACK_CMAKE_PACKAGE_FILE}" )
message ( STATUS "Downloading CMake ${CPACK_DESIRED_CMAKE_VERSION} for packaging..." )
download_file (
U R L $ { _ p a c k a g e _ u r l }
T A R G E T _ F I L E $ { _ c m a k e _ p a c k a g e _ d e s t }
E X P E C T E D _ H A S H $ { C P A C K _ C M A K E _ P A C K A G E _ H A S H }
R E S U L T S _ r e s u l t s
)
list ( GET _results 0 _status_code )
if ( ${ _status_code } EQUAL 0 AND EXISTS ${ _cmake_package_dest } )
message ( STATUS "CMake ${CPACK_DESIRED_CMAKE_VERSION} found" )
else ( )
file ( REMOVE ${ _cmake_package_dest } )
list ( REMOVE_AT _results 0 )
if ( ${ _status_code } EQUAL 0 AND EXISTS ${ _cmake_package_dest } )
message ( STATUS "Package found and verified!" )
else ( )
file ( REMOVE ${ _cmake_package_dest } )
list ( REMOVE_AT _results 0 )
set ( _error_message "An error occurred, code ${_status_code}. URL ${_package_url} - ${_results}" )
set ( _error_message "An error occurred, code ${_status_code}. URL ${_package_url} - ${_results}" )
if ( ${ _status_code } EQUAL 1 )
string ( APPEND _error_message
" P l e a s e d o u b l e c h e c k t h e C P A C K _ C M A K E _ P A C K A G E _ F I L E a n d "
" C P A C K _ C M A K E _ P A C K A G E _ H A S H p r o p e r t i e s b e f o r e t r y i n g a g a i n . " )
endif ( )
if ( ${ _status_code } EQUAL 1 )
string ( APPEND _error_message
" P l e a s e d o u b l e c h e c k t h e C P A C K _ C M A K E _ P A C K A G E _ F I L E a n d "
" C P A C K _ C M A K E _ P A C K A G E _ H A S H p r o p e r t i e s b e f o r e t r y i n g a g a i n . " )
message ( FATAL_ERROR ${ _error_message } )
endif ( )
message ( FATAL_ERROR ${ _error_message } )
endif ( )
install ( FILES ${ _cmake_package_dest }