dependency_setup.sh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #!/bin/sh
  2. set -e
  3. if [ "$(id -u)" != 0 ]; then
  4. if command -v sudo; then
  5. SUDO="${SUDO:-$(command -v sudo)}"
  6. elif command -v doas; then
  7. SUDO="${SUDO:-$(command -v doas)}"
  8. fi
  9. else
  10. SUDO="${SUDO:-}"
  11. fi
  12. brew_sh="https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
  13. setup_mac() {
  14. if ! command -v brew >/dev/null; then
  15. echo "brew not found, installing..." >&2
  16. bash -c "$(curl -fL "${brew_sh}")" || return 1
  17. fi
  18. for i in cmake gcc pkgconf llvm@13; do
  19. echo "Installing $i with brew..." >&2
  20. brew install "$i" || return 1
  21. done
  22. }
  23. setup_apt() {
  24. apt_deps="git cmake make gcc g++ pkg-config libasound2-dev libclang-dev libfontconfig1-dev liblzma-dev libssl-dev libsqlcipher-dev libsqlite3-dev wabt"
  25. $1 install $apt_deps || return 1
  26. }
  27. setup_pacman() {
  28. pacman_deps="git cmake make gcc pkgconf alsa-lib openssl sqlcipher wabt"
  29. $1 -Sy $pacman_deps || return 1
  30. }
  31. setup_xbps() {
  32. xbps_deps="git make gcc pkg-config alsa-lib-devel openssl-devel sqlcipher-devel wabt"
  33. $1 -S $xbps_deps || return 1
  34. }
  35. setup_dnf() {
  36. dnf_deps="git make gcc pkg-config findutils lato-fonts fontconfig-devel perl-FindBin perl-File-Compare alsa-lib-devel python3-devel alsa-lib-devel openssl-devel sqlcipher-devel libsq3-devel wabt"
  37. $1 install -y $dnf_deps || return 1
  38. }
  39. setup_apk() {
  40. apk_deps="git make gcc musl-dev pkgconfig alsa-lib-dev openssl-dev sqlcipher-dev"
  41. $1 add $apk_deps || return 1
  42. }
  43. setup_zypper() {
  44. zypper_deps="git make gcc pkg-config alsa-devel openssl-devel sqlcipher-devel"
  45. $1 install -y $zypper_deps || return 1
  46. }
  47. setup_emerge() {
  48. emerge_deps="dev-vcs/git media-libs/alsa-lib dev-db/sqlcipher"
  49. $1 $emerge_deps || return 1
  50. }
  51. setup_pkg() {
  52. pkg_deps="git bash gcc findutils cantarell-fonts gmake devel/automake rust wabt llvm cmake sqlcipher pkgconf python python3"
  53. $1 install -y $pkg_deps || return 1
  54. }
  55. setup_pkg_add() {
  56. pkg_add_deps="git bash gcc-11.2.0p6 findutils cantarell-fonts gmake automake-1.15.1"
  57. $1 -I $pkg_add_deps || return 1
  58. }
  59. setup_pkgin() {
  60. pkgin_deps="git bash gcc12 findutils cantarell-fonts pkgconf gmake automake"
  61. $1 -y install $pkgin_deps || return 1
  62. }
  63. case "$(uname -s)" in
  64. Linux)
  65. if command -v apt >/dev/null; then
  66. echo "Setting up for apt" >&2
  67. setup_apt "$SUDO $(command -v apt)" || exit 1
  68. echo "Dependencies installed!" >&2
  69. exit 0
  70. fi
  71. if command -v apt-get >/dev/null; then
  72. echo "Setting up for apt-get" >&2
  73. setup_apt "$SUDO $(command -v apt-get)" || exit 1
  74. echo "Dependencies installed!" >&2
  75. exit 0
  76. fi
  77. if command -v pacman; then
  78. echo "Setting up for pacman" >&2
  79. setup_pacman "$SUDO $(command -v pacman)" || exit 1
  80. echo "Dependencies installed!" >&2
  81. exit 0
  82. fi
  83. if command -v xbps-install; then
  84. echo "Setting up for xbps" >&2
  85. setup_xbps "$SUDO $(command -v xbps-install)" || exit 1
  86. echo "Dependencies installed!" >&2
  87. exit 0
  88. fi
  89. if command -v dnf; then
  90. echo "Setting up for dnf" >&2
  91. setup_dnf "$SUDO $(command -v dnf)" || exit 1
  92. echo "Dependencies installed!" >&2
  93. exit 0
  94. fi
  95. if command -v apk; then
  96. echo "Setting up for apk" >&2
  97. setup_apk "$SUDO $(command -v apk)" || exit 1
  98. echo "Dependencies installed!" >&2
  99. exit 0
  100. fi
  101. if command -v zypper; then
  102. echo "Setting up for zypper" >&2
  103. setup_zypper "$SUDO $(command -v zypper)" || exit 1
  104. echo "Dependencies installed!" >&2
  105. exit 0
  106. fi
  107. if command -v emerge; then
  108. echo "Setting up for emerge" >&2
  109. setup_emerge "$SUDO $(command -v emerge)" || exit 1
  110. echo "Dependencies installed!" >&2
  111. exit 0
  112. fi
  113. echo "Error: Could not recognize your package manager." >&2
  114. exit 1
  115. ;;
  116. *BSD*)
  117. if command -v pkgin; then
  118. echo "Setting up for pkgin/NetBSD" >&2
  119. setup_pkgin "$SUDO $(command -v pkgin)" || exit 1
  120. exit 0
  121. elif command -v pkg; then
  122. echo "Setting up for pkg/FreeBSD" >&2
  123. setup_pkg "$SUDO $(command -v pkg)" || exit 1
  124. exit 0
  125. elif command -v pkg_add; then
  126. echo "Setting up for pkg_add/OpenBSD" >&2
  127. setup_pkg_add "$SUDO $(command -v pkg_add)" || exit 1
  128. echo "Rust support is not yet ready for OpenBSD, see https://github.com/rust-lang/rustup/issues/2168#issuecomment-1505185711"
  129. echo "You may try to compile rustc and cargo yourself or get the latest with:"
  130. echo "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y --default-toolchain stable --default-host x86_64-unknown-openbsd"
  131. exit 0
  132. fi
  133. echo "Error: Could not recognize your package manager." >&2
  134. exit 1
  135. ;;
  136. Darwin)
  137. echo "Setting up for OSX" >&2
  138. setup_mac || exit 1
  139. echo "Dependencies installed!" >&2
  140. exit 0
  141. ;;
  142. ""|*)
  143. echo "Unsupported OS, sorry." >&2
  144. exit 1
  145. ;;
  146. esac