forked from solana-labs/solana
-
Notifications
You must be signed in to change notification settings - Fork 3
/
install.sh
executable file
·155 lines (131 loc) · 3.14 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#!/usr/bin/env bash
cd "$(dirname "$0")"/../dependencies
if [[ "$(uname)" = Darwin ]]; then
machine=osx
else
machine=linux
fi
download() {
declare url=$1
declare filename=$2
declare progress=$3
declare args=(
"$url" -O "$filename"
"--progress=dot:$progress"
"--retry-connrefused"
"--read-timeout=30"
)
wget "${args[@]}"
}
# Install or upgrade xargo
cargo install cargo-update
cargo install-update -i xargo
xargo --version > xargo.md 2>&1
# Install Criterion
version=v2.3.2
if [[ ! -r criterion-$machine-$version.md ]]; then
(
filename=criterion-$version-$machine-x86_64.tar.bz2
set -ex
rm -rf criterion*
mkdir criterion
cd criterion
base=https://github.com/Snaipe/Criterion/releases
download $base/download/$version/$filename $filename mega
tar --strip-components 1 -jxf $filename
rm -rf $filename
echo "$base/tag/$version" > ../criterion-$machine-$version.md
)
# shellcheck disable=SC2181
if [[ $? -ne 0 ]]; then
rm -rf criterion
exit 1
fi
fi
# Install LLVM
version=v0.0.14
if [[ ! -f llvm-native-$machine-$version.md ]]; then
(
filename=solana-llvm-$machine.tar.bz2
set -ex
rm -rf llvm-native*
rm -rf xargo
mkdir -p llvm-native
cd llvm-native
base=https://github.com/solana-labs/llvm-builder/releases
download $base/download/$version/$filename $filename giga
tar -jxf $filename
rm -rf $filename
echo "$base/tag/$version" > ../llvm-native-$machine-$version.md
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf llvm-native
exit 1
fi
fi
# Install Rust-BPF
version=v0.1.8
if [[ ! -f rust-bpf-$machine-$version.md ]]; then
(
filename=solana-rust-bpf-$machine.tar.bz2
set -ex
rm -rf rust-bpf
rm -rf rust-bpf-$machine-*
rm -rf xargo
mkdir -p rust-bpf
pushd rust-bpf
base=https://github.com/solana-labs/rust-bpf-builder/releases
download $base/download/$version/$filename $filename giga
tar -jxf $filename
rm -rf $filename
popd
set -ex
./rust-bpf/bin/rustc --print sysroot
set +e
rustup toolchain uninstall bpf
set -e
rustup toolchain link bpf rust-bpf
echo "$base/tag/$version" > rust-bpf-$machine-$version.md
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf rust-bpf
exit 1
fi
fi
# Install Rust-BPF Sysroot sources
version=v0.11
if [[ ! -f rust-bpf-sysroot-$version.md ]]; then
(
set -ex
rm -rf rust-bpf-sysroot*
rm -rf xargo
cmd="git clone --recursive --single-branch --branch $version https://github.com/solana-labs/rust-bpf-sysroot.git"
$cmd
echo "$cmd" > rust-bpf-sysroot-$version.md
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf rust-bpf-sysroot
exit 1
fi
fi
# Install custom Hashbrown crate needed by Rust-BPF Sysroot
version=v0.1
if [[ ! -f hashbrown-$version.md ]]; then
(
set -ex
rm -rf hashbrown*
rm -rf xargo
cmd="git clone --recursive --single-branch --branch $version https://github.com/solana-labs/hashbrown.git"
$cmd
echo "$cmd" > hashbrown-$version.md
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf hashbrown
exit 1
fi
fi
exit 0