Просмотр исходного кода

Script: `fetch-core-bpf.sh` (#4844)

* fetch-spl: refactor function parameters

* fetch-spl: extract functions into new script

* fetch-core-bpf: introduce new script

* scripts: drop in `fetch-core-bpf.sh`
Joe C 8 месяцев назад
Родитель
Сommit
f75263b29d
6 измененных файлов с 130 добавлено и 45 удалено
  1. 5 1
      .gitignore
  2. 31 0
      fetch-core-bpf.sh
  3. 64 0
      fetch-programs.sh
  4. 16 44
      fetch-spl.sh
  5. 8 0
      multinode-demo/setup.sh
  6. 6 0
      scripts/run.sh

+ 5 - 1
.gitignore

@@ -26,9 +26,13 @@ log-*/
 /solana.iml
 /.vscode/
 
+# fetch-core-bpf.sh artifacts
+/core-bpf-genesis-args.sh
+/core-bpf-*.so
+
 # fetch-spl.sh artifacts
 /spl-genesis-args.sh
-/spl_*.so
+/spl-*.so
 
 .DS_Store
 # scripts that may be generated by cargo *-bpf commands

+ 31 - 0
fetch-core-bpf.sh

@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+#
+# Fetches the latest Core BPF programs and produces the solana-genesis
+# command-line arguments needed to install them
+#
+
+set -e
+
+source fetch-programs.sh
+
+PREFIX="core-bpf"
+
+programs=()
+
+add_core_bpf_program_to_fetch() {
+  declare name=$1
+  declare version=$2
+  declare address=$3
+  declare loader=$4
+
+  so_name="solana_${name//-/_}_program.so"
+  declare download_url="https://github.com/solana-program/$name/releases/download/program%40$version/$so_name"
+
+  programs+=("$name $version $address $loader $download_url")
+}
+
+add_core_bpf_program_to_fetch address-lookup-table 3.0.0 AddressLookupTab1e1111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111
+add_core_bpf_program_to_fetch config 3.0.0 Config1111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111
+add_core_bpf_program_to_fetch feature-gate 0.0.1 Feature111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111
+
+fetch_programs "$PREFIX" "${programs[@]}"

+ 64 - 0
fetch-programs.sh

@@ -0,0 +1,64 @@
+# Source this file.
+#
+# Fetches on-chain programs and produces the solana-genesis command-line
+# arguments needed to install them
+#
+
+upgradeableLoader=BPFLoaderUpgradeab1e11111111111111111111111
+
+fetch_program() {
+  declare prefix=$1
+  declare name=$2
+  declare version=$3
+  declare address=$4
+  declare loader=$5
+  declare download_url=$6
+
+  declare so=$prefix-$name-$version.so
+
+  if [[ $loader == "$upgradeableLoader" ]]; then
+    genesis_args+=(--upgradeable-program "$address" "$loader" "$so" none)
+  else
+    genesis_args+=(--bpf-program "$address" "$loader" "$so")
+  fi
+
+  if [[ -r $so ]]; then
+    return
+  fi
+
+  if [[ -r ~/.cache/solana-$prefix/$so ]]; then
+    cp ~/.cache/solana-"$prefix"/"$so" "$so"
+  else
+    echo "Downloading $name $version"
+    (
+      set -x
+      curl -L --retry 5 --retry-delay 2 --retry-connrefused -o "$so" "$download_url"
+    )
+
+    mkdir -p ~/.cache/solana-"$prefix"
+    cp "$so" ~/.cache/solana-"$prefix"/"$so"
+  fi
+
+}
+
+fetch_programs() {
+  declare prefix=$1
+  shift
+
+  declare -a programs=("$@")
+
+  for program in "${programs[@]}"; do
+    # shellcheck disable=SC2086
+    fetch_program "$prefix" $program
+  done
+
+  echo "${genesis_args[@]}" > "$prefix"-genesis-args.sh
+
+  echo
+  echo "Available $prefix programs:"
+  ls -l "$prefix"-*.so
+
+  echo
+  echo "solana-genesis command-line arguments ($prefix-genesis-args.sh):"
+  cat "$prefix"-genesis-args.sh
+}

+ 16 - 44
fetch-spl.sh

@@ -6,57 +6,29 @@
 
 set -e
 
-upgradeableLoader=BPFLoaderUpgradeab1e11111111111111111111111
+source fetch-programs.sh
 
-fetch_program() {
+PREFIX="spl"
+
+programs=()
+
+add_spl_program_to_fetch() {
   declare name=$1
   declare version=$2
   declare address=$3
   declare loader=$4
 
-  declare so=spl_$name-$version.so
-
-  if [[ $loader == "$upgradeableLoader" ]]; then
-    genesis_args+=(--upgradeable-program "$address" "$loader" "$so" none)
-  else
-    genesis_args+=(--bpf-program "$address" "$loader" "$so")
-  fi
-
-  if [[ -r $so ]]; then
-    return
-  fi
-
-  if [[ -r ~/.cache/solana-spl/$so ]]; then
-    cp ~/.cache/solana-spl/"$so" "$so"
-  else
-    echo "Downloading $name $version"
-    so_name="spl_${name//-/_}.so"
-    (
-      set -x
-      curl -L --retry 5 --retry-delay 2 --retry-connrefused \
-        -o "$so" \
-        "https://github.com/solana-labs/solana-program-library/releases/download/$name-v$version/$so_name"
-    )
-
-    mkdir -p ~/.cache/solana-spl
-    cp "$so" ~/.cache/solana-spl/"$so"
-  fi
+  so_name="${PREFIX}_${name//-/_}.so"
+  download_url="https://github.com/solana-labs/solana-program-library/releases/download/$name-v$version/$so_name"
 
+  programs+=("$name $version $address $loader $download_url")
 }
 
-fetch_program token 3.5.0 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA BPFLoader2111111111111111111111111111111111
-fetch_program token-2022 5.0.2 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb BPFLoaderUpgradeab1e11111111111111111111111
-fetch_program memo  1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111
-fetch_program memo  3.0.0 MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr BPFLoader2111111111111111111111111111111111
-fetch_program associated-token-account 1.1.2 ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL BPFLoader2111111111111111111111111111111111
-fetch_program feature-proposal 1.0.0 Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse BPFLoader2111111111111111111111111111111111
-
-echo "${genesis_args[@]}" > spl-genesis-args.sh
-
-echo
-echo "Available SPL programs:"
-ls -l spl_*.so
+add_spl_program_to_fetch token 3.5.0 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA BPFLoader2111111111111111111111111111111111
+add_spl_program_to_fetch token-2022 5.0.2 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb BPFLoaderUpgradeab1e11111111111111111111111
+add_spl_program_to_fetch memo  1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111
+add_spl_program_to_fetch memo  3.0.0 MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr BPFLoader2111111111111111111111111111111111
+add_spl_program_to_fetch associated-token-account 1.1.2 ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL BPFLoader2111111111111111111111111111111111
+add_spl_program_to_fetch feature-proposal 1.0.0 Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse BPFLoader2111111111111111111111111111111111
 
-echo
-echo "solana-genesis command-line arguments (spl-genesis-args.sh):"
-cat spl-genesis-args.sh
+fetch_programs "$PREFIX" "${programs[@]}"

+ 8 - 0
multinode-demo/setup.sh

@@ -41,6 +41,14 @@ args=(
                         "$SOLANA_CONFIG_DIR"/bootstrap-validator/stake-account.json
 )
 
+"$SOLANA_ROOT"/fetch-core-bpf.sh
+if [[ -r core-bpf-genesis-args.sh ]]; then
+  CORE_BPF_GENESIS_ARGS=$(cat "$SOLANA_ROOT"/core-bpf-genesis-args.sh)
+  #shellcheck disable=SC2207
+  #shellcheck disable=SC2206
+  args+=($CORE_BPF_GENESIS_ARGS)
+fi
+
 "$SOLANA_ROOT"/fetch-spl.sh
 if [[ -r spl-genesis-args.sh ]]; then
   SPL_GENESIS_ARGS=$(cat "$SOLANA_ROOT"/spl-genesis-args.sh)

+ 6 - 0
scripts/run.sh

@@ -71,6 +71,11 @@ fi
 if [[ -e "$ledgerDir"/genesis.bin || -e "$ledgerDir"/genesis.tar.bz2 ]]; then
   echo "Use existing genesis"
 else
+  ./fetch-core-bpf.sh
+  if [[ -r core-bpf-genesis-args.sh ]]; then
+    CORE_BPF_GENESIS_ARGS=$(cat core-bpf-genesis-args.sh)
+  fi
+
   ./fetch-spl.sh
   if [[ -r spl-genesis-args.sh ]]; then
     SPL_GENESIS_ARGS=$(cat spl-genesis-args.sh)
@@ -86,6 +91,7 @@ else
       "$validator_stake_account" \
     --ledger "$ledgerDir" \
     --cluster-type "$SOLANA_RUN_SH_CLUSTER_TYPE" \
+    $CORE_BPF_GENESIS_ARGS \
     $SPL_GENESIS_ARGS \
     $SOLANA_RUN_SH_GENESIS_ARGS
 fi