dependency_setup.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/bin/sh
  2. set -e
  3. if [ "$UID" != 0 ]; then
  4. SUDO="$(command -v sudo)"
  5. else
  6. 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 freetype expat; do
  15. echo "Installing $i with brew..." >&2
  16. brew install "$i" || return 1
  17. done
  18. }
  19. setup_apt() {
  20. APTGET="$SUDO $1"
  21. $APTGET update || return 1
  22. $APTGET install -y build-essential cmake jq wget pkg-config \
  23. clang libclang-dev llvm-dev libudev-dev libfreetype6-dev \
  24. libexpat1-dev curl gcc make libssl-dev fonts-lato \
  25. libfontconfig-dev || return 1
  26. }
  27. setup_pacman() {
  28. PACMAN="$SUDO $1"
  29. $PACMAN -Sy base-devel cmake wget expat freetype2 fontconfig \
  30. jq openssl clang llvm libgudev
  31. }
  32. setup_xbps() {
  33. XBPS="$SUDO $1"
  34. $XBPS -S base-devel cmake wget expat-devel freetype-devel \
  35. fontconfig-devel jq openssl-devel clang libclang llvm \
  36. libllvm12 libgudev-devel
  37. }
  38. setup_dnf() {
  39. DNF="$SUDO $1"
  40. $DNF install -y gcc gcc-c++ kernel-headers cmake jq wget \
  41. pkg-config clang clang-libs llvm-libs \
  42. rust-libudev-devel rust-freetype-rs-devel \
  43. rust-expat-sys-devel openssl-devel findutils \
  44. fontconfig-devel || return 1
  45. }
  46. setup_apk() {
  47. APK="$SUDO $1"
  48. $APK update
  49. $APK add cmake jq wget clang curl gcc make llvm-dev openssl-dev expat-dev \
  50. freetype-dev libudev-zero-dev libgudev-dev pkgconf clang-dev \
  51. fontconfig-dev build-base || return 1
  52. }
  53. setup_zypper() {
  54. ZYPPER="$SUDO $1"
  55. $ZYPPER install -y gcc gcc-c++ kernel-headers cmake jq wget git \
  56. pkg-config clang openssl-devel findutils \
  57. fontconfig-devel || return 1
  58. }
  59. case "$(uname -s)" in
  60. Linux)
  61. if command -v apt >/dev/null; then
  62. echo "Setting up for apt" >&2
  63. setup_apt "$(command -v apt)" || exit 1
  64. echo "Dependencies installed!" >&2
  65. exit 0
  66. fi
  67. if command -v apt-get >/dev/null; then
  68. echo "Setting up for apt-get" >&2
  69. setup_apt "$(command -v apt-get)" || exit 1
  70. echo "Dependencies installed!" >&2
  71. exit 0
  72. fi
  73. if command -v pacman; then
  74. echo "Setting up for pacman" >&2
  75. setup_pacman "$(command -v pacman)" || exit 1
  76. echo "Dependencies installed!" >&2
  77. exit 0
  78. fi
  79. if command -v xbps-install; then
  80. echo "Setting up for xbps" >&2
  81. setup_xbps "$(command -v xbps-install)" || exit 1
  82. echo "Dependencies installed!" >&2
  83. exit 0
  84. fi
  85. if command -v dnf; then
  86. echo "Setting up for dnf" >&2
  87. setup_dnf "$(command -v dnf)" || exit 1
  88. echo "Dependencies installed!" >&2
  89. exit 0
  90. fi
  91. if command -v apk; then
  92. echo "Setting up for apk" >&2
  93. setup_apk "$(command -v apk)" || exit 1
  94. echo "Dependencies installed!" >&2
  95. exit 0
  96. fi
  97. if command -v zypper; then
  98. echo "Setting up for zypper" >&2
  99. setup_zypper "$(command -v zypper)" || exit 1
  100. echo "Dependencies installed!" >&2
  101. exit 0
  102. fi
  103. echo "Error: Could not recognize your package manager." >&2
  104. exit 1
  105. ;;
  106. Darwin)
  107. echo "Setting up for OSX" >&2
  108. setup_mac || exit 1
  109. echo "Dependencies installed!" >&2
  110. exit 0
  111. ;;
  112. *|"")
  113. echo "Unsupported OS, sorry." >&2
  114. exit 1
  115. ;;
  116. esac