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