solana/sdk/bpf/scripts/install.sh

193 lines
3.7 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() {
set -e
declare url="$1/$2/$3"
2020-04-28 21:06:04 -07:00
declare version=$2
declare filename=$3
declare dirname=$4
declare progress=$5
2020-04-28 21:06:04 -07:00
declare cache_directory=~/.cache/"$version"
declare cache_dirname=$cache_directory/${dirname//:\//_}
link() {
set -e
ln -sf "$cache_dirname" "$dirname"
ln -sf "$cache_directory/$dirname-$version.md" "$dirname-$version.md"
}
2020-04-06 20:16:58 -07:00
if [[ -r $cache_dirname ]]; then
link
return 0
2020-04-06 20:16:58 -07:00
fi
declare args=(
"$url" -O "$filename"
"--progress=dot:$progress"
"--retry-connrefused"
"--read-timeout=30"
)
set -x
mkdir -p "$cache_dirname"
pushd "$cache_dirname"
2020-04-06 20:16:58 -07:00
if wget "${args[@]}"; then
tar --strip-components 1 -jxf "$filename"
rm -rf "$filename"
echo "$url" >"../$dirname-$version.md"
popd
link
return 0
fi
popd
rm -rf "$cache_dirname"
return 1
}
clone() {
set -e
declare url=$1
declare version=$2
declare dirname=$3
declare cache_directory=~/.cache/"$version"
declare cache_dirname=$cache_directory/${dirname//:\//_}
link() {
set -e
ln -sf "$cache_dirname" "$dirname"
ln -sf "$cache_directory/$dirname-$version.md" "$dirname-$version.md"
}
if [[ -r $cache_dirname ]]; then
link
return 0
fi
set -x
mkdir -p "$cache_directory"
pushd "$cache_directory"
cmd="git clone --recursive --depth 1 --single-branch --branch $version $url"
if $cmd; then
echo "$cmd" >"$dirname-$version.md"
popd
link
2020-04-06 20:16:58 -07:00
return 0
fi
return 1
}
# Install xargo
2020-10-20 17:50:20 -07:00
version=0.3.22
if [[ ! -e xargo-$version.md ]] || [[ ! -x bin/xargo ]]; then
(
args=()
# shellcheck disable=SC2154
if [[ -n $rust_stable ]]; then
args+=(+"$rust_stable")
fi
args+=(install xargo --version "$version" --root .)
set -ex
cargo "${args[@]}"
./bin/xargo --version >xargo-$version.md 2>&1
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf xargo-$version.md
exit 1
2020-04-10 15:44:24 -07:00
fi
2020-02-27 14:07:36 -08:00
fi
2019-06-20 16:49:33 -07:00
2018-12-02 21:07:44 -08:00
# Install Criterion
version=v2.3.2
if [[ ! -e criterion-$version.md ]]; then
(
set -e
rm -rf criterion*
download "https://github.com/Snaipe/Criterion/releases/download" \
$version \
"criterion-$version-$machine-x86_64.tar.bz2" \
criterion \
mega
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf criterion-$version.md
exit 1
fi
fi
# Install LLVM
2020-02-11 12:52:13 -08:00
version=v0.0.15
if [[ ! -e llvm-native-$version.md ]]; then
(
set -e
rm -rf llvm-native*
rm -rf xargo
download "https://github.com/solana-labs/llvm-builder/releases/download" \
$version \
"solana-llvm-$machine.tar.bz2" \
llvm-native \
giga
)
2018-12-11 15:20:40 -08:00
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf llvm-native-$version.md
2018-12-01 10:24:04 -08:00
exit 1
fi
2018-11-26 10:35:24 -08:00
fi
# Install Rust-BPF
2020-10-26 17:11:33 -07:00
version=v0.2.5
if [[ ! -e rust-bpf-$version.md ]]; then
(
set -e
rm -rf rust-bpf
rm -rf rust-bpf-$machine-*
rm -rf xargo
download "https://github.com/solana-labs/rust-bpf-builder/releases/download" \
$version \
"solana-rust-bpf-$machine.tar.bz2" \
rust-bpf \
giga
set -ex
./rust-bpf/bin/rustc --print sysroot
set +e
rustup toolchain uninstall bpf
set -e
rustup toolchain link bpf rust-bpf
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf rust-bpf-$version.md
exit 1
fi
fi
# Install Rust-BPF Sysroot sources
2019-12-10 22:27:14 -08:00
version=v0.12
if [[ ! -e rust-bpf-sysroot-$version.md ]]; then
(
set -e
rm -rf rust-bpf-sysroot*
rm -rf xargo
clone "https://github.com/solana-labs/rust-bpf-sysroot.git" \
$version \
rust-bpf-sysroot
)
exitcode=$?
if [[ $exitcode -ne 0 ]]; then
rm -rf rust-bpf-sysroot-$version.md
exit 1
fi
fi
2018-12-11 15:20:40 -08:00
exit 0