build_gerbera.sh 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #!/bin/bash
  2. Version=2.8
  3. XService=YES
  4. function print_centered {
  5. [[ $# == 0 ]] && return 1
  6. declare -i TERM_COLS="$(tput cols)"
  7. declare -i str_len="${#1}"
  8. [[ $str_len -ge $TERM_COLS ]] && {
  9. echo "$1";
  10. return 0;
  11. }
  12. declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
  13. [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
  14. filler=""
  15. for (( i = 0; i < filler_len; i++ )); do
  16. filler="${filler}${ch}"
  17. done
  18. printf "%s%s%s" "$filler" "$1" "$filler"
  19. [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
  20. printf "\n"
  21. return 0
  22. }
  23. # function to set terminal title
  24. function set-title() {
  25. if [[ -z "$ORIG" ]]; then
  26. ORIG=$PS1
  27. fi
  28. TITLE="\[\e]2;$*\a\]"
  29. PS1=${ORIG}${TITLE}
  30. }
  31. function intro_ {
  32. print_centered "$(tput setaf 165)"
  33. print_centered " _____ __ ";
  34. print_centered " / ___/__ ____/ / ___ _______ _";
  35. print_centered "/ (_ / -_) __/ _ \/ -_) __/ _ \`/";
  36. print_centered "\___/\__/_/ /_.__/\__/_/ \_,_/ ";
  37. print_centered " ";
  38. echo -n "$(tput sgr0)"
  39. print_centered "Gerbera UPNP installation script v$Version"
  40. echo ""
  41. sleep 3
  42. }
  43. function update_ {
  44. echo -e "$(tput setaf 10)\nUpdate/install packages:$(tput sgr0)"
  45. sudo apt-get update
  46. sudo apt-get install uuid-dev libsqlite3-dev libmysqlclient-dev libmagic-dev libexif-dev libcurl4-openssl-dev libspdlog-dev libpugixml-dev -y
  47. sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev libavresample-dev libswscale-dev libswresample-dev libpostproc-dev -y
  48. sudo apt-get install libebml-dev ffmpeg ffmpegthumbnailer libffmpegthumbnailer-dev imagemagick fmtools libfmt-dev libmatroska-dev -y
  49. echo -e ""
  50. }
  51. function version {
  52. echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }';
  53. }
  54. function cmake_ {
  55. echo -e "$(tput setaf 10)\nInstall cmake:$(tput sgr0)"
  56. if [ -x "$(command -v cmake)" ];then flag=1; else flag=0;fi
  57. case $flag in
  58. 0)
  59. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/cmake_3.26.3-1_amd64.deb
  60. sudo dpkg -i cmake_3.26.3-1_amd64.deb
  61. rm cmake_3.26.3-1_amd64.deb
  62. ;;
  63. 1)
  64. cmake_v="$(cmake --version | grep "version" | awk '{print $3}')"
  65. echo "cmake version : $cmake_v"
  66. sleep 2
  67. if ! [ $(version $cmake_v) -ge $(version "3.18") ]
  68. then
  69. echo -e "cmake need update=>"
  70. sudo apt-get -qq remove --purge cmake -y
  71. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/cmake_3.26.3-1_amd64.deb
  72. sudo dpkg -i cmake_3.26.3-1_amd64.deb
  73. rm cmake_3.26.3-1_amd64.deb
  74. else
  75. echo -e "cmake version ok."
  76. sleep 2
  77. fi
  78. ;;
  79. *) echo "Error";;
  80. esac
  81. }
  82. function cmake_source {
  83. echo -e "$(tput setaf 10)\nInstall cmake:$(tput sgr0)"
  84. if [ -x "$(command -v cmake)" ];then flag=1; else flag=0;fi
  85. case $flag in
  86. 0)
  87. wget -c https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.26.3.tar.gz
  88. tar xvfz cmake-3.26.3.tar.gz
  89. cd cmake-3.26.3
  90. ./bootstrap
  91. make
  92. sudo make install
  93. cd ..
  94. rm -r -f cmake-3.26.3
  95. rm cmake-3.26.3.tar.gz
  96. ;;
  97. 1)
  98. cmake_v="$(cmake --version | grep "version" | awk '{print $3}')"
  99. echo "cmake version : $cmake_v"
  100. sleep 2
  101. if ! [ $(version $cmake_v) -ge $(version "3.18") ]
  102. then
  103. echo -e "cmake need update =>:"
  104. wget -c https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3.tar.gz
  105. tar xvfz cmake-3.26.3.tar.gz
  106. cd cmake-3.26.3
  107. ./bootstrap
  108. make
  109. sudo make install
  110. cd ..
  111. rm -r -f cmake-3.26.3
  112. rm cmake-3.26.3.tar.gz
  113. else
  114. echo -e "cmake version ok."
  115. sleep 2
  116. fi
  117. ;;
  118. *) echo "Error";;
  119. esac
  120. }
  121. function build_ {
  122. echo -e "$(tput setaf 10)\nBuild Gerbera:$(tput sgr0)"
  123. cd ~/Build_Cube/options
  124. if [ ! -d gerbera ]
  125. then
  126. #git clone https://github.com/gerbera/gerbera.git
  127. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/gerbera-1.12.1.tar.xz
  128. tar xvfJ gerbera-1.12.1.tar.xz
  129. mv gerbera-1.12.1 gerbera
  130. rm xvfJ gerbera-1.12.1.tar.xz
  131. fi
  132. cd ~/Build_Cube/options/gerbera/scripts
  133. sudo ./install-pupnp.sh
  134. cd ~/Build_Cube/options/gerbera/scripts
  135. sudo ./install-fmt.sh
  136. cd ~/Build_Cube/options/gerbera/scripts
  137. sudo ./install-spdlog.sh
  138. cd ~/Build_Cube/options/gerbera/scripts
  139. sudo ./install-duktape.sh
  140. #cd ~/Build_Cube/options/gerbera/scripts
  141. #sudo ./install-lastfm.sh
  142. cd ~/Build_Cube/options/gerbera/scripts
  143. sudo ./install-pugixml.sh
  144. cd ~/Build_Cube/options/gerbera/scripts
  145. sudo ./install-taglib.sh
  146. echo -e ""
  147. cd ~/Build_Cube/options/gerbera
  148. mkdir build
  149. cd build
  150. cmake .. -DWITH_MAGIC=1 -DWITH_CURL=1 -DWITH_JS=1 -DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_FFMPEGTHUMBNAILER=1 -DWITH_EXIF=1 -DWITH_LASTFM=0 -DWITH_MYSQL=0
  151. make -j4
  152. sudo make install
  153. cd ~
  154. wget -c http://folivier.homelinux.org/cube/pack/gerbera.tar.xz
  155. tar xvfJ gerbera.tar.xz
  156. rm gerbera.tar.xz
  157. echo -e "\n\e[97mEnd of process...\e[0m"
  158. }
  159. function service_ {
  160. cd /home/wareck
  161. if [ -f gerbera.service ];then rm gerbera.service;fi
  162. cat <<'EOF'>> gerbera.service
  163. #!/bin/sh -e
  164. ### BEGIN INIT INFO
  165. # Provides: gerbera
  166. # Required-Start: networking
  167. # Default-Start: 3 4 5
  168. # Default-Stop: 0 6
  169. ### END INIT INFO
  170. case "$1" in
  171. start)
  172. su wareck -c "screen -dmS gerbera /usr/local/bin/gerbera"
  173. ;;
  174. stop)
  175. sudo killall -9 gerbera | true
  176. ;;
  177. *)
  178. echo "Usage: /etc/init.d/gerbera.service {start|stop}"
  179. exit 1
  180. ;;
  181. esac
  182. exit 0
  183. EOF
  184. chmod +x gerbera.service
  185. sudo cp /home/wareck/gerbera.service /etc/init.d/
  186. sudo update-rc.d gerbera.service defaults
  187. sudo rm /home/wareck/gerbera.service
  188. sudo rm /lib/systemd/system/gerbera.service
  189. echo "Done"
  190. }
  191. intro_
  192. update_
  193. cmake_
  194. build_
  195. echo -e "$(tput setaf 10)\nService optional :$(tput sgr0)"
  196. if [ $XService = "YES" ]
  197. then
  198. service_
  199. fi
  200. #while true; do
  201. #read -p "Do you want to install service (y/n) ? " yn
  202. #
  203. #case $yn in
  204. # [Yy] ) service_ ;
  205. # exit 1;;
  206. # [Nn] ) echo exiting...;
  207. # exit;;
  208. # * ) echo invalid response;
  209. # exit 1;;
  210. #esac
  211. #done
  212. echo -e "\n\e[97mEnd of process...\e[0m"