dependency_setup.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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. setup_emerge() {
  60. EMERGE="$SUDO $1"
  61. $EMERGE dev-util/cmake app-misc/jq net-misc/wget dev-util/pkgconf \
  62. virtual/libudev media-libs/freetype dev-libs/expat \
  63. net-misc/curl net-libs/libssh media-libs/fontconfig || return 1
  64. # sys-devel/clang failed, but it worked anyway
  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 "$(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 "$(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 "$(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 "$(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 "$(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 "$(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 "$(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 "$(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. Darwin)
  120. echo "Setting up for OSX" >&2
  121. setup_mac || exit 1
  122. echo "Dependencies installed!" >&2
  123. exit 0
  124. ;;
  125. *|"")
  126. echo "Unsupported OS, sorry." >&2
  127. exit 1
  128. ;;
  129. esac