Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.

Commit ca4e4fd

Browse files
jackcmaysvenski123
authored andcommitted
Improve BPF SDK dependency caching (#10434)
1 parent 09f7ebe commit ca4e4fd

File tree

1 file changed

+89
-63
lines changed

1 file changed

+89
-63
lines changed

sdk/bpf/scripts/install.sh

Lines changed: 89 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,24 @@ else
99
fi
1010

1111
download() {
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
5098
if [[ $? -ne 0 ]]; then
@@ -53,107 +101,85 @@ fi
53101

54102
# Install Criterion
55103
version=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
77119
fi
78120

79121
# Install LLVM
80122
version=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
103139
fi
104140

105141
# Install Rust-BPF
106142
version=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
139167
fi
140168

141169
# Install Rust-BPF Sysroot sources
142170
version=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
159185
fi

0 commit comments

Comments
 (0)