1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#!/bin/bash
2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Download and extract MarkupSafe
3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Homepage:
4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# https://github.com/mitsuhiko/markupsafe
5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Download page:
6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# https://pypi.python.org/pypi/MarkupSafe
7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezPACKAGE='MarkupSafe'
8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezVERSION='0.18'
9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezPACKAGE_DIR='markupsafe'
10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezCHROMIUM_FILES="README.chromium OWNERS get_markupsafe.sh"
12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezEXTRA_FILES='LICENSE AUTHORS'
13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezREMOVE_FILES='tests.py'
14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezSRC_URL='https://pypi.python.org/packages/source/'
16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezSRC_URL+="${PACKAGE:0:1}/$PACKAGE/$PACKAGE-$VERSION.tar.gz"
17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezFILENAME="$(basename $SRC_URL)"
18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezMD5_FILENAME="$FILENAME.md5"
19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezSHA512_FILENAME="$FILENAME.sha512"
20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezCHROMIUM_FILES+=" $MD5_FILENAME $SHA512_FILENAME"
21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBUILD_DIR="$PACKAGE-$VERSION"
23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTHIRD_PARTY="$(dirname $(realpath $(dirname "${BASH_SOURCE[0]}")))"
24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezINSTALL_DIR="$THIRD_PARTY/$PACKAGE_DIR"
25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezOUT_DIR="$INSTALL_DIR/$BUILD_DIR/$PACKAGE_DIR"
26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezOLD_DIR="$THIRD_PARTY/$PACKAGE_DIR.old"
27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfunction check_hashes {
29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # Hashes generated via:
30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # FILENAME=MarkupSafe-0.18.tar.gz
31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # md5sum "$FILENAME" > "$FILENAME.md5"
32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # sha512sum "$FILENAME" > "$FILENAME.sha512"
33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # unset FILENAME
34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # MD5
36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  if ! [ -f "$MD5_FILENAME" ]
37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  then
38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo "MD5 hash file $MD5_FILENAME not found, could not verify archive"
39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    exit 1
40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  fi
41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # 32-digit hash, followed by filename
43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  MD5_HASHFILE_REGEX="^[0-9a-f]{32}  $FILENAME"
44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  if ! grep --extended-regex --line-regex --silent \
45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    "$MD5_HASHFILE_REGEX" "$MD5_FILENAME"
46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  then
47645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo "MD5 hash file $MD5_FILENAME does not contain hash for $FILENAME," \
48645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez         'could not verify archive'
49645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo 'Hash file contents are:'
50645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    cat "$MD5_FILENAME"
51645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    exit 1
52645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  fi
53645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
54645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  if ! md5sum --check "$MD5_FILENAME"
55645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  then
56645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo 'MD5 hash does not match,' \
57645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez         "archive file $FILENAME corrupt or compromised!"
58645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    exit 1
59645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  fi
60645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
61645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # SHA-512
62645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  if ! [ -f "$SHA512_FILENAME" ]
63645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  then
64645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo "SHA-512 hash file $SHA512_FILENAME not found," \
65645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez         'could not verify archive'
66645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    exit 1
67645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  fi
68645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
69645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  # 128-digit hash, followed by filename
70645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  SHA512_HASHFILE_REGEX="^[0-9a-f]{128}  $FILENAME"
71645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  if ! grep --extended-regex --line-regex --silent \
72645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    "$SHA512_HASHFILE_REGEX" "$SHA512_FILENAME"
73645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  then
74645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo "SHA-512 hash file $SHA512_FILENAME does not contain hash for" \
75645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez         "$FILENAME, could not verify archive"
76645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo 'Hash file contents are:'
77645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    cat "$SHA512_FILENAME"
78645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    exit 1
79645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  fi
80645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
81645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  if ! sha512sum --check "$SHA512_FILENAME"
82645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  then
83645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    echo 'SHA-512 hash does not match,' \
84645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez         "archive file $FILENAME corrupt or compromised!"
85645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    exit 1
86645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  fi
87645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
88645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
89645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
90645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez################################################################################
91645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Body
92645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
93645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezcd "$INSTALL_DIR"
94645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezecho "Downloading $SRC_URL"
95645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezcurl --remote-name "$SRC_URL"
96645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezcheck_hashes
97645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveztar xvzf "$FILENAME"
98645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Copy extra files over
99645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfor FILE in $CHROMIUM_FILES
100645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdo
101645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  cp "$FILE" "$OUT_DIR"
102645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdone
103645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
104645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezcd "$BUILD_DIR"
105645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfor FILE in $EXTRA_FILES
106645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdo
107645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  cp "$FILE" "$OUT_DIR"
108645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdone
109645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
110645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezcd "$OUT_DIR"
111645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfor FILE in $REMOVE_FILES
112645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdo
113645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  rm -fr "$FILE"
114645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdone
115645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
116645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Replace with new directory
117645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezcd ..
118645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezmv "$INSTALL_DIR" "$OLD_DIR"
119645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezmv "$PACKAGE_DIR" "$INSTALL_DIR"
120645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezcd "$INSTALL_DIR"
121645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezrm -fr "$OLD_DIR"
122