| 
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-18 11:30:08 -08:00
										 |  |  | mkdir -p "$(dirname "$0")"/../dependencies | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  | 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
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  | # Install Rust-BPF | 
					
						
							| 
									
										
										
										
											2021-04-04 16:58:52 +00:00
										 |  |  | version=v1.5 | 
					
						
							| 
									
										
										
										
											2021-02-18 11:30:08 -08:00
										 |  |  | if [[ ! -e bpf-tools-$version.md || ! -e bpf-tools ]]; then | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  |   ( | 
					
						
							| 
									
										
										
										
											2020-06-08 09:20:12 -07:00
										 |  |  |     set -e | 
					
						
							| 
									
										
										
										
											2021-02-18 11:30:08 -08:00
										 |  |  |     rm -rf bpf-tools* | 
					
						
							| 
									
										
										
										
											2019-06-17 14:24:00 -07:00
										 |  |  |     rm -rf xargo | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |     job="download \
 | 
					
						
							| 
									
										
										
										
											2021-02-18 11:30:08 -08:00
										 |  |  |            https://github.com/solana-labs/bpf-tools/releases/download \
 | 
					
						
							| 
									
										
										
										
											2020-10-27 22:43:34 -07:00
										 |  |  |            $version \
 | 
					
						
							| 
									
										
										
										
											2021-02-18 11:30:08 -08:00
										 |  |  |            solana-bpf-tools-$machine.tar.bz2 \
 | 
					
						
							|  |  |  |            bpf-tools"
 | 
					
						
							|  |  |  |     get $version bpf-tools "$job" | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  |   ) | 
					
						
							|  |  |  |   exitcode=$? | 
					
						
							|  |  |  |   if [[ $exitcode -ne 0 ]]; then | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-02-18 11:30:08 -08:00
										 |  |  |   touch bpf-tools-$version.md | 
					
						
							| 
									
										
										
										
											2021-03-16 16:32:42 +01:00
										 |  |  |   set -ex | 
					
						
							| 
									
										
										
										
											2021-03-29 07:18:55 +00:00
										 |  |  |   ./bpf-tools/rust/bin/rustc --version | 
					
						
							| 
									
										
										
										
											2021-03-16 16:32:42 +01:00
										 |  |  |   ./bpf-tools/rust/bin/rustc --print sysroot | 
					
						
							|  |  |  |   set +e | 
					
						
							|  |  |  |   rustup toolchain uninstall bpf | 
					
						
							|  |  |  |   set -e | 
					
						
							|  |  |  |   rustup toolchain link bpf bpf-tools/rust | 
					
						
							| 
									
										
										
										
											2019-02-25 15:35:45 -08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 |  |  | exit 0 |