dependency_setup.sh 4.5 KB

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