dependency_setup.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #!/bin/sh
  2. set -e
  3. if [ "$(id -u)" != 0 ]; then
  4. SUDO="${SUDO:-$(command -v sudo)}"
  5. else
  6. SUDO="${SUDO:-}"
  7. fi
  8. brew_sh="https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
  9. setup_mac() {
  10. if ! command -v brew >/dev/null; then
  11. echo "brew not found, installing..." >&2
  12. bash -c "$(curl -fL "${brew_sh}")" || return 1
  13. fi
  14. for i in cmake gcc jq pkgconf llvm@13; do
  15. echo "Installing $i with brew..." >&2
  16. brew install "$i" || return 1
  17. done
  18. }
  19. setup_apt() {
  20. apt_deps="git make jq gcc pkg-config libssl-dev"
  21. $1 install $apt_deps || return 1
  22. }
  23. setup_pacman() {
  24. pacman_deps="git make jq gcc pkgconf openssl"
  25. $1 -Sy $pacman_deps || return 1
  26. }
  27. setup_xbps() {
  28. xbps_deps="git make jq gcc pkg-config openssl-devel"
  29. $1 -S $xbps_deps || return 1
  30. }
  31. setup_dnf() {
  32. dnf_deps="git make jq gcc pkg-config openssl-devel findutils lato-fonts"
  33. $1 install -y $dnf_deps || return 1
  34. }
  35. setup_apk() {
  36. apk_deps="git make jq gcc musl-dev openssl-dev"
  37. $1 add $apk_deps || return 1
  38. }
  39. setup_zypper() {
  40. zypper_deps="git make jq gcc pkg-config openssl-devel findutils"
  41. $1 install -y $zypper_deps || return 1
  42. }
  43. setup_emerge() {
  44. emerge_deps="dev-vcs/git app-misc/jq dev-util/pkgconf dev-libs/openssl"
  45. $1 $emerge_deps || return 1
  46. }
  47. case "$(uname -s)" in
  48. Linux)
  49. if command -v apt >/dev/null; then
  50. echo "Setting up for apt" >&2
  51. setup_apt "$SUDO $(command -v apt)" || exit 1
  52. echo "Dependencies installed!" >&2
  53. exit 0
  54. fi
  55. if command -v apt-get >/dev/null; then
  56. echo "Setting up for apt-get" >&2
  57. setup_apt "$SUDO $(command -v apt-get)" || exit 1
  58. echo "Dependencies installed!" >&2
  59. exit 0
  60. fi
  61. if command -v pacman; then
  62. echo "Setting up for pacman" >&2
  63. setup_pacman "$SUDO $(command -v pacman)" || exit 1
  64. echo "Dependencies installed!" >&2
  65. exit 0
  66. fi
  67. if command -v xbps-install; then
  68. echo "Setting up for xbps" >&2
  69. setup_xbps "$SUDO $(command -v xbps-install)" || exit 1
  70. echo "Dependencies installed!" >&2
  71. exit 0
  72. fi
  73. if command -v dnf; then
  74. echo "Setting up for dnf" >&2
  75. setup_dnf "$SUDO $(command -v dnf)" || exit 1
  76. echo "Dependencies installed!" >&2
  77. exit 0
  78. fi
  79. if command -v apk; then
  80. echo "Setting up for apk" >&2
  81. setup_apk "$SUDO $(command -v apk)" || exit 1
  82. echo "Dependencies installed!" >&2
  83. exit 0
  84. fi
  85. if command -v zypper; then
  86. echo "Setting up for zypper" >&2
  87. setup_zypper "$SUDO $(command -v zypper)" || exit 1
  88. echo "Dependencies installed!" >&2
  89. exit 0
  90. fi
  91. if command -v emerge; then
  92. echo "Setting up for emerge" >&2
  93. setup_emerge "$SUDO $(command -v emerge)" || exit 1
  94. echo "Dependencies installed!" >&2
  95. exit 0
  96. fi
  97. echo "Error: Could not recognize your package manager." >&2
  98. exit 1
  99. ;;
  100. Darwin)
  101. echo "Setting up for OSX" >&2
  102. setup_mac || exit 1
  103. echo "Dependencies installed!" >&2
  104. exit 0
  105. ;;
  106. ""|*)
  107. echo "Unsupported OS, sorry." >&2
  108. exit 1
  109. ;;
  110. esac