solana/sdk/bpf/scripts/install.sh
Dmitri Makarov 1359bceb5d
Bump bpf-tools to version v1.5 (#16331)
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.
2021-04-04 13:04:22 +00:00

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