|  | #!/bin/bash | 
|  | # Download and extract MarkupSafe | 
|  | # Homepage: | 
|  | # https://github.com/mitsuhiko/markupsafe | 
|  | # Download page: | 
|  | # https://pypi.python.org/pypi/MarkupSafe | 
|  | PACKAGE='MarkupSafe' | 
|  | VERSION='0.18' | 
|  | PACKAGE_DIR='markupsafe' | 
|  |  | 
|  | CHROMIUM_FILES="README.chromium OWNERS get_markupsafe.sh" | 
|  | EXTRA_FILES='LICENSE AUTHORS' | 
|  | REMOVE_FILES='tests.py' | 
|  |  | 
|  | SRC_URL='https://pypi.python.org/packages/source/' | 
|  | SRC_URL+="${PACKAGE:0:1}/$PACKAGE/$PACKAGE-$VERSION.tar.gz" | 
|  | FILENAME="$(basename $SRC_URL)" | 
|  | MD5_FILENAME="$FILENAME.md5" | 
|  | SHA512_FILENAME="$FILENAME.sha512" | 
|  | CHROMIUM_FILES+=" $MD5_FILENAME $SHA512_FILENAME" | 
|  |  | 
|  | BUILD_DIR="$PACKAGE-$VERSION" | 
|  | THIRD_PARTY="$(dirname $(realpath $(dirname "${BASH_SOURCE[0]}")))" | 
|  | INSTALL_DIR="$THIRD_PARTY/$PACKAGE_DIR" | 
|  | OUT_DIR="$INSTALL_DIR/$BUILD_DIR/$PACKAGE_DIR" | 
|  | OLD_DIR="$THIRD_PARTY/$PACKAGE_DIR.old" | 
|  |  | 
|  | function check_hashes { | 
|  | # Hashes generated via: | 
|  | # FILENAME=MarkupSafe-0.18.tar.gz | 
|  | # md5sum "$FILENAME" > "$FILENAME.md5" | 
|  | # sha512sum "$FILENAME" > "$FILENAME.sha512" | 
|  | # unset FILENAME | 
|  |  | 
|  | # MD5 | 
|  | if ! [ -f "$MD5_FILENAME" ] | 
|  | then | 
|  | echo "MD5 hash file $MD5_FILENAME not found, could not verify archive" | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | # 32-digit hash, followed by filename | 
|  | MD5_HASHFILE_REGEX="^[0-9a-f]{32}  $FILENAME" | 
|  | if ! grep --extended-regex --line-regex --silent \ | 
|  | "$MD5_HASHFILE_REGEX" "$MD5_FILENAME" | 
|  | then | 
|  | echo "MD5 hash file $MD5_FILENAME does not contain hash for $FILENAME," \ | 
|  | 'could not verify archive' | 
|  | echo 'Hash file contents are:' | 
|  | cat "$MD5_FILENAME" | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | if ! md5sum --check "$MD5_FILENAME" | 
|  | then | 
|  | echo 'MD5 hash does not match,' \ | 
|  | "archive file $FILENAME corrupt or compromised!" | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | # SHA-512 | 
|  | if ! [ -f "$SHA512_FILENAME" ] | 
|  | then | 
|  | echo "SHA-512 hash file $SHA512_FILENAME not found," \ | 
|  | 'could not verify archive' | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | # 128-digit hash, followed by filename | 
|  | SHA512_HASHFILE_REGEX="^[0-9a-f]{128}  $FILENAME" | 
|  | if ! grep --extended-regex --line-regex --silent \ | 
|  | "$SHA512_HASHFILE_REGEX" "$SHA512_FILENAME" | 
|  | then | 
|  | echo "SHA-512 hash file $SHA512_FILENAME does not contain hash for" \ | 
|  | "$FILENAME, could not verify archive" | 
|  | echo 'Hash file contents are:' | 
|  | cat "$SHA512_FILENAME" | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | if ! sha512sum --check "$SHA512_FILENAME" | 
|  | then | 
|  | echo 'SHA-512 hash does not match,' \ | 
|  | "archive file $FILENAME corrupt or compromised!" | 
|  | exit 1 | 
|  | fi | 
|  | } | 
|  |  | 
|  |  | 
|  | ################################################################################ | 
|  | # Body | 
|  |  | 
|  | cd "$INSTALL_DIR" | 
|  | echo "Downloading $SRC_URL" | 
|  | curl --remote-name "$SRC_URL" | 
|  | check_hashes | 
|  | tar xvzf "$FILENAME" | 
|  | # Copy extra files over | 
|  | for FILE in $CHROMIUM_FILES | 
|  | do | 
|  | cp "$FILE" "$OUT_DIR" | 
|  | done | 
|  |  | 
|  | cd "$BUILD_DIR" | 
|  | for FILE in $EXTRA_FILES | 
|  | do | 
|  | cp "$FILE" "$OUT_DIR" | 
|  | done | 
|  |  | 
|  | cd "$OUT_DIR" | 
|  | for FILE in $REMOVE_FILES | 
|  | do | 
|  | rm -fr "$FILE" | 
|  | done | 
|  |  | 
|  | # Replace with new directory | 
|  | cd .. | 
|  | mv "$INSTALL_DIR" "$OLD_DIR" | 
|  | mv "$PACKAGE_DIR" "$INSTALL_DIR" | 
|  | cd "$INSTALL_DIR" | 
|  | rm -fr "$OLD_DIR" |