dependency_setup.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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 libmpg123-dev"
  21. $1 install $apt_deps || return 1
  22. }
  23. setup_pacman() {
  24. pacman_deps="git make jq gcc pkgconf mpg123"
  25. $1 -Sy $pacman_deps || return 1
  26. }
  27. setup_xbps() {
  28. xbps_deps="git make jq gcc pkg-config"
  29. $1 -S $xbps_deps || return 1
  30. }
  31. setup_dnf() {
  32. dnf_deps="git make jq gcc pkg-config findutils lato-fonts"
  33. $1 install -y $dnf_deps || return 1
  34. }
  35. setup_apk() {
  36. apk_deps="git make jq gcc musl-dev"
  37. $1 add $apk_deps || return 1
  38. }
  39. setup_zypper() {
  40. zypper_deps="git make jq gcc pkg-config 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"
  45. $1 $emerge_deps || return 1
  46. }
  47. setup_pkg() {
  48. pkg_deps="git bash jq gcc findutils cantarell-fonts devel/pkgconf gmake devel/automake pulseaudio-module-sndio"
  49. $1 install -y $pkg_deps || return 1
  50. }
  51. case "$(uname -s)" in
  52. Linux)
  53. if command -v apt >/dev/null; then
  54. echo "Setting up for apt" >&2
  55. setup_apt "$SUDO $(command -v apt)" || exit 1
  56. echo "Dependencies installed!" >&2
  57. exit 0
  58. fi
  59. if command -v apt-get >/dev/null; then
  60. echo "Setting up for apt-get" >&2
  61. setup_apt "$SUDO $(command -v apt-get)" || exit 1
  62. echo "Dependencies installed!" >&2
  63. exit 0
  64. fi
  65. if command -v pacman; then
  66. echo "Setting up for pacman" >&2
  67. setup_pacman "$SUDO $(command -v pacman)" || exit 1
  68. echo "Dependencies installed!" >&2
  69. exit 0
  70. fi
  71. if command -v xbps-install; then
  72. echo "Setting up for xbps" >&2
  73. setup_xbps "$SUDO $(command -v xbps-install)" || exit 1
  74. echo "Dependencies installed!" >&2
  75. exit 0
  76. fi
  77. if command -v dnf; then
  78. echo "Setting up for dnf" >&2
  79. setup_dnf "$SUDO $(command -v dnf)" || exit 1
  80. echo "Dependencies installed!" >&2
  81. exit 0
  82. fi
  83. if command -v apk; then
  84. echo "Setting up for apk" >&2
  85. setup_apk "$SUDO $(command -v apk)" || exit 1
  86. echo "Dependencies installed!" >&2
  87. exit 0
  88. fi
  89. if command -v zypper; then
  90. echo "Setting up for zypper" >&2
  91. setup_zypper "$SUDO $(command -v zypper)" || exit 1
  92. echo "Dependencies installed!" >&2
  93. exit 0
  94. fi
  95. if command -v emerge; then
  96. echo "Setting up for emerge" >&2
  97. setup_emerge "$SUDO $(command -v emerge)" || exit 1
  98. echo "Dependencies installed!" >&2
  99. exit 0
  100. fi
  101. echo "Error: Could not recognize your package manager." >&2
  102. exit 1
  103. ;;
  104. *BSD*)
  105. if command -v pkg; then
  106. echo "Setting up for pkg/BSD" >&2
  107. setup_pkg "$SUDO $(command -v pkg)" || exit 1
  108. echo "Dependencies installed!" >&2
  109. cat <<'ENDOFCAT' >&2
  110. =======================
  111. Few more things needed:
  112. Install rust from https://www.rust-lang.org/tools/install
  113. Execute: rustup target add wasm32-unknown-unknown
  114. And apply few patches ...
  115. cd ..
  116. git clone --recurse-submodules -j8 https://github.com/stainless-steel/mpg123-sys
  117. cd ./mpg123-sys
  118. sed -e's/$(RM)/rm -f/g' -i.bak source/Makefile.in
  119. patch -p0 build.rs <<'EOF'
  120. 43a44
  121. > .arg(&format!("--with-audio=sndio"))
  122. EOF
  123. cargo build # to see if it works fine
  124. cd ../darkfi
  125. patch -p0 Cargo.toml <<'EOF'
  126. 329a330
  127. > mpg123-sys = { path = "../mpg123-sys" }
  128. EOF
  129. gmake test # no errors expected
  130. gmake
  131. ls -al darkfid ircd dnetview faucetd vanityaddr # list of built executables
  132. ENDOFCAT
  133. exit 0
  134. fi
  135. echo "Error: Could not recognize your package manager." >&2
  136. exit 1
  137. ;;
  138. Darwin)
  139. echo "Setting up for OSX" >&2
  140. setup_mac || exit 1
  141. echo "Dependencies installed!" >&2
  142. exit 0
  143. ;;
  144. ""|*)
  145. echo "Unsupported OS, sorry." >&2
  146. exit 1
  147. ;;
  148. esac