(cherry picked from commit 4e0d1b1d4a)
Co-authored-by: Jack May <jack@solana.com>
			
			
This commit is contained in:
		@@ -9,77 +9,78 @@ else
 | 
				
			|||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
download() {
 | 
					download() {
 | 
				
			||||||
  set -e
 | 
					 | 
				
			||||||
  declare url="$1/$2/$3"
 | 
					  declare url="$1/$2/$3"
 | 
				
			||||||
  declare version=$2
 | 
					 | 
				
			||||||
  declare filename=$3
 | 
					  declare filename=$3
 | 
				
			||||||
  declare dirname=$4
 | 
					  declare wget_args=(
 | 
				
			||||||
  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"
 | 
					    "$url" -O "$filename"
 | 
				
			||||||
    "--progress=dot:$progress"
 | 
					    "--progress=dot:giga"
 | 
				
			||||||
    "--retry-connrefused"
 | 
					    "--retry-connrefused"
 | 
				
			||||||
    "--read-timeout=30"
 | 
					    "--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
 | 
					  set -x
 | 
				
			||||||
  mkdir -p "$cache_dirname"
 | 
					  if $wget_or_curl; then
 | 
				
			||||||
  pushd "$cache_dirname"
 | 
					    tar --strip-components 1 -jxf "$filename" || return 1
 | 
				
			||||||
  if wget "${args[@]}"; then
 | 
					    { set +x; } 2>/dev/null
 | 
				
			||||||
    tar --strip-components 1 -jxf "$filename"
 | 
					 | 
				
			||||||
    rm -rf "$filename"
 | 
					    rm -rf "$filename"
 | 
				
			||||||
    echo "$url" >"../$dirname-$version.md"
 | 
					 | 
				
			||||||
    popd
 | 
					 | 
				
			||||||
    link
 | 
					 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  popd
 | 
					 | 
				
			||||||
  rm -rf "$cache_dirname"
 | 
					 | 
				
			||||||
  return 1
 | 
					  return 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clone() {
 | 
					clone() {
 | 
				
			||||||
  set -e
 | 
					 | 
				
			||||||
  declare url=$1
 | 
					  declare url=$1
 | 
				
			||||||
  declare version=$2
 | 
					  declare version=$2
 | 
				
			||||||
  declare dirname=$3
 | 
					 | 
				
			||||||
  declare cache_directory=~/.cache/"$version"
 | 
					 | 
				
			||||||
  declare cache_dirname=$cache_directory/${dirname//:\//_}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  link() {
 | 
					  rm -rf temp
 | 
				
			||||||
    set -e
 | 
					  if (
 | 
				
			||||||
    ln -sf "$cache_dirname" "$dirname"
 | 
					    set -x
 | 
				
			||||||
    ln -sf "$cache_directory/$dirname-$version.md" "$dirname-$version.md"
 | 
					    git clone --recursive --depth 1 --single-branch --branch "$version" "$url" temp
 | 
				
			||||||
  }
 | 
					  ); then
 | 
				
			||||||
 | 
					    (
 | 
				
			||||||
 | 
					      shopt -s dotglob nullglob
 | 
				
			||||||
 | 
					      mv temp/* .
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    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
 | 
					  if [[ -r $cache_dirname ]]; then
 | 
				
			||||||
    link
 | 
					    ln -sf "$cache_dirname" "$dirname" || return 1
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set -x
 | 
					  rm -rf "$cache_partial_dirname" || return 1
 | 
				
			||||||
  mkdir -p "$cache_directory"
 | 
					  mkdir -p "$cache_partial_dirname" || return 1
 | 
				
			||||||
  pushd "$cache_directory"
 | 
					  pushd "$cache_partial_dirname"
 | 
				
			||||||
  cmd="git clone --recursive --depth 1 --single-branch --branch $version $url"
 | 
					
 | 
				
			||||||
  if $cmd; then
 | 
					  if $job; then
 | 
				
			||||||
    echo "$cmd" >"$dirname-$version.md"
 | 
					 | 
				
			||||||
    popd
 | 
					    popd
 | 
				
			||||||
    link
 | 
					    mv "$cache_partial_dirname" "$cache_dirname" || return 1
 | 
				
			||||||
 | 
					    ln -sf "$cache_dirname" "$dirname" || return 1
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  popd
 | 
				
			||||||
  return 1
 | 
					  return 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,98 +96,100 @@ if [[ ! -e xargo-$version.md ]] || [[ ! -x bin/xargo ]]; then
 | 
				
			|||||||
    args+=(install xargo --version "$version" --root .)
 | 
					    args+=(install xargo --version "$version" --root .)
 | 
				
			||||||
    set -ex
 | 
					    set -ex
 | 
				
			||||||
    cargo "${args[@]}"
 | 
					    cargo "${args[@]}"
 | 
				
			||||||
    ./bin/xargo --version >xargo-$version.md 2>&1
 | 
					 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  exitcode=$?
 | 
					  exitcode=$?
 | 
				
			||||||
  if [[ $exitcode -ne 0 ]]; then
 | 
					  if [[ $exitcode -ne 0 ]]; then
 | 
				
			||||||
    rm -rf xargo-$version.md
 | 
					 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  ./bin/xargo --version >xargo-$version.md 2>&1
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install Criterion
 | 
					# Install Criterion
 | 
				
			||||||
version=v2.3.2
 | 
					version=v2.3.2
 | 
				
			||||||
if [[ ! -e criterion-$version.md ]]; then
 | 
					if [[ ! -e criterion-$version.md || ! -e criterion ]]; then
 | 
				
			||||||
  (
 | 
					  (
 | 
				
			||||||
    set -e
 | 
					    set -e
 | 
				
			||||||
    rm -rf criterion*
 | 
					    rm -rf criterion*
 | 
				
			||||||
    download "https://github.com/Snaipe/Criterion/releases/download" \
 | 
					    job="download \
 | 
				
			||||||
      $version \
 | 
					           https://github.com/Snaipe/Criterion/releases/download \
 | 
				
			||||||
      "criterion-$version-$machine-x86_64.tar.bz2" \
 | 
					           $version \
 | 
				
			||||||
      criterion \
 | 
					           criterion-$version-$machine-x86_64.tar.bz2 \
 | 
				
			||||||
      mega
 | 
					           criterion"
 | 
				
			||||||
 | 
					    get $version criterion "$job"
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  exitcode=$?
 | 
					  exitcode=$?
 | 
				
			||||||
  if [[ $exitcode -ne 0 ]]; then
 | 
					  if [[ $exitcode -ne 0 ]]; then
 | 
				
			||||||
    rm -rf criterion-$version.md
 | 
					 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  touch criterion-$version.md
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install LLVM
 | 
					# Install LLVM
 | 
				
			||||||
version=v0.0.15
 | 
					version=v0.0.15
 | 
				
			||||||
if [[ ! -e llvm-native-$version.md ]]; then
 | 
					if [[ ! -e llvm-native-$version.md || ! -e llvm-native ]]; then
 | 
				
			||||||
  (
 | 
					  (
 | 
				
			||||||
    set -e
 | 
					    set -e
 | 
				
			||||||
    rm -rf llvm-native*
 | 
					    rm -rf llvm-native*
 | 
				
			||||||
    rm -rf xargo
 | 
					    rm -rf xargo
 | 
				
			||||||
    download "https://github.com/solana-labs/llvm-builder/releases/download" \
 | 
					    job="download \
 | 
				
			||||||
      $version \
 | 
					           https://github.com/solana-labs/llvm-builder/releases/download \
 | 
				
			||||||
      "solana-llvm-$machine.tar.bz2" \
 | 
					           $version \
 | 
				
			||||||
      llvm-native \
 | 
					           solana-llvm-$machine.tar.bz2 \
 | 
				
			||||||
      giga
 | 
					           llvm-native"
 | 
				
			||||||
 | 
					    get $version llvm-native "$job"
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  exitcode=$?
 | 
					  exitcode=$?
 | 
				
			||||||
  if [[ $exitcode -ne 0 ]]; then
 | 
					  if [[ $exitcode -ne 0 ]]; then
 | 
				
			||||||
    rm -rf llvm-native-$version.md
 | 
					 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  touch llvm-native-$version.md
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install Rust-BPF
 | 
					# Install Rust-BPF
 | 
				
			||||||
version=v0.2.5
 | 
					version=v0.2.5
 | 
				
			||||||
if [[ ! -e rust-bpf-$version.md ]]; then
 | 
					if [[ ! -e rust-bpf-$machine-$version.md || ! -e rust-bpf-$machine ]]; then
 | 
				
			||||||
  (
 | 
					  (
 | 
				
			||||||
    set -e
 | 
					    set -e
 | 
				
			||||||
    rm -rf rust-bpf
 | 
					    rm -rf rust-bpf-$machine*
 | 
				
			||||||
    rm -rf rust-bpf-$machine-*
 | 
					 | 
				
			||||||
    rm -rf xargo
 | 
					    rm -rf xargo
 | 
				
			||||||
    download "https://github.com/solana-labs/rust-bpf-builder/releases/download" \
 | 
					    job="download \
 | 
				
			||||||
      $version \
 | 
					           https://github.com/solana-labs/rust-bpf-builder/releases/download \
 | 
				
			||||||
      "solana-rust-bpf-$machine.tar.bz2" \
 | 
					           $version \
 | 
				
			||||||
      rust-bpf \
 | 
					           solana-rust-bpf-$machine.tar.bz2 \
 | 
				
			||||||
      giga
 | 
					           rust-bpf-$machine"
 | 
				
			||||||
 | 
					    get $version rust-bpf-$machine "$job"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    set -ex
 | 
					    set -ex
 | 
				
			||||||
    ./rust-bpf/bin/rustc --print sysroot
 | 
					    ./rust-bpf-$machine/bin/rustc --print sysroot
 | 
				
			||||||
    set +e
 | 
					    set +e
 | 
				
			||||||
    rustup toolchain uninstall bpf
 | 
					    rustup toolchain uninstall bpf
 | 
				
			||||||
    set -e
 | 
					    set -e
 | 
				
			||||||
    rustup toolchain link bpf rust-bpf
 | 
					    rustup toolchain link bpf rust-bpf-$machine
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  exitcode=$?
 | 
					  exitcode=$?
 | 
				
			||||||
  if [[ $exitcode -ne 0 ]]; then
 | 
					  if [[ $exitcode -ne 0 ]]; then
 | 
				
			||||||
    rm -rf rust-bpf-$version.md
 | 
					 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  touch rust-bpf-$machine-$version.md
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install Rust-BPF Sysroot sources
 | 
					# Install Rust-BPF Sysroot sources
 | 
				
			||||||
version=v0.12
 | 
					version=v0.12
 | 
				
			||||||
if [[ ! -e rust-bpf-sysroot-$version.md ]]; then
 | 
					if [[ ! -e rust-bpf-sysroot-$version.md || ! -e rust-bpf-sysroot ]]; then
 | 
				
			||||||
  (
 | 
					  (
 | 
				
			||||||
    set -e
 | 
					    set -e
 | 
				
			||||||
    rm -rf rust-bpf-sysroot*
 | 
					    rm -rf rust-bpf-sysroot*
 | 
				
			||||||
    rm -rf xargo
 | 
					    rm -rf xargo
 | 
				
			||||||
    clone "https://github.com/solana-labs/rust-bpf-sysroot.git" \
 | 
					    job="clone \
 | 
				
			||||||
      $version \
 | 
					           https://github.com/solana-labs/rust-bpf-sysroot.git \
 | 
				
			||||||
      rust-bpf-sysroot
 | 
					           $version"
 | 
				
			||||||
 | 
					    get $version rust-bpf-sysroot "$job"
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  exitcode=$?
 | 
					  exitcode=$?
 | 
				
			||||||
  if [[ $exitcode -ne 0 ]]; then
 | 
					  if [[ $exitcode -ne 0 ]]; then
 | 
				
			||||||
    rm -rf rust-bpf-sysroot-$version.md
 | 
					 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  touch rust-bpf-sysroot-$version.md
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exit 0
 | 
					exit 0
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user