| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-02 14:33:07 -08:00
										 |  |  | if [[ "$(uname)" = Darwin ]]; then | 
					
						
							|  |  |  |   machine=osx | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   machine=linux | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-12-02 21:07:44 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-25 14:41:09 -07:00
										 |  |  | download() { | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |   declare url="$1/$2/$3" | 
					
						
							| 
									
										
										
										
											2020-04-28 21:06:04 -07:00
										 |  |  |   declare filename=$3 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   declare wget_args=( | 
					
						
							| 
									
										
										
										
											2019-05-25 14:41:09 -07:00
										 |  |  |     "$url" -O "$filename" | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     "--progress=dot:giga" | 
					
						
							| 
									
										
										
										
											2019-05-25 14:41:09 -07:00
										 |  |  |     "--retry-connrefused" | 
					
						
							|  |  |  |     "--read-timeout=30" | 
					
						
							|  |  |  |   ) | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |   set -x | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   if $wget_or_curl; then | 
					
						
							|  |  |  |     tar --strip-components 1 -jxf "$filename" || return 1 | 
					
						
							|  |  |  |     { set +x; } 2>/dev/null | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     rm -rf "$filename" | 
					
						
							|  |  |  |     return 0 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   return 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | clone() { | 
					
						
							|  |  |  |   declare url=$1 | 
					
						
							|  |  |  |   declare version=$2 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   rm -rf temp | 
					
						
							|  |  |  |   if ( | 
					
						
							|  |  |  |     set -x | 
					
						
							|  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   if [[ -r $cache_dirname ]]; then | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     ln -sf "$cache_dirname" "$dirname" || return 1 | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     return 0 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   rm -rf "$cache_partial_dirname" || return 1 | 
					
						
							|  |  |  |   mkdir -p "$cache_partial_dirname" || return 1 | 
					
						
							|  |  |  |   pushd "$cache_partial_dirname" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if $job; then | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     popd | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     mv "$cache_partial_dirname" "$cache_dirname" || return 1 | 
					
						
							|  |  |  |     ln -sf "$cache_dirname" "$dirname" || return 1 | 
					
						
							| 
									
										
										
										
											2020-04-06 20:16:58 -07:00
										 |  |  |     return 0 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   popd | 
					
						
							| 
									
										
										
										
											2020-04-06 20:16:58 -07:00
										 |  |  |   return 1 | 
					
						
							| 
									
										
										
										
											2019-05-25 14:41:09 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-26 11:47:41 -07:00
										 |  |  | # 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[@]}" | 
					
						
							|  |  |  |   ) | 
					
						
							|  |  |  |   exitcode=$? | 
					
						
							|  |  |  |   if [[ $exitcode -ne 0 ]]; then | 
					
						
							|  |  |  |     exit 1 | 
					
						
							| 
									
										
										
										
											2020-04-10 15:44:24 -07:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   ./bin/xargo --version >xargo-$version.md 2>&1 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2020-12-07 13:53:28 -08:00
										 |  |  | if [[ $machine == "linux" ]]; then | 
					
						
							|  |  |  |   version=v2.3.3 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   version=v2.3.2 | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  | if [[ ! -e criterion-$version.md || ! -e criterion ]]; then | 
					
						
							| 
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 |  |  |   ( | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     set -e | 
					
						
							| 
									
										
										
										
											2018-12-02 14:33:07 -08:00
										 |  |  |     rm -rf criterion* | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     job="download \
 | 
					
						
							|  |  |  |            https://github.com/Snaipe/Criterion/releases/download \
 | 
					
						
							|  |  |  |            $version \
 | 
					
						
							|  |  |  |            criterion-$version-$machine-x86_64.tar.bz2 \
 | 
					
						
							|  |  |  |            criterion"
 | 
					
						
							|  |  |  |     get $version criterion "$job" | 
					
						
							| 
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 |  |  |   ) | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |   exitcode=$? | 
					
						
							|  |  |  |   if [[ $exitcode -ne 0 ]]; then | 
					
						
							| 
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   touch criterion-$version.md | 
					
						
							| 
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Install LLVM | 
					
						
							| 
									
										
										
										
											2020-02-11 12:52:13 -08:00
										 |  |  | version=v0.0.15 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  | if [[ ! -e llvm-native-$version.md || ! -e llvm-native ]]; then | 
					
						
							| 
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 |  |  |   ( | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     set -e | 
					
						
							| 
									
										
										
										
											2018-12-02 14:33:07 -08:00
										 |  |  |     rm -rf llvm-native* | 
					
						
							| 
									
										
										
										
											2019-06-17 14:24:00 -07:00
										 |  |  |     rm -rf xargo | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     job="download \
 | 
					
						
							|  |  |  |            https://github.com/solana-labs/llvm-builder/releases/download \
 | 
					
						
							|  |  |  |            $version \
 | 
					
						
							|  |  |  |            solana-llvm-$machine.tar.bz2 \
 | 
					
						
							|  |  |  |            llvm-native"
 | 
					
						
							|  |  |  |     get $version llvm-native "$job" | 
					
						
							| 
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 |  |  |   ) | 
					
						
							| 
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 |  |  |   exitcode=$? | 
					
						
							|  |  |  |   if [[ $exitcode -ne 0 ]]; then | 
					
						
							| 
									
										
										
										
											2018-12-01 10:24:04 -08:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   touch llvm-native-$version.md | 
					
						
							| 
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  | # Install Rust-BPF | 
					
						
							| 
									
										
										
										
											2020-10-26 17:11:33 -07:00
										 |  |  | version=v0.2.5 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  | if [[ ! -e rust-bpf-$machine-$version.md || ! -e rust-bpf-$machine ]]; then | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  |   ( | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     set -e | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     rm -rf rust-bpf-$machine* | 
					
						
							| 
									
										
										
										
											2019-06-17 14:24:00 -07:00
										 |  |  |     rm -rf xargo | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     job="download \
 | 
					
						
							|  |  |  |            https://github.com/solana-labs/rust-bpf-builder/releases/download \
 | 
					
						
							|  |  |  |            $version \
 | 
					
						
							|  |  |  |            solana-rust-bpf-$machine.tar.bz2 \
 | 
					
						
							|  |  |  |            rust-bpf-$machine"
 | 
					
						
							|  |  |  |     get $version rust-bpf-$machine "$job" | 
					
						
							| 
									
										
										
										
											2019-02-25 19:09:16 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     set -ex | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     ./rust-bpf-$machine/bin/rustc --print sysroot | 
					
						
							| 
									
										
										
										
											2019-02-25 19:09:16 -08:00
										 |  |  |     set +e | 
					
						
							|  |  |  |     rustup toolchain uninstall bpf | 
					
						
							|  |  |  |     set -e | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     rustup toolchain link bpf rust-bpf-$machine | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  |   ) | 
					
						
							|  |  |  |   exitcode=$? | 
					
						
							|  |  |  |   if [[ $exitcode -ne 0 ]]; then | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   touch rust-bpf-$machine-$version.md | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-28 00:14:22 -08:00
										 |  |  | # Install Rust-BPF Sysroot sources | 
					
						
							| 
									
										
										
										
											2020-11-09 13:40:26 -08:00
										 |  |  | version=v0.13 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  | if [[ ! -e rust-bpf-sysroot-$version.md || ! -e rust-bpf-sysroot ]]; then | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  |   ( | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     set -e | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  |     rm -rf rust-bpf-sysroot* | 
					
						
							| 
									
										
										
										
											2019-06-17 14:24:00 -07:00
										 |  |  |     rm -rf xargo | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     job="clone \
 | 
					
						
							|  |  |  |            https://github.com/solana-labs/rust-bpf-sysroot.git \
 | 
					
						
							|  |  |  |            $version"
 | 
					
						
							|  |  |  |     get $version rust-bpf-sysroot "$job" | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  |   ) | 
					
						
							|  |  |  |   exitcode=$? | 
					
						
							|  |  |  |   if [[ $exitcode -ne 0 ]]; then | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |   touch rust-bpf-sysroot-$version.md | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 |  |  | exit 0 |