188 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
cd "$(dirname "$0")"/../dependencies
 | 
						|
 | 
						|
if [[ "$(uname)" = Darwin ]]; then
 | 
						|
  machine=osx
 | 
						|
else
 | 
						|
  machine=linux
 | 
						|
fi
 | 
						|
 | 
						|
download() {
 | 
						|
  set -e
 | 
						|
  declare url="$1/$2/$3"
 | 
						|
  declare version=$2
 | 
						|
  declare filename=$3
 | 
						|
  declare dirname=$4
 | 
						|
  declare progress=$5
 | 
						|
  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
 | 
						|
 | 
						|
  declare args=(
 | 
						|
    "$url" -O "$filename"
 | 
						|
    "--progress=dot:$progress"
 | 
						|
    "--retry-connrefused"
 | 
						|
    "--read-timeout=30"
 | 
						|
  )
 | 
						|
  set -x
 | 
						|
  mkdir -p "$cache_dirname"
 | 
						|
  pushd "$cache_dirname"
 | 
						|
  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
 | 
						|
    return 0
 | 
						|
  fi
 | 
						|
  return 1
 | 
						|
}
 | 
						|
 | 
						|
# Install xargo
 | 
						|
(
 | 
						|
  set -ex
 | 
						|
  # shellcheck disable=SC2154
 | 
						|
  if [[ -n $rust_stable ]]; then
 | 
						|
    cargo +"$rust_stable" install xargo
 | 
						|
  else
 | 
						|
    cargo install xargo
 | 
						|
  fi
 | 
						|
  xargo --version >xargo.md 2>&1
 | 
						|
)
 | 
						|
# shellcheck disable=SC2181
 | 
						|
if [[ $? -ne 0 ]]; then
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# 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
 | 
						|
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
 | 
						|
  )
 | 
						|
  exitcode=$?
 | 
						|
  if [[ $exitcode -ne 0 ]]; then
 | 
						|
    rm -rf llvm-native-$version.md
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
# Install Rust-BPF
 | 
						|
version=v0.2.3
 | 
						|
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
 | 
						|
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
 | 
						|
 | 
						|
exit 0
 |