158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#!/bin/bash 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# Download and extract MarkupSafe 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# Homepage: 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# https://github.com/mitsuhiko/markupsafe 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# Download page: 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# https://pypi.python.org/pypi/MarkupSafe 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)PACKAGE='MarkupSafe' 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)VERSION='0.18' 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)PACKAGE_DIR='markupsafe' 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)CHROMIUM_FILES="README.chromium OWNERS get_markupsafe.sh" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)EXTRA_FILES='LICENSE AUTHORS' 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)REMOVE_FILES='tests.py' 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)SRC_URL='https://pypi.python.org/packages/source/' 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)SRC_URL+="${PACKAGE:0:1}/$PACKAGE/$PACKAGE-$VERSION.tar.gz" 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)FILENAME="$(basename $SRC_URL)" 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)MD5_FILENAME="$FILENAME.md5" 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)SHA512_FILENAME="$FILENAME.sha512" 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)CHROMIUM_FILES+=" $MD5_FILENAME $SHA512_FILENAME" 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BUILD_DIR="$PACKAGE-$VERSION" 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)THIRD_PARTY="$(dirname $(realpath $(dirname "${BASH_SOURCE[0]}")))" 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)INSTALL_DIR="$THIRD_PARTY/$PACKAGE_DIR" 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)OUT_DIR="$INSTALL_DIR/$BUILD_DIR/$PACKAGE_DIR" 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)OLD_DIR="$THIRD_PARTY/$PACKAGE_DIR.old" 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)function check_hashes { 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # Hashes generated via: 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # FILENAME=MarkupSafe-0.18.tar.gz 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # md5sum "$FILENAME" > "$FILENAME.md5" 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # sha512sum "$FILENAME" > "$FILENAME.sha512" 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # unset FILENAME 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # MD5 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if ! [ -f "$MD5_FILENAME" ] 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) then 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo "MD5 hash file $MD5_FILENAME not found, could not verify archive" 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) exit 1 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fi 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # 32-digit hash, followed by filename 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) MD5_HASHFILE_REGEX="^[0-9a-f]{32} $FILENAME" 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if ! grep --extended-regex --line-regex --silent \ 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) "$MD5_HASHFILE_REGEX" "$MD5_FILENAME" 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) then 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo "MD5 hash file $MD5_FILENAME does not contain hash for $FILENAME," \ 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 'could not verify archive' 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo 'Hash file contents are:' 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) cat "$MD5_FILENAME" 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) exit 1 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fi 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if ! md5sum --check "$MD5_FILENAME" 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) then 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo 'MD5 hash does not match,' \ 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) "archive file $FILENAME corrupt or compromised!" 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) exit 1 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fi 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # SHA-512 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if ! [ -f "$SHA512_FILENAME" ] 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) then 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo "SHA-512 hash file $SHA512_FILENAME not found," \ 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 'could not verify archive' 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) exit 1 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fi 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) # 128-digit hash, followed by filename 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SHA512_HASHFILE_REGEX="^[0-9a-f]{128} $FILENAME" 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if ! grep --extended-regex --line-regex --silent \ 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) "$SHA512_HASHFILE_REGEX" "$SHA512_FILENAME" 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) then 7458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo "SHA-512 hash file $SHA512_FILENAME does not contain hash for" \ 7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) "$FILENAME, could not verify archive" 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo 'Hash file contents are:' 7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) cat "$SHA512_FILENAME" 7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) exit 1 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fi 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if ! sha512sum --check "$SHA512_FILENAME" 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) then 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) echo 'SHA-512 hash does not match,' \ 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) "archive file $FILENAME corrupt or compromised!" 8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) exit 1 8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fi 8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 8858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)################################################################################ 9158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# Body 9258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)cd "$INSTALL_DIR" 9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)echo "Downloading $SRC_URL" 9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)curl --remote-name "$SRC_URL" 9658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)check_hashes 9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)tar xvzf "$FILENAME" 9858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# Copy extra files over 9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)for FILE in $CHROMIUM_FILES 10058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)do 10158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) cp "$FILE" "$OUT_DIR" 10258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)done 10358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)cd "$BUILD_DIR" 10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)for FILE in $EXTRA_FILES 10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)do 10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) cp "$FILE" "$OUT_DIR" 10858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)done 10958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 11058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)cd "$OUT_DIR" 11158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)for FILE in $REMOVE_FILES 11258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)do 11358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) rm -fr "$FILE" 11458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)done 11558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 11658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)# Replace with new directory 11758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)cd .. 11858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)mv "$INSTALL_DIR" "$OLD_DIR" 11958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)mv "$PACKAGE_DIR" "$INSTALL_DIR" 12058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)cd "$INSTALL_DIR" 12158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)rm -fr "$OLD_DIR" 122