Home | History | Annotate | Download | only in markupsafe
      1 #!/bin/bash
      2 # Download and extract MarkupSafe
      3 # Homepage:
      4 # https://github.com/mitsuhiko/markupsafe
      5 # Download page:
      6 # https://pypi.python.org/pypi/MarkupSafe
      7 PACKAGE='MarkupSafe'
      8 VERSION='0.18'
      9 PACKAGE_DIR='markupsafe'
     10 
     11 CHROMIUM_FILES="README.chromium OWNERS get_markupsafe.sh"
     12 EXTRA_FILES='LICENSE AUTHORS'
     13 REMOVE_FILES='tests.py'
     14 
     15 SRC_URL='https://pypi.python.org/packages/source/'
     16 SRC_URL+="${PACKAGE:0:1}/$PACKAGE/$PACKAGE-$VERSION.tar.gz"
     17 FILENAME="$(basename $SRC_URL)"
     18 MD5_FILENAME="$FILENAME.md5"
     19 SHA512_FILENAME="$FILENAME.sha512"
     20 CHROMIUM_FILES+=" $MD5_FILENAME $SHA512_FILENAME"
     21 
     22 BUILD_DIR="$PACKAGE-$VERSION"
     23 THIRD_PARTY="$(dirname $(realpath $(dirname "${BASH_SOURCE[0]}")))"
     24 INSTALL_DIR="$THIRD_PARTY/$PACKAGE_DIR"
     25 OUT_DIR="$INSTALL_DIR/$BUILD_DIR/$PACKAGE_DIR"
     26 OLD_DIR="$THIRD_PARTY/$PACKAGE_DIR.old"
     27 
     28 function check_hashes {
     29   # Hashes generated via:
     30   # FILENAME=MarkupSafe-0.18.tar.gz
     31   # md5sum "$FILENAME" > "$FILENAME.md5"
     32   # sha512sum "$FILENAME" > "$FILENAME.sha512"
     33   # unset FILENAME
     34 
     35   # MD5
     36   if ! [ -f "$MD5_FILENAME" ]
     37   then
     38     echo "MD5 hash file $MD5_FILENAME not found, could not verify archive"
     39     exit 1
     40   fi
     41 
     42   # 32-digit hash, followed by filename
     43   MD5_HASHFILE_REGEX="^[0-9a-f]{32}  $FILENAME"
     44   if ! grep --extended-regex --line-regex --silent \
     45     "$MD5_HASHFILE_REGEX" "$MD5_FILENAME"
     46   then
     47     echo "MD5 hash file $MD5_FILENAME does not contain hash for $FILENAME," \
     48          'could not verify archive'
     49     echo 'Hash file contents are:'
     50     cat "$MD5_FILENAME"
     51     exit 1
     52   fi
     53 
     54   if ! md5sum --check "$MD5_FILENAME"
     55   then
     56     echo 'MD5 hash does not match,' \
     57          "archive file $FILENAME corrupt or compromised!"
     58     exit 1
     59   fi
     60 
     61   # SHA-512
     62   if ! [ -f "$SHA512_FILENAME" ]
     63   then
     64     echo "SHA-512 hash file $SHA512_FILENAME not found," \
     65          'could not verify archive'
     66     exit 1
     67   fi
     68 
     69   # 128-digit hash, followed by filename
     70   SHA512_HASHFILE_REGEX="^[0-9a-f]{128}  $FILENAME"
     71   if ! grep --extended-regex --line-regex --silent \
     72     "$SHA512_HASHFILE_REGEX" "$SHA512_FILENAME"
     73   then
     74     echo "SHA-512 hash file $SHA512_FILENAME does not contain hash for" \
     75          "$FILENAME, could not verify archive"
     76     echo 'Hash file contents are:'
     77     cat "$SHA512_FILENAME"
     78     exit 1
     79   fi
     80 
     81   if ! sha512sum --check "$SHA512_FILENAME"
     82   then
     83     echo 'SHA-512 hash does not match,' \
     84          "archive file $FILENAME corrupt or compromised!"
     85     exit 1
     86   fi
     87 }
     88 
     89 
     90 ################################################################################
     91 # Body
     92 
     93 cd "$INSTALL_DIR"
     94 echo "Downloading $SRC_URL"
     95 curl --remote-name "$SRC_URL"
     96 check_hashes
     97 tar xvzf "$FILENAME"
     98 # Copy extra files over
     99 for FILE in $CHROMIUM_FILES
    100 do
    101   cp "$FILE" "$OUT_DIR"
    102 done
    103 
    104 cd "$BUILD_DIR"
    105 for FILE in $EXTRA_FILES
    106 do
    107   cp "$FILE" "$OUT_DIR"
    108 done
    109 
    110 cd "$OUT_DIR"
    111 for FILE in $REMOVE_FILES
    112 do
    113   rm -fr "$FILE"
    114 done
    115 
    116 # Replace with new directory
    117 cd ..
    118 mv "$INSTALL_DIR" "$OLD_DIR"
    119 mv "$PACKAGE_DIR" "$INSTALL_DIR"
    120 cd "$INSTALL_DIR"
    121 rm -fr "$OLD_DIR"
    122