From a537f04d08ea3bf1dcbe56bee8fb5603453eec63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Aparicio?= Date: Wed, 23 Nov 2016 23:15:34 +0000 Subject: [PATCH] feat: adds preinstall.sh from sharp project --- preinstall.sh | 316 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 preinstall.sh diff --git a/preinstall.sh b/preinstall.sh new file mode 100644 index 0000000..2b987d2 --- /dev/null +++ b/preinstall.sh @@ -0,0 +1,316 @@ +#!/bin/sh + +# Use of this script is deprecated + +echo +echo "WARNING: THIS SCRIPT WILL STOP WORKING AT THE END OF 2016" +echo +echo "WARNING: THIS SCRIPT IS NO LONGER REQUIRED ON MOST 64-BIT LINUX SYSTEMS WHEN USING SHARP V0.12.0+" +echo +echo "See http://sharp.dimens.io/page/install#linux" +echo +echo "If you really, really need this script, it will attempt" +echo "to globally install libvips if not already available." +echo +sleep 5 + +vips_version_minimum=8.4.2 +vips_version_latest_major_minor=8.4 +vips_version_latest_patch=2 + +openslide_version_minimum=3.4.0 +openslide_version_latest_major_minor=3.4 +openslide_version_latest_patch=1 + +install_libvips_from_source() { + echo "Compiling libvips $vips_version_latest_major_minor.$vips_version_latest_patch from source" + 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 + tar zvxf vips-$vips_version_latest_major_minor.$vips_version_latest_patch.tar.gz + cd vips-$vips_version_latest_major_minor.$vips_version_latest_patch + 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 + make + make install + cd .. + rm -rf vips-$vips_version_latest_major_minor.$vips_version_latest_patch + rm vips-$vips_version_latest_major_minor.$vips_version_latest_patch.tar.gz + ldconfig + echo "Installed libvips $(PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --modversion vips)" +} + +install_libopenslide_from_source() { + echo "Compiling openslide $openslide_version_latest_major_minor.$openslide_version_latest_patch from source" + 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 + tar xzvf openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch.tar.gz + cd openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch + PKG_CONFIG_PATH=$pkg_config_path ./configure $1 + make + make install + cd .. + rm -rf openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch + rm openslide-$openslide_version_latest_major_minor.$openslide_version_latest_patch.tar.gz + ldconfig + echo "Installed libopenslide $openslide_version_latest_major_minor.$openslide_version_latest_patch" +} + +sorry() { + echo "Sorry, I don't yet know how to install lib$1 on $2" + exit 1 +} + +pkg_config_path="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig" + +check_if_library_exists() { + PKG_CONFIG_PATH=$pkg_config_path pkg-config --exists $1 + if [ $? -eq 0 ]; then + version_found=$(PKG_CONFIG_PATH=$pkg_config_path pkg-config --modversion $1) + PKG_CONFIG_PATH=$pkg_config_path pkg-config --atleast-version=$2 $1 + if [ $? -eq 0 ]; then + # Found suitable version of libvips + echo "Found lib$1 $version_found" + return 1 + fi + echo "Found lib$1 $version_found but require $2" + else + echo "Could not find lib$1 using a PKG_CONFIG_PATH of '$pkg_config_path'" + fi + return 0 +} + +enable_openslide=0 +# Is libvips already installed, and is it at least the minimum required version? +if [ $# -eq 1 ]; then + if [ "$1" = "--with-openslide" ]; then + echo "Installing vips with openslide support" + enable_openslide=1 + else + echo "Sorry, $1 is not supported. Did you mean --with-openslide?" + exit 1 + fi +fi + +if ! type pkg-config >/dev/null; then + sorry "vips" "a system without pkg-config" +fi + +openslide_exists=0 +if [ $enable_openslide -eq 1 ]; then + check_if_library_exists "openslide" "$openslide_version_minimum" + openslide_exists=$? +fi + +check_if_library_exists "vips" "$vips_version_minimum" +vips_exists=$? +if [ $vips_exists -eq 1 ] && [ $enable_openslide -eq 1 ]; then + if [ $openslide_exists -eq 1 ]; then + # Check if vips compiled with openslide support + vips_with_openslide=`vips list classes | grep -i opensli` + if [ -z $vips_with_openslide ]; then + echo "Vips compiled without openslide support." + else + exit 0 + fi + fi +elif [ $vips_exists -eq 1 ] && [ $enable_openslide -eq 0 ]; then + exit 0 +fi + +# Verify root/sudo access +if [ "$(id -u)" -ne "0" ]; then + echo "Sorry, I need root/sudo access to continue" + exit 1 +fi + +# Deprecation warning +if [ "$(arch)" == "x86_64" ]; then + echo "This script is no longer required on most 64-bit Linux systems when using sharp v0.12.0+" +fi + +# OS-specific installations of libopenslide follows +# Either openslide does not exist, or vips is installed without openslide support +if [ $enable_openslide -eq 1 ] && [ -z $vips_with_openslide ] && [ $openslide_exists -eq 0 ]; then + if [ -f /etc/debian_version ]; then + # Debian Linux + DISTRO=$(lsb_release -c -s) + echo "Detected Debian Linux '$DISTRO'" + case "$DISTRO" in + jessie|vivid|wily|xenial) + # Debian 8, Ubuntu 15 + echo "Installing libopenslide via apt-get" + apt-get install -y libopenslide-dev + ;; + trusty|utopic|qiana|rebecca|rafaela|freya) + # Ubuntu 14, Mint 17 + echo "Installing libopenslide dependencies via apt-get" + 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 + install_libopenslide_from_source + ;; + precise|wheezy|maya) + # Debian 7, Ubuntu 12.04, Mint 13 + echo "Installing libopenslide dependencies via apt-get" + 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 + install_libopenslide_from_source + ;; + *) + # Unsupported Debian-based OS + sorry "openslide" "Debian-based $DISTRO" + ;; + esac + elif [ -f /etc/redhat-release ]; then + # Red Hat Linux + RELEASE=$(cat /etc/redhat-release) + echo "Detected Red Hat Linux '$RELEASE'" + case $RELEASE in + "Red Hat Enterprise Linux release 7."*|"CentOS Linux release 7."*|"Scientific Linux release 7."*) + # RHEL/CentOS 7 + echo "Installing libopenslide dependencies via yum" + yum groupinstall -y "Development Tools" + 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 + install_libopenslide_from_source "--prefix=/usr" + ;; + "Red Hat Enterprise Linux release 6."*|"CentOS release 6."*|"Scientific Linux release 6."*) + # RHEL/CentOS 6 + echo "Installing libopenslide dependencies via yum" + yum groupinstall -y "Development Tools" + 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 + install_libopenslide_from_source "--prefix=/usr" + ;; + "Fedora release 21 "*|"Fedora release 22 "*) + # Fedora 21, 22 + echo "Installing libopenslide via yum" + yum install -y openslide-devel + ;; + *) + # Unsupported RHEL-based OS + sorry "openslide" "$RELEASE" + ;; + esac + elif [ -f /etc/os-release ]; then + RELEASE=$(cat /etc/os-release | grep VERSION) + echo "Detected OpenSuse Linux '$RELEASE'" + case $RELEASE in + *"13.2"*) + echo "Installing libopenslide via zypper" + zypper --gpg-auto-import-keys install -y libopenslide-devel + ;; + esac + elif [ -f /etc/SuSE-brand ]; then + RELEASE=$(cat /etc/SuSE-brand | grep VERSION) + echo "Detected OpenSuse Linux '$RELEASE'" + case $RELEASE in + *"13.1") + echo "Installing libopenslide dependencies via zypper" + zypper --gpg-auto-import-keys install -y --type pattern devel_basis + 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 + install_libopenslide_from_source + ;; + esac + else + # Unsupported OS + sorry "openslide" "$(uname -a)" + fi +fi + +# OS-specific installations of libvips follows + +if [ -f /etc/debian_version ]; then + # Debian Linux + DISTRO=$(lsb_release -c -s) + echo "Detected Debian Linux '$DISTRO'" + case "$DISTRO" in + jessie|trusty|utopic|vivid|wily|xenial|qiana|rebecca|rafaela|freya) + # Debian 8, Ubuntu 14.04+, Mint 17 + echo "Installing libvips dependencies via apt-get" + 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 + install_libvips_from_source + ;; + precise|wheezy|maya) + # Debian 7, Ubuntu 12.04, Mint 13 + echo "Installing libvips dependencies via apt-get" + add-apt-repository -y ppa:lyrasis/precise-backports + apt-get update + 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 + install_libvips_from_source + ;; + *) + # Unsupported Debian-based OS + sorry "vips" "Debian-based $DISTRO" + ;; + esac +elif [ -f /etc/redhat-release ]; then + # Red Hat Linux + RELEASE=$(cat /etc/redhat-release) + echo "Detected Red Hat Linux '$RELEASE'" + case $RELEASE in + "Red Hat Enterprise Linux release 7."*|"CentOS Linux release 7."*|"Scientific Linux release 7."*) + # RHEL/CentOS 7 + echo "Installing libvips dependencies via yum" + yum groupinstall -y "Development Tools" + 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 + install_libvips_from_source "--prefix=/usr" + ;; + "Red Hat Enterprise Linux release 6."*|"CentOS release 6."*|"Scientific Linux release 6."*) + # RHEL/CentOS 6 + echo "Installing libvips dependencies via yum" + yum groupinstall -y "Development Tools" + yum install -y tar curl gtk-doc libxml2-devel libjpeg-turbo-devel libpng-devel libtiff-devel libexif-devel libgsf-devel lcms-devel ImageMagick-devel + yum install -y http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm + yum install -y --enablerepo=nux-dextop gobject-introspection-devel + yum install -y http://rpms.famillecollet.com/enterprise/remi-release-6.rpm + yum install -y --enablerepo=remi libwebp-devel + install_libvips_from_source "--prefix=/usr" + ;; + "Fedora"*) + # Fedora 21, 22, 23 + echo "Installing libvips dependencies via yum" + yum groupinstall -y "Development Tools" + 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 + install_libvips_from_source "--prefix=/usr" + ;; + *) + # Unsupported RHEL-based OS + sorry "vips" "$RELEASE" + ;; + esac +elif [ -f /etc/system-release ]; then + # Probably Amazon Linux + RELEASE=$(cat /etc/system-release) + case $RELEASE in + "Amazon Linux AMI release 2015.03"|"Amazon Linux AMI release 2015.09") + # Amazon Linux + echo "Detected '$RELEASE'" + echo "Installing libvips dependencies via yum" + yum groupinstall -y "Development Tools" + 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 + install_libvips_from_source "--prefix=/usr" + ;; + *) + # Unsupported Amazon Linux version + sorry "vips" "$RELEASE" + ;; + esac +elif [ -f /etc/os-release ]; then + RELEASE=$(cat /etc/os-release | grep VERSION) + echo "Detected OpenSuse Linux '$RELEASE'" + case $RELEASE in + *"13.2"*) + echo "Installing libvips dependencies via zypper" + zypper --gpg-auto-import-keys install -y --type pattern devel_basis + 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 + install_libvips_from_source + ;; + esac +elif [ -f /etc/SuSE-brand ]; then + RELEASE=$(cat /etc/SuSE-brand | grep VERSION) + echo "Detected OpenSuse Linux '$RELEASE'" + case $RELEASE in + *"13.1") + echo "Installing libvips dependencies via zypper" + zypper --gpg-auto-import-keys install -y --type pattern devel_basis + 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 + install_libvips_from_source + ;; + esac +else + # Unsupported OS + sorry "vips" "$(uname -a)" +fi