16
16
set -euo pipefail
17
17
18
18
use_github_host=0
19
+ tmp_dir=
19
20
20
- while getopts " v:gh" opt; do
21
+ while getopts " t: v:gh" opt; do
21
22
case " ${opt} " in
23
+ " t" ) tmp_dir=" ${OPTARG} " ;;
22
24
" v" ) llvm_version=" ${OPTARG} " ;;
23
25
" g" ) use_github_host=1 ;;
24
26
" h" )
25
27
echo " Usage:"
26
- echo " -v - Version of clang+llvm to use"
27
- echo " -g - Use github to download releases"
28
+ echo " -t <tempdir> - Optional: Specify a temp directory to download distributions to."
29
+ echo " -v <version> - Version of clang+llvm to use."
30
+ echo " -g - Use github to download releases."
28
31
exit 2
29
32
;;
30
33
* )
@@ -35,36 +38,42 @@ while getopts "v:gh" opt; do
35
38
done
36
39
37
40
if [[ -z ${llvm_version-} ]]; then
38
- echo " Usage: ${BASH_SOURCE[0]} [-g] -v llvm_version"
41
+ echo " Usage: ${BASH_SOURCE[0]} [-t <tempdir>] [- g] -v < llvm_version> "
39
42
exit 1
40
43
fi
41
44
42
- tmp_dir=" $( mktemp -d) "
43
-
44
45
cleanup () {
45
46
rc=$?
46
47
rm -rf " ${tmp_dir} "
47
48
exit " ${rc} "
48
49
}
49
- trap ' cleanup' INT HUP QUIT TERM EXIT
50
+
51
+ if [[ -z " ${tmp_dir} " ]]; then
52
+ tmp_dir=" $( mktemp -d) "
53
+ echo " Using temp dir: '${tmp_dir} '"
54
+ trap ' cleanup' INT HUP QUIT TERM EXIT
55
+ elif [[ ! -r " ${tmp_dir} " ]]; then
56
+ echo " Temp directory does not exist: '${tmp_dir} '."
57
+ exit 2
58
+ fi
50
59
51
60
llvm_host () {
52
61
local url_base=" releases.llvm.org/${llvm_version} "
53
62
output_dir=" ${tmp_dir} /${url_base} "
54
63
wget --recursive --level 1 --directory-prefix=" ${tmp_dir} " \
55
- --accept-regex " (clang%2bllvm|LLVM)-.*tar.xz $" " http://${url_base} /"
64
+ --accept-regex " (clang%2bllvm|LLVM)-.*tar.(xz|gz) $" " http://${url_base} /"
56
65
}
57
66
58
67
github_host () {
59
- output_dir=" ${tmp_dir} "
68
+ output_dir=" ${tmp_dir} /${llvm_version} "
69
+ mkdir -p " ${output_dir} "
60
70
(
61
71
cd " ${output_dir} "
62
72
curl -s " https://api.github.com/repos/llvm/llvm-project/releases/tags/llvmorg-${llvm_version} " |
63
- jq .assets[].browser_download_url |
64
- tee ./urls.txt |
65
- grep -E ' (clang%2Bllvm|LLVM)-.*tar.xz"$' |
73
+ tee ./releases.json |
74
+ jq ' .assets[]|select(any(.name; test("^(clang[+]llvm|LLVM)-.*tar.(xz|gz)$")))|.browser_download_url' |
66
75
tee ./filtered_urls.txt |
67
- xargs -n1 curl -L -O
76
+ xargs -n1 curl -L -O -C -
68
77
)
69
78
}
70
79
76
85
77
86
echo " "
78
87
echo " ===="
79
- echo " Checksums for clang+llvm distributions are:"
80
- find " ${output_dir} " -type f -name ' *. xz' -exec shasum -a 256 {} \; |
88
+ echo " Checksums for clang+llvm distributions are ( ${output_dir} ) :"
89
+ find " ${output_dir} " -type f \( -name ' clang%2?llvm-*.tar.* ' -o -name ' LLVM-*.tar.* ' \) \( -name ' *.gz ' -o -name ' *. xz' \) -exec shasum -a 256 {} \; |
81
90
sed -e " s@${output_dir} /@@" |
82
91
awk ' { printf "\"%s\": \"%s\",\n", $2, $1 }' |
83
92
sed -e ' s/%2[Bb]/+/' |
0 commit comments