Skip to content

Commit

Permalink
Merged revision(s) 20707 from trunk/OpenMPT:
Browse files Browse the repository at this point in the history
[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.
........


git-svn-id: https://source.openmpt.org/svn/openmpt/branches/OpenMPT-1.31@20708 56274372-70c3-4bfc-bfc3-4c3a0b034d27
  • Loading branch information
manxorist committed May 6, 2024
1 parent 2a6f471 commit 7b74979
Showing 1 changed file with 75 additions and 85 deletions.
160 changes: 75 additions & 85 deletions build/download_externals.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,96 +7,83 @@ set -e
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"
fi
if [ "$4" = "." ]; then
mkdir "$1"
cd "$1"
unzip "../../$3"
cd ..
else
unzip "../$3"
if [ ! "$4" = "$1" ]; then
mv "$4" "$1"
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. Redownloading."
rm -f "$MPT_GET_FILE_NAME"
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
}
Expand All @@ -108,13 +95,16 @@ if [ ! -d "build/tools" ]; then
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" "."

0 comments on commit 7b74979

Please sign in to comment.