common.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # |source| this file
  2. #
  3. # Common utilities shared by other scripts in this directory
  4. #
  5. # The following directive disable complaints about unused variables in this
  6. # file:
  7. # shellcheck disable=2034
  8. #
  9. here="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. || exit 1; pwd)"
  10. # shellcheck source=net/common.sh
  11. source "$here"/net/common.sh
  12. prebuild=
  13. if [[ $1 = "--prebuild" ]]; then
  14. prebuild=true
  15. fi
  16. if [[ -n $USE_INSTALL || ! -f "$SOLANA_ROOT"/Cargo.toml ]]; then
  17. solana_program() {
  18. declare program="$1"
  19. if [[ -z $program ]]; then
  20. printf "solana"
  21. else
  22. if [[ $program == "validator" || $program == "ledger-tool" || $program == "watchtower" || $program == "install" ]]; then
  23. printf "agave-%s" "$program"
  24. else
  25. printf "solana-%s" "$program"
  26. fi
  27. fi
  28. }
  29. else
  30. solana_program() {
  31. declare program="$1"
  32. declare crate="$program"
  33. declare manifest_path
  34. if [[ $program == "bench-tps" || $program == "ledger-tool" ]]; then
  35. manifest_path="--manifest-path $here/dev-bins/Cargo.toml"
  36. fi
  37. if [[ -z $program ]]; then
  38. crate="cli"
  39. program="solana"
  40. elif [[ $program == "validator" || $program == "ledger-tool" || $program == "watchtower" || $program == "install" ]]; then
  41. program="agave-$program"
  42. else
  43. program="solana-$program"
  44. fi
  45. if [[ -n $CARGO_BUILD_PROFILE ]]; then
  46. profile_arg="--profile $CARGO_BUILD_PROFILE"
  47. fi
  48. # Prebuild binaries so that CI sanity check timeout doesn't include build time
  49. if [[ $prebuild ]]; then
  50. (
  51. set -x
  52. # shellcheck disable=SC2086 # Don't want to double quote
  53. cargo $CARGO_TOOLCHAIN build $manifest_path $profile_arg --bin $program
  54. )
  55. fi
  56. printf "cargo $CARGO_TOOLCHAIN run $manifest_path $profile_arg --bin %s %s -- " "$program"
  57. }
  58. fi
  59. solana_bench_tps=$(solana_program bench-tps)
  60. solana_faucet=$(solana_program faucet)
  61. agave_validator=$(solana_program validator)
  62. solana_genesis=$(solana_program genesis)
  63. solana_gossip=$(solana_program gossip)
  64. solana_keygen=$(solana_program keygen)
  65. solana_ledger_tool=$(solana_program ledger-tool)
  66. solana_cli=$(solana_program)
  67. export RUST_BACKTRACE=1
  68. default_arg() {
  69. declare name=$1
  70. declare value=$2
  71. for arg in "${args[@]}"; do
  72. if [[ $arg = "$name" ]]; then
  73. return
  74. fi
  75. done
  76. if [[ -n $value ]]; then
  77. args+=("$name" "$value")
  78. else
  79. args+=("$name")
  80. fi
  81. }
  82. replace_arg() {
  83. declare name=$1
  84. declare value=$2
  85. default_arg "$name" "$value"
  86. declare index=0
  87. for arg in "${args[@]}"; do
  88. index=$((index + 1))
  89. if [[ $arg = "$name" ]]; then
  90. args[$index]="$value"
  91. fi
  92. done
  93. }