solana/sdk/bpf/scripts/install.sh

160 lines
3.1 KiB
Bash
Raw Normal View History

2018-11-26 10:35:24 -08:00
#!/usr/bin/env bash
2019-06-17 11:04:38 -07:00
cd "$(dirname "$0")"/../dependencies
2018-11-26 10:35:24 -08:00
if [[ "$(uname)" = Darwin ]]; then
machine=osx
else
machine=linux
fi
2018-12-02 21:07:44 -08:00
download() {
declare url=$1
declare filename=$2
declare progress=$3
2020-04-06 20:16:58 -07:00
declare cache_filename=~/.cache/${filename//:\//_}
if [[ -r $cache_filename ]]; then
ln -s "$cache_filename" "$filename"
return
fi
declare args=(
"$url" -O "$filename"
"--progress=dot:$progress"
"--retry-connrefused"
"--read-timeout=30"
)
2020-04-06 20:16:58 -07:00
if wget "${args[@]}"; then
mkdir -p ~/.cache
cp "$filename" "$cache_filename"
return 0
fi
return 1
}
# Install xargo
2020-02-27 14:07:36 -08:00
(
set -ex
2020-04-10 15:44:24 -07:00
# shellcheck disable=SC2154
if [[ -n $rust_stable ]]; then
cargo +"$rust_stable" install xargo
else
cargo install xargo
fi
2020-02-27 14:07:36 -08:00
xargo --version > xargo.md 2>&1
)
# shellcheck disable=SC2181
if [[ $? -ne 0 ]]; then
exit 1
fi
2019-06-20 16:49:33 -07:00
2018-12-02 21:07:44 -08:00
# Install Criterion
version=v2.3.2
if [[ ! -r criterion-$machine-$version.md ]]; then
(
filename=criterion-$version-$machine-x86_64.tar.bz2
2018-12-01 10:24:04 -08:00
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
2018-11-26 10:35:24 -08:00
echo "$base/tag/$version" > ../criterion-$machine-$version.md
)
# shellcheck disable=SC2181
if [[ $? -ne 0 ]]; then
rm -rf criterion
exit 1
fi
fi
# Install LLVM
2020-02-11 12:52:13 -08:00
version=v0.0.15
if [[ ! -f llvm-native-$machine-$version.md ]]; then
(
filename=solana-llvm-$machine.tar.bz2
2018-12-01 10:24:04 -08:00
set -ex
rm -rf llvm-native*
rm -rf xargo
2018-12-01 11:40:25 -08:00
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
)
2018-12-11 15:20:40 -08:00
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
2018-12-01 11:40:25 -08:00
rm -rf llvm-native
2018-12-01 10:24:04 -08:00
exit 1
fi
2018-11-26 10:35:24 -08:00
fi
# Install Rust-BPF
version=v0.2.2
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
2019-12-10 22:27:14 -08:00
version=v0.12
if [[ ! -f rust-bpf-sysroot-$version.md ]]; then
2020-04-06 20:16:58 -07:00
(
set -ex
rm -rf rust-bpf-sysroot*
rm -rf xargo
2020-04-06 20:16:58 -07:00
cmd="git clone --recursive --depth 1 --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
2018-12-11 15:20:40 -08:00
exit 0