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