preinstall.sh 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. #!/bin/bash
  2. vips_version_minimum=8.4.2
  3. vips_version_latest_major_minor=8.4
  4. vips_version_latest_patch=2
  5. openslide_version_minimum=3.4.0
  6. openslide_version_latest_major_minor=3.4
  7. openslide_version_latest_patch=1
  8. install_libvips_from_source() {
  9. echo "Compiling libvips $vips_version_latest_major_minor.$vips_version_latest_patch from source"
  10. curl -O http://www.vips.ecs.soton.ac.uk/supported/$vips_version_latest_major_minor/vips-$vips_version_latest_major_minor.$vips_version_latest_patch.tar.gz
  11. tar zvxf vips-$vips_version_latest_major_minor.$vips_version_latest_patch.tar.gz
  12. cd vips-$vips_version_latest_major_minor.$vips_version_latest_patch
  13. CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" ./configure --disable-debug --disable-docs --disable-static --disable-introspection --disable-dependency-tracking --enable-cxx=yes --without-python --without-orc --without-fftw $1
  14. make
  15. make install
  16. cd ..
  17. rm -rf vips-$vips_version_latest_major_minor.$vips_version_latest_patch
  18. rm vips-$vips_version_latest_major_minor.$vips_version_latest_patch.tar.gz
  19. ldconfig
  20. echo "Installed libvips $(PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --modversion vips)"
  21. }
  22. install_libopenslide_from_source() {
  23. echo "Compiling openslide $openslide_version_latest_major_minor.$openslide_version_latest_patch from source"
  24. curl -O -L https://github.com/openslide/openslide/releases/download/v$openslide_version_latest_major_minor.$openslide_version_latest_patch/openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch.tar.gz
  25. tar xzvf openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch.tar.gz
  26. cd openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch
  27. PKG_CONFIG_PATH=$pkg_config_path ./configure $1
  28. make
  29. make install
  30. cd ..
  31. rm -rf openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch
  32. rm openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch.tar.gz
  33. ldconfig
  34. echo "Installed libopenslide $openslide_version_latest_major_minor.$openslide_version_latest_patch"
  35. }
  36. sorry() {
  37. echo "Sorry, I don't yet know how to install lib$1 on $2"
  38. exit 1
  39. }
  40. pkg_config_path="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig"
  41. check_if_library_exists() {
  42. PKG_CONFIG_PATH=$pkg_config_path pkg-config --exists $1
  43. if [ $? -eq 0 ]; then
  44. version_found=$(PKG_CONFIG_PATH=$pkg_config_path pkg-config --modversion $1)
  45. PKG_CONFIG_PATH=$pkg_config_path pkg-config --atleast-version=$2 $1
  46. if [ $? -eq 0 ]; then
  47. # Found suitable version of libvips
  48. echo "Found lib$1 $version_found"
  49. return 1
  50. fi
  51. echo "Found lib$1 $version_found but require $2"
  52. else
  53. echo "Could not find lib$1 using a PKG_CONFIG_PATH of '$pkg_config_path'"
  54. fi
  55. return 0
  56. }
  57. enable_openslide=0
  58. # Is libvips already installed, and is it at least the minimum required version?
  59. if [ $# -eq 1 ]; then
  60. if [ "$1" = "--with-openslide" ]; then
  61. echo "Installing vips with openslide support"
  62. enable_openslide=1
  63. else
  64. echo "Sorry, $1 is not supported. Did you mean --with-openslide?"
  65. exit 1
  66. fi
  67. fi
  68. if ! type pkg-config >/dev/null; then
  69. sorry "vips" "a system without pkg-config"
  70. fi
  71. openslide_exists=0
  72. if [ $enable_openslide -eq 1 ]; then
  73. check_if_library_exists "openslide" "$openslide_version_minimum"
  74. openslide_exists=$?
  75. fi
  76. check_if_library_exists "vips" "$vips_version_minimum"
  77. vips_exists=$?
  78. if [ $vips_exists -eq 1 ] && [ $enable_openslide -eq 1 ]; then
  79. if [ $openslide_exists -eq 1 ]; then
  80. # Check if vips compiled with openslide support
  81. vips_with_openslide=`vips list classes | grep -i opensli`
  82. if [ -z $vips_with_openslide ]; then
  83. echo "Vips compiled without openslide support."
  84. else
  85. exit 0
  86. fi
  87. fi
  88. elif [ $vips_exists -eq 1 ] && [ $enable_openslide -eq 0 ]; then
  89. exit 0
  90. fi
  91. # Verify root/sudo access
  92. if [ "$(id -u)" -ne "0" ]; then
  93. echo "Sorry, I need root/sudo access to continue"
  94. exit 1
  95. fi
  96. # Deprecation warning
  97. if [ "$(arch)" == "x86_64" ]; then
  98. echo "This script is no longer required on most 64-bit Linux systems when using sharp v0.12.0+"
  99. fi
  100. # OS-specific installations of libopenslide follows
  101. # Either openslide does not exist, or vips is installed without openslide support
  102. if [ $enable_openslide -eq 1 ] && [ -z $vips_with_openslide ] && [ $openslide_exists -eq 0 ]; then
  103. if [ -f /etc/debian_version ]; then
  104. # Debian Linux
  105. DISTRO=$(lsb_release -c -s)
  106. echo "Detected Debian Linux '$DISTRO'"
  107. case "$DISTRO" in
  108. jessie|vivid|wily|xenial)
  109. # Debian 8, Ubuntu 15
  110. echo "Installing libopenslide via apt-get"
  111. apt-get install -y libopenslide-dev
  112. ;;
  113. trusty|utopic|qiana|rebecca|rafaela|freya|rosa|sarah|serena)
  114. # Ubuntu 14, Mint 17+
  115. echo "Installing libopenslide dependencies via apt-get"
  116. apt-get install -y automake build-essential curl zlib1g-dev libopenjpeg-dev libpng12-dev libjpeg-dev libtiff5-dev libgdk-pixbuf2.0-dev libxml2-dev libsqlite3-dev libcairo2-dev libglib2.0-dev sqlite3 libsqlite3-dev
  117. install_libopenslide_from_source
  118. ;;
  119. precise|wheezy|maya)
  120. # Debian 7, Ubuntu 12.04, Mint 13
  121. echo "Installing libopenslide dependencies via apt-get"
  122. apt-get install -y automake build-essential curl zlib1g-dev libopenjpeg-dev libpng12-dev libjpeg-dev libtiff5-dev libgdk-pixbuf2.0-dev libxml2-dev libsqlite3-dev libcairo2-dev libglib2.0-dev sqlite3 libsqlite3-dev
  123. install_libopenslide_from_source
  124. ;;
  125. *)
  126. # Unsupported Debian-based OS
  127. sorry "openslide" "Debian-based $DISTRO"
  128. ;;
  129. esac
  130. elif [ -f /etc/redhat-release ]; then
  131. # Red Hat Linux
  132. RELEASE=$(cat /etc/redhat-release)
  133. echo "Detected Red Hat Linux '$RELEASE'"
  134. case $RELEASE in
  135. "Red Hat Enterprise Linux release 7."*|"CentOS Linux release 7."*|"Scientific Linux release 7."*)
  136. # RHEL/CentOS 7
  137. echo "Installing libopenslide dependencies via yum"
  138. yum groupinstall -y "Development Tools"
  139. yum install -y tar curl libpng-devel libjpeg-devel libxml2-devel zlib-devel openjpeg-devel libtiff-devel gdk-pixbuf2-devel sqlite-devel cairo-devel glib2-devel
  140. install_libopenslide_from_source "--prefix=/usr"
  141. ;;
  142. "Red Hat Enterprise Linux release 6."*|"CentOS release 6."*|"Scientific Linux release 6."*)
  143. # RHEL/CentOS 6
  144. echo "Installing libopenslide dependencies via yum"
  145. yum groupinstall -y "Development Tools"
  146. yum install -y tar curl libpng-devel libjpeg-devel libxml2-devel zlib-devel openjpeg-devel libtiff-devel gdk-pixbuf2-devel sqlite-devel cairo-devel glib2-devel
  147. install_libopenslide_from_source "--prefix=/usr"
  148. ;;
  149. "Fedora release 21 "*|"Fedora release 22 "*)
  150. # Fedora 21, 22
  151. echo "Installing libopenslide via yum"
  152. yum install -y openslide-devel
  153. ;;
  154. *)
  155. # Unsupported RHEL-based OS
  156. sorry "openslide" "$RELEASE"
  157. ;;
  158. esac
  159. elif [ -f /etc/os-release ]; then
  160. RELEASE=$(cat /etc/os-release | grep VERSION)
  161. echo "Detected OpenSuse Linux '$RELEASE'"
  162. case $RELEASE in
  163. *"13.2"*)
  164. echo "Installing libopenslide via zypper"
  165. zypper --gpg-auto-import-keys install -y libopenslide-devel
  166. ;;
  167. esac
  168. elif [ -f /etc/SuSE-brand ]; then
  169. RELEASE=$(cat /etc/SuSE-brand | grep VERSION)
  170. echo "Detected OpenSuse Linux '$RELEASE'"
  171. case $RELEASE in
  172. *"13.1")
  173. echo "Installing libopenslide dependencies via zypper"
  174. zypper --gpg-auto-import-keys install -y --type pattern devel_basis
  175. zypper --gpg-auto-import-keys install -y tar curl libpng16-devel libjpeg-turbo libjpeg8-devel libxml2-devel zlib-devel openjpeg-devel libtiff-devel libgdk_pixbuf-2_0-0 sqlite3-devel cairo-devel glib2-devel
  176. install_libopenslide_from_source
  177. ;;
  178. esac
  179. else
  180. # Unsupported OS
  181. sorry "openslide" "$(uname -a)"
  182. fi
  183. fi
  184. # OS-specific installations of libvips follows
  185. if [ -f /etc/debian_version ]; then
  186. # Debian Linux
  187. DISTRO=$(lsb_release -c -s)
  188. echo "Detected Debian Linux '$DISTRO'"
  189. case "$DISTRO" in
  190. jessie|trusty|utopic|vivid|wily|xenial|qiana|rebecca|rafaela|freya|rosa|sarah|serena)
  191. # Debian 8, Ubuntu 14.04+, Mint 17+
  192. echo "Installing libvips dependencies via apt-get"
  193. apt-get install -y automake build-essential gobject-introspection gtk-doc-tools libglib2.0-dev libjpeg-dev libpng12-dev libwebp-dev libtiff5-dev libexif-dev libgsf-1-dev liblcms2-dev libxml2-dev swig libmagickcore-dev curl
  194. install_libvips_from_source
  195. ;;
  196. precise|wheezy|maya)
  197. # Debian 7, Ubuntu 12.04, Mint 13
  198. echo "Installing libvips dependencies via apt-get"
  199. add-apt-repository -y ppa:lyrasis/precise-backports
  200. apt-get update
  201. apt-get install -y automake build-essential gobject-introspection gtk-doc-tools libglib2.0-dev libjpeg-dev libpng12-dev libwebp-dev libtiff4-dev libexif-dev libgsf-1-dev liblcms2-dev libxml2-dev swig libmagickcore-dev curl
  202. install_libvips_from_source
  203. ;;
  204. *)
  205. # Unsupported Debian-based OS
  206. sorry "vips" "Debian-based $DISTRO"
  207. ;;
  208. esac
  209. elif [ -f /etc/redhat-release ]; then
  210. # Red Hat Linux
  211. RELEASE=$(cat /etc/redhat-release)
  212. echo "Detected Red Hat Linux '$RELEASE'"
  213. case $RELEASE in
  214. "Red Hat Enterprise Linux release 7."*|"CentOS Linux release 7."*|"Scientific Linux release 7."*)
  215. # RHEL/CentOS 7
  216. echo "Installing libvips dependencies via yum"
  217. yum groupinstall -y "Development Tools"
  218. yum install -y tar curl gtk-doc libxml2-devel libjpeg-turbo-devel libpng-devel libtiff-devel libexif-devel libgsf-devel lcms2-devel ImageMagick-devel gobject-introspection-devel libwebp-devel
  219. install_libvips_from_source "--prefix=/usr"
  220. ;;
  221. "Red Hat Enterprise Linux release 6."*|"CentOS release 6."*|"Scientific Linux release 6."*)
  222. # RHEL/CentOS 6
  223. echo "Installing libvips dependencies via yum"
  224. yum groupinstall -y "Development Tools"
  225. yum install -y tar curl gtk-doc libxml2-devel libjpeg-turbo-devel libpng-devel libtiff-devel libexif-devel libgsf-devel lcms-devel ImageMagick-devel
  226. yum install -y http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm
  227. yum install -y --enablerepo=nux-dextop gobject-introspection-devel
  228. yum install -y http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
  229. yum install -y --enablerepo=remi libwebp-devel
  230. install_libvips_from_source "--prefix=/usr"
  231. ;;
  232. "Fedora"*)
  233. # Fedora 21, 22, 23
  234. echo "Installing libvips dependencies via yum"
  235. yum groupinstall -y "Development Tools"
  236. yum install -y gcc-c++ gtk-doc libxml2-devel libjpeg-turbo-devel libpng-devel libtiff-devel libexif-devel lcms-devel ImageMagick-devel gobject-introspection-devel libwebp-devel curl
  237. install_libvips_from_source "--prefix=/usr"
  238. ;;
  239. *)
  240. # Unsupported RHEL-based OS
  241. sorry "vips" "$RELEASE"
  242. ;;
  243. esac
  244. elif [ -f /etc/system-release ]; then
  245. # Probably Amazon Linux
  246. RELEASE=$(cat /etc/system-release)
  247. case $RELEASE in
  248. "Amazon Linux AMI release 2015.03"|"Amazon Linux AMI release 2015.09")
  249. # Amazon Linux
  250. echo "Detected '$RELEASE'"
  251. echo "Installing libvips dependencies via yum"
  252. yum groupinstall -y "Development Tools"
  253. yum install -y gtk-doc libxml2-devel libjpeg-turbo-devel libpng-devel libtiff-devel libexif-devel libgsf-devel lcms2-devel ImageMagick-devel gobject-introspection-devel libwebp-devel curl
  254. install_libvips_from_source "--prefix=/usr"
  255. ;;
  256. *)
  257. # Unsupported Amazon Linux version
  258. sorry "vips" "$RELEASE"
  259. ;;
  260. esac
  261. elif [ -f /etc/os-release ]; then
  262. RELEASE=$(cat /etc/os-release | grep VERSION)
  263. echo "Detected OpenSuse Linux '$RELEASE'"
  264. case $RELEASE in
  265. *"13.2"*)
  266. echo "Installing libvips dependencies via zypper"
  267. zypper --gpg-auto-import-keys install -y --type pattern devel_basis
  268. zypper --gpg-auto-import-keys install -y tar curl gtk-doc libxml2-devel libjpeg-turbo libjpeg8-devel libpng16-devel libtiff-devel libexif-devel liblcms2-devel ImageMagick-devel gobject-introspection-devel libwebp-devel
  269. install_libvips_from_source
  270. ;;
  271. esac
  272. elif [ -f /etc/SuSE-brand ]; then
  273. RELEASE=$(cat /etc/SuSE-brand | grep VERSION)
  274. echo "Detected OpenSuse Linux '$RELEASE'"
  275. case $RELEASE in
  276. *"13.1")
  277. echo "Installing libvips dependencies via zypper"
  278. zypper --gpg-auto-import-keys install -y --type pattern devel_basis
  279. zypper --gpg-auto-import-keys install -y tar curl gtk-doc libxml2-devel libjpeg-turbo libjpeg8-devel libpng16-devel libtiff-devel libexif-devel liblcms2-devel ImageMagick-devel gobject-introspection-devel libwebp-devel
  280. install_libvips_from_source
  281. ;;
  282. esac
  283. else
  284. # Unsupported OS
  285. sorry "vips" "$(uname -a)"
  286. fi