From: <sv...@op...> - 2024-05-06 07:54:25
|
Author: manx Date: Mon May 6 09:54:18 2024 New Revision: 20708 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20708 Log: Merged revision(s) 20707 from trunk/OpenMPT: [Imp] build: download_externals: Verify checksum of all externally downloaded files also for download_externals.sh. [Imp] build: download_externals: Allow multiple alternate URLs for download_externals.sh. [Mod] build: download_externals: Use curl for downloading instead of wget. [Ref] build: download_externals: Cleanup and rewrite. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/build/download_externals.sh Modified: branches/OpenMPT-1.31/build/download_externals.sh ============================================================================== --- branches/OpenMPT-1.31/build/download_externals.sh Sun May 5 17:25:46 2024 (r20707) +++ branches/OpenMPT-1.31/build/download_externals.sh Mon May 6 09:54:18 2024 (r20708) @@ -7,96 +7,83 @@ cd build 2>&1 > /dev/null || true cd .. -function download_and_unpack_tar () { +function download () { set -e - MPT_GET_DESTDIR="$1" - MPT_GET_URL="$2" - MPT_GET_FILE="$3" - MPT_GET_SUBDIR="$4" - if [ ! -f "$3" ]; then - wget "$2" -O "$3" - fi - cd include - if [ -d "$1" ]; then - rm -rf "$1" + MPT_GET_FILE_NAME="$1" + MPT_GET_FILE_SIZE="$2" + MPT_GET_FILE_CHECKSUM="$3" + MPT_GET_URLS="$4" + echo "Checking '$MPT_GET_FILE_NAME' ..." + if [ -f "$MPT_GET_FILE_NAME" ]; then + FILE_SIZE=$(find "$MPT_GET_FILE_NAME" -printf '%s') + if [ ! "x$FILE_SIZE" = "x$MPT_GET_FILE_SIZE" ]; then + echo "$FILE_SIZE does not match expected file size $MPT_GET_FILE_SIZE. Redownloading." + rm -f "$MPT_GET_FILE_NAME" fi - if [ "$4" = "." ]; then - mkdir "$1" - cd "$1" - tar xvaf "../../$3" - cd .. - else - tar xvaf "../$3" - if [ ! "$4" = "$1" ]; then - mv "$4" "$1" - fi - fi - cd .. - return 0 -} - -function download_and_unpack_zip () { - set -e - MPT_GET_DESTDIR="$1" - MPT_GET_URL="$2" - MPT_GET_FILE="$3" - MPT_GET_SUBDIR="$4" - if [ ! -f "$3" ]; then - wget "$2" -O "$3" fi - cd include - if [ -d "$1" ]; then - rm -rf "$1" + if [ -f "$MPT_GET_FILE_NAME" ]; then + FILE_CHECKSUM=$(sha512sum "$MPT_GET_FILE_NAME" | awk '{print $1;}') + if [ ! "x$FILE_CHECKSUM" = "x$MPT_GET_FILE_CHECKSUM" ]; then + echo "$FILE_CHECKSUM does not match expected file checksum $MPT_GET_FILE_CHECKSUM. Redownloading." + rm -f "$MPT_GET_FILE_NAME" fi - if [ "$4" = "." ]; then - mkdir "$1" - cd "$1" - unzip "../../$3" - cd .. - else - unzip "../$3" - if [ ! "$4" = "$1" ]; then - mv "$4" "$1" - fi - fi - cd .. - return 0 -} - -function download_and_unpack_7z () { - set -e - MPT_GET_DESTDIR="$1" - MPT_GET_URL="$2" - MPT_GET_FILE="$3" - MPT_GET_SUBDIR="$4" - if [ ! -f "$3" ]; then - wget "$2" -O "$3" fi - cd include - if [ -d "$1" ]; then - rm -rf "$1" - fi - if [ "$4" = "." ]; then - mkdir "$1" - cd "$1" - 7z x "../../$3" - cd .. - else - 7z x "../$3" - if [ ! "$4" = "$1" ]; then - mv "$4" "$1" + for URL in $MPT_GET_URLS; do + if [ ! -f "$MPT_GET_FILE_NAME" ]; then + echo "Downloading '$MPT_GET_FILE_NAME' from '$URL' ..." + curl -o "$MPT_GET_FILE_NAME" "$URL" + echo "Verifying '$URL' ..." + if [ -f "$MPT_GET_FILE_NAME" ]; then + FILE_SIZE=$(find "$MPT_GET_FILE_NAME" -printf '%s') + if [ ! "x$FILE_SIZE" = "x$MPT_GET_FILE_SIZE" ]; then + echo "$FILE_SIZE does not match expected file size $MPT_GET_FILE_SIZE." + rm -f "$MPT_GET_FILE_NAME" + fi + fi + if [ -f "$MPT_GET_FILE_NAME" ]; then + FILE_CHECKSUM=$(sha512sum "$MPT_GET_FILE_NAME" | awk '{print $1;}') + if [ ! "x$FILE_CHECKSUM" = "x$MPT_GET_FILE_CHECKSUM" ]; then + echo "$FILE_CHECKSUM does not match expected file checksum $MPT_GET_FILE_CHECKSUM." + rm -f "$MPT_GET_FILE_NAME" + fi fi fi - cd .. + done + if [ ! -f "$MPT_GET_FILE_NAME" ]; then + echo "Failed to download '$MPT_GET_FILE_NAME'." + return 1 + fi return 0 } -function download () { +function unpack () { set -e - MPT_GET_URL="$1" + MPT_GET_DESTDIR="$1" MPT_GET_FILE="$2" - if [ ! -f "$2" ]; then - wget "$1" -O "$2" + MPT_GET_SUBDIR="$3" + echo "Extracting '$MPT_GET_DESTDIR' from '$MPT_GET_FILE:$MPT_GET_SUBDIR' ..." + EXTENSION="${MPT_GET_FILE##*.}" + if [ -d "$MPT_GET_DESTDIR" ]; then + rm -rf "$MPT_GET_DESTDIR" + fi + mkdir "$MPT_GET_DESTDIR" + case "$EXTENSION" in + tar) + tar -xvaf "$MPT_GET_FILE" -C "$MPT_GET_DESTDIR" + ;; + zip) + unzip -d "$MPT_GET_DESTDIR" "$MPT_GET_FILE" + ;; + 7z) + 7z x -o"$MPT_GET_DESTDIR" "$MPT_GET_FILE" + ;; + exe) + 7z x -o"$MPT_GET_DESTDIR" "$MPT_GET_FILE" + ;; + esac + if [ ! "$MPT_GET_SUBDIR" = "." ]; then + mv "$MPT_GET_DESTDIR" "$MPT_GET_DESTDIR.tmp" + mv "$MPT_GET_DESTDIR.tmp/$MPT_GET_SUBDIR" "$MPT_GET_DESTDIR" fi return 0 } @@ -108,13 +95,16 @@ mkdir build/tools fi +download "build/externals/allegro-4.2.3.1-hg.8+r8500.zip" 3872466 46cd8d4d7138b795dbc66994e953d0abc578c6d3c00615e3580237458529d33d7ad9d269a9778918d4b3719d75750d5cca74ff6bf38ad357a766472799ee9e7b "https://lib.openmpt.org/files/libopenmpt/contrib/allegro/allegro-4.2.3.1-hg.8+r8500.zip" +download "build/externals/csdpmi7b.zip" 71339 58c24691d27cead1cec92d334af551f37a3ba31de25a687d99399c28d822ec9f6ffccc9332bfce35e65dae4dd1210b54e54b223a4de17f5adcb11e2da004b834 "https://lib.openmpt.org/files/libopenmpt/contrib/djgpp/cwsdpmi/csdpmi7b.zip https://djgpp.mirror.garr.it/current/v2misc/csdpmi7b.zip" +download "build/externals/csdpmi7s.zip" 89872 ea5652d31850d8eb0d15a919de0b51849f58efea0d16ad2aa4687fac4abd223d0ca34a2d1b616b02fafe84651dbef3e506df9262cfb399eb6d9909bffc89bfd3 "https://lib.openmpt.org/files/libopenmpt/contrib/djgpp/cwsdpmi/csdpmi7s.zip https://djgpp.mirror.garr.it/current/v2misc/csdpmi7s.zip" +download "build/externals/WA5.55_SDK.exe" 336166 394375db8a16bf155b5de9376f6290488ab339e503dbdfdc4e2f5bede967799e625c559cca363bc988324f1a8e86e5fd28a9f697422abd7bb3dcde4a766607b5 "http://download.nullsoft.com/winamp/plugin-dev/WA5.55_SDK.exe https://web.archive.org/web/20131217072017if_/http://download.nullsoft.com/winamp/plugin-dev/WA5.55_SDK.exe" +download "build/externals/xmp-sdk.zip" 322744 62c442d656d4bb380360368a0f5f01da11b4ed54333d7f54f875a9a5ec390b08921e00bd08e62cd7a0a5fe642e3377023f20a950cc2a42898ff4cda9ab88fc91 "https://www.un4seen.com/files/xmp-sdk.zip" + +unpack "include/allegro42" "build/externals/allegro-4.2.3.1-hg.8+r8500.zip" "." +unpack "include/cwsdpmi" "build/externals/csdpmi7b.zip" "." +unpack "include/winamp" "build/externals/WA5.55_SDK.exe" "." +unpack "include/xmplay" "build/externals/xmp-sdk.zip" "." - -download_and_unpack_zip "allegro42" "https://lib.openmpt.org/files/libopenmpt/contrib/allegro/allegro-4.2.3.1-hg.8+r8500.zip" "build/externals/allegro-4.2.3.1-hg.8+r8500.zip" "." -download_and_unpack_zip "cwsdpmi" "https://lib.openmpt.org/files/libopenmpt/contrib/djgpp/cwsdpmi/csdpmi7b.zip" "build/externals/csdpmi7b.zip" "." -download "https://lib.openmpt.org/files/libopenmpt/contrib/djgpp/cwsdpmi/csdpmi7s.zip" "build/externals/csdpmi7s.zip" -#download_and_unpack_zip "cwsdpmi" "https://djgpp.mirror.garr.it/current/v2misc/csdpmi7b.zip" "build/externals/csdpmi7b.zip" "." -#download "https://djgpp.mirror.garr.it/current/v2misc/csdpmi7s.zip" "build/externals/csdpmi7s.zip" -download_and_unpack_7z "winamp" "https://web.archive.org/web/20131217072017if_/http://download.nullsoft.com/winamp/plugin-dev/WA5.55_SDK.exe" "build/externals/WA5.55_SDK.exe" "." ln -s OUT.H include/winamp/Winamp/out.h -download_and_unpack_zip "xmplay" "https://www.un4seen.com/files/xmp-sdk.zip" "build/externals/xmp-sdk.zip" "." + |