1616set -euo pipefail
1717
1818use_github_host=0
19+ tmp_dir=
1920
20- while getopts " v:gh" opt; do
21+ while getopts " t: v:gh" opt; do
2122 case " ${opt} " in
23+ " t" ) tmp_dir=" ${OPTARG} " ;;
2224 " v" ) llvm_version=" ${OPTARG} " ;;
2325 " g" ) use_github_host=1 ;;
2426 " h" )
2527 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."
2831 exit 2
2932 ;;
3033 * )
@@ -35,36 +38,42 @@ while getopts "v:gh" opt; do
3538done
3639
3740if [[ -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> "
3942 exit 1
4043fi
4144
42- tmp_dir=" $( mktemp -d) "
43-
4445cleanup () {
4546 rc=$?
4647 rm -rf " ${tmp_dir} "
4748 exit " ${rc} "
4849}
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
5059
5160llvm_host () {
5261 local url_base=" releases.llvm.org/${llvm_version} "
5362 output_dir=" ${tmp_dir} /${url_base} "
5463 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} /"
5665}
5766
5867github_host () {
59- output_dir=" ${tmp_dir} "
68+ output_dir=" ${tmp_dir} /${llvm_version} "
69+ mkdir -p " ${output_dir} "
6070 (
6171 cd " ${output_dir} "
6272 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' |
6675 tee ./filtered_urls.txt |
67- xargs -n1 curl -L -O
76+ xargs -n1 curl -L -O -C -
6877 )
6978}
7079
7685
7786echo " "
7887echo " ===="
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 {} \; |
8190 sed -e " s@${output_dir} /@@" |
8291 awk ' { printf "\"%s\": \"%s\",\n", $2, $1 }' |
8392 sed -e ' s/%2[Bb]/+/' |
0 commit comments