build_gerbera.sh 5.9 KB

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