The new version of bpf-tools eliminates the separate
rust-bpf-sysroot. The Rust standard libraries for the BPF target are
built in tree when the compiler is built. The standard libraries code
is slightly more optimized and some reduction of compute budget can be
expected with this version of bpf-tools.
(cherry picked from commit 1359bceb5d
)
Co-authored-by: Dmitri Makarov <dmakarov@users.noreply.github.com>
123 lines
2.6 KiB
Bash
Executable File
123 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
mkdir -p "$(dirname "$0")"/../dependencies
|
|
cd "$(dirname "$0")"/../dependencies
|
|
|
|
if [[ "$(uname)" = Darwin ]]; then
|
|
machine=osx
|
|
else
|
|
machine=linux
|
|
fi
|
|
|
|
download() {
|
|
declare url="$1/$2/$3"
|
|
declare filename=$3
|
|
declare wget_args=(
|
|
"$url" -O "$filename"
|
|
"--progress=dot:giga"
|
|
"--retry-connrefused"
|
|
"--read-timeout=30"
|
|
)
|
|
declare curl_args=(
|
|
-L "$url" -o "$filename"
|
|
)
|
|
if hash wget 2>/dev/null; then
|
|
wget_or_curl="wget ${wget_args[*]}"
|
|
elif hash curl 2>/dev/null; then
|
|
wget_or_curl="curl ${curl_args[*]}"
|
|
else
|
|
echo "Error: Neither curl nor wget were found" >&2
|
|
return 1
|
|
fi
|
|
|
|
set -x
|
|
if $wget_or_curl; then
|
|
tar --strip-components 1 -jxf "$filename" || return 1
|
|
{ set +x; } 2>/dev/null
|
|
rm -rf "$filename"
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
get() {
|
|
declare version=$1
|
|
declare dirname=$2
|
|
declare job=$3
|
|
declare cache_root=~/.cache/solana
|
|
declare cache_dirname="$cache_root/$version/$dirname"
|
|
declare cache_partial_dirname="$cache_dirname"_partial
|
|
|
|
if [[ -r $cache_dirname ]]; then
|
|
ln -sf "$cache_dirname" "$dirname" || return 1
|
|
return 0
|
|
fi
|
|
|
|
rm -rf "$cache_partial_dirname" || return 1
|
|
mkdir -p "$cache_partial_dirname" || return 1
|
|
pushd "$cache_partial_dirname"
|
|
|
|
if $job; then
|
|
popd
|
|
mv "$cache_partial_dirname" "$cache_dirname" || return 1
|
|
ln -sf "$cache_dirname" "$dirname" || return 1
|
|
return 0
|
|
fi
|
|
popd
|
|
return 1
|
|
}
|
|
|
|
# Install Criterion
|
|
if [[ $machine == "linux" ]]; then
|
|
version=v2.3.3
|
|
else
|
|
version=v2.3.2
|
|
fi
|
|
if [[ ! -e criterion-$version.md || ! -e criterion ]]; then
|
|
(
|
|
set -e
|
|
rm -rf criterion*
|
|
job="download \
|
|
https://github.com/Snaipe/Criterion/releases/download \
|
|
$version \
|
|
criterion-$version-$machine-x86_64.tar.bz2 \
|
|
criterion"
|
|
get $version criterion "$job"
|
|
)
|
|
exitcode=$?
|
|
if [[ $exitcode -ne 0 ]]; then
|
|
exit 1
|
|
fi
|
|
touch criterion-$version.md
|
|
fi
|
|
|
|
# Install Rust-BPF
|
|
version=v1.5
|
|
if [[ ! -e bpf-tools-$version.md || ! -e bpf-tools ]]; then
|
|
(
|
|
set -e
|
|
rm -rf bpf-tools*
|
|
rm -rf xargo
|
|
job="download \
|
|
https://github.com/solana-labs/bpf-tools/releases/download \
|
|
$version \
|
|
solana-bpf-tools-$machine.tar.bz2 \
|
|
bpf-tools"
|
|
get $version bpf-tools "$job"
|
|
)
|
|
exitcode=$?
|
|
if [[ $exitcode -ne 0 ]]; then
|
|
exit 1
|
|
fi
|
|
touch bpf-tools-$version.md
|
|
set -ex
|
|
./bpf-tools/rust/bin/rustc --version
|
|
./bpf-tools/rust/bin/rustc --print sysroot
|
|
set +e
|
|
rustup toolchain uninstall bpf
|
|
set -e
|
|
rustup toolchain link bpf bpf-tools/rust
|
|
fi
|
|
|
|
exit 0
|