diff --git a/Toolchain/BuildCMake.sh b/Toolchain/BuildCMake.sh index 28da6098d7..56b41ab58c 100755 --- a/Toolchain/BuildCMake.sh +++ b/Toolchain/BuildCMake.sh @@ -22,6 +22,23 @@ fi [ -z "$MAKEJOBS" ] && MAKEJOBS=$($NPROC) +check_sha() { + if [ $# -ne 2 ]; then + error "Usage: check_sha FILE EXPECTED_HASH" + return 1 + fi + + FILE="${1}" + EXPECTED_HASH="${2}" + + if [ "$SYSTEM_NAME" = "Darwin" ]; then + SEEN_HASH="$(shasum -a 256 "${FILE}" | cut -d " " -f 1)" + else + SEEN_HASH="$(sha256sum "${FILE}" | cut -d " " -f 1)" + fi + test "${EXPECTED_HASH}" = "${SEEN_HASH}" +} + # Note: Update this alongside Meta/CMake/cmake-version.cmake CMAKE_VERSION=3.25.1 CMAKE_ARCHIVE_SHA256=1c511d09516af493694ed9baf13c55947a36389674d657a2d5e0ccedc6b291d8 @@ -37,7 +54,7 @@ pushd "$DIR"/Tarballs echo "${CMAKE_ARCHIVE} already exists, not downloading archive" fi - if ! sha256sum --status -c <(echo "${CMAKE_ARCHIVE_SHA256}" "${CMAKE_ARCHIVE}"); then + if ! check_sha "${CMAKE_ARCHIVE}" "${CMAKE_ARCHIVE_SHA256}"; then echo "CMake archive SHA256 sum mismatch, please run script again" rm -f "${CMAKE_ARCHIVE}" exit 1