OLD | NEW |
| (Empty) |
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" | |
OLD | NEW |