99fi
1010
1111download () {
12- declare url=$1
12+ set -e
13+ declare url=" $1 /$2 /$3 "
1314 declare version=$2
1415 declare filename=$3
15- declare progress=$4
16+ declare dirname=$4
17+ declare progress=$5
1618 declare cache_directory=~ /.cache/" $version "
17- declare cache_filename=$cache_directory /${filename//: \/ / _}
19+ declare cache_dirname=$cache_directory /${dirname//: \/ / _}
20+
21+ link () {
22+ set -e
23+ ln -sf " $cache_dirname " " $dirname "
24+ ln -sf " $cache_directory /$dirname -$version .md" " $dirname -$version .md"
25+ }
1826
19- if [[ -r $cache_filename ]]; then
20- ln -s " $cache_filename " " $filename "
21- return
27+ if [[ -r $cache_dirname ]]; then
28+ link
29+ return 0
2230 fi
2331
2432 declare args=(
@@ -27,9 +35,49 @@ download() {
2735 " --retry-connrefused"
2836 " --read-timeout=30"
2937 )
38+ set -x
39+ mkdir -p " $cache_dirname "
40+ pushd " $cache_dirname "
3041 if wget " ${args[@]} " ; then
31- mkdir -p " $cache_directory "
32- cp " $filename " " $cache_filename "
42+ tar --strip-components 1 -jxf " $filename "
43+ rm -rf " $filename "
44+ echo " $url " > " ../$dirname -$version .md"
45+ popd
46+ link
47+ return 0
48+ fi
49+ popd
50+ rm -rf " $cache_dirname "
51+ return 1
52+ }
53+
54+ clone () {
55+ set -e
56+ declare url=$1
57+ declare version=$2
58+ declare dirname=$3
59+ declare cache_directory=~ /.cache/" $version "
60+ declare cache_dirname=$cache_directory /${dirname//: \/ / _}
61+
62+ link () {
63+ set -e
64+ ln -sf " $cache_dirname " " $dirname "
65+ ln -sf " $cache_directory /$dirname -$version .md" " $dirname -$version .md"
66+ }
67+
68+ if [[ -r $cache_dirname ]]; then
69+ link
70+ return 0
71+ fi
72+
73+ set -x
74+ mkdir -p " $cache_directory "
75+ pushd " $cache_directory "
76+ cmd=" git clone --recursive --depth 1 --single-branch --branch $version $url "
77+ if $cmd ; then
78+ echo " $cmd " > " $dirname -$version .md"
79+ popd
80+ link
3381 return 0
3482 fi
3583 return 1
@@ -44,7 +92,7 @@ download() {
4492 else
4593 cargo install xargo
4694 fi
47- xargo --version > xargo.md 2>&1
95+ xargo --version > xargo.md 2>&1
4896)
4997# shellcheck disable=SC2181
5098if [[ $? -ne 0 ]]; then
53101
54102# Install Criterion
55103version=v2.3.2
56- if [[ ! -r criterion- $machine -$version .md ]]; then
104+ if [[ ! -e criterion-$version .md ]]; then
57105 (
58- filename=criterion-$version -$machine -x86_64.tar.bz2
59-
60- set -ex
106+ set -e
61107 rm -rf criterion*
62- mkdir criterion
63- cd criterion
64-
65- base=https://github.com/Snaipe/Criterion/releases
66- download $base /download/$version /$filename $version $filename mega
67- tar --strip-components 1 -jxf $filename
68- rm -rf $filename
69-
70- echo " $base /tag/$version " > ../criterion-$machine -$version .md
108+ download " https://github.com/Snaipe/Criterion/releases/download" \
109+ $version \
110+ " criterion-$version -$machine -x86_64.tar.bz2" \
111+ criterion \
112+ mega
71113 )
72- # shellcheck disable=SC2181
73- if [[ $? -ne 0 ]]; then
74- rm -rf criterion
114+ exitcode= $?
115+ if [[ $exitcode -ne 0 ]]; then
116+ rm -rf criterion- $version .md
75117 exit 1
76118 fi
77119fi
78120
79121# Install LLVM
80122version=v0.0.15
81- if [[ ! -f llvm-native- $machine -$version .md ]]; then
123+ if [[ ! -e llvm-native-$version .md ]]; then
82124 (
83- filename=solana-llvm-$machine .tar.bz2
84-
85- set -ex
125+ set -e
86126 rm -rf llvm-native*
87127 rm -rf xargo
88- mkdir -p llvm-native
89- cd llvm-native
90-
91- base=https://github.com/solana-labs/llvm-builder/releases
92- download $base /download/$version /$filename $version $filename giga
93- tar -jxf $filename
94- rm -rf $filename
95-
96- echo " $base /tag/$version " > ../llvm-native-$machine -$version .md
128+ download " https://github.com/solana-labs/llvm-builder/releases/download" \
129+ $version \
130+ " solana-llvm-$machine .tar.bz2" \
131+ llvm-native \
132+ giga
97133 )
98134 exitcode=$?
99135 if [[ $exitcode -ne 0 ]]; then
100- rm -rf llvm-native
136+ rm -rf llvm-native- $version .md
101137 exit 1
102138 fi
103139fi
104140
105141# Install Rust-BPF
106142version=v0.2.3
107- if [[ ! -f rust-bpf- $machine -$version .md ]]; then
143+ if [[ ! -e rust-bpf-$version .md ]]; then
108144 (
109- filename=solana-rust-bpf-$machine .tar.bz2
110-
111- set -ex
145+ set -e
112146 rm -rf rust-bpf
113147 rm -rf rust-bpf-$machine -*
114148 rm -rf xargo
115- mkdir -p rust-bpf
116- pushd rust-bpf
117-
118- base=https://github.com/solana-labs/rust-bpf-builder/releases
119- download $base /download/$version /$filename $version $filename giga
120- tar -jxf $filename
121- rm -rf $filename
122- popd
149+ download " https://github.com/solana-labs/rust-bpf-builder/releases/download" \
150+ $version \
151+ " solana-rust-bpf-$machine .tar.bz2" \
152+ rust-bpf \
153+ giga
123154
124155 set -ex
125156 ./rust-bpf/bin/rustc --print sysroot
126-
127157 set +e
128158 rustup toolchain uninstall bpf
129159 set -e
130160 rustup toolchain link bpf rust-bpf
131-
132- echo " $base /tag/$version " > rust-bpf-$machine -$version .md
133161 )
134162 exitcode=$?
135163 if [[ $exitcode -ne 0 ]]; then
136- rm -rf rust-bpf
164+ rm -rf rust-bpf- $version .md
137165 exit 1
138166 fi
139167fi
140168
141169# Install Rust-BPF Sysroot sources
142170version=v0.12
143- if [[ ! -f rust-bpf-sysroot-$version .md ]]; then
144-
171+ if [[ ! -e rust-bpf-sysroot-$version .md ]]; then
145172 (
146- set -ex
173+ set -e
147174 rm -rf rust-bpf-sysroot*
148175 rm -rf xargo
149- cmd=" git clone --recursive --depth 1 --single-branch --branch $version https://github.com/solana-labs/rust-bpf-sysroot.git"
150- $cmd
151-
152- echo " $cmd " > rust-bpf-sysroot-$version .md
176+ clone " https://github.com/solana-labs/rust-bpf-sysroot.git" \
177+ $version \
178+ rust-bpf-sysroot
153179 )
154180 exitcode=$?
155181 if [[ $exitcode -ne 0 ]]; then
156- rm -rf rust-bpf-sysroot
182+ rm -rf rust-bpf-sysroot- $version .md
157183 exit 1
158184 fi
159185fi
0 commit comments