Last active
August 29, 2015 14:23
-
-
Save aspratyush/01352d8729f8a5112fad to your computer and use it in GitHub Desktop.
Torch7 install for Fedora 22
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
###################################################################### | |
# This script installs required dependencies for Torch7 | |
###################################################################### | |
install_openblas() { | |
# Get and build OpenBlas (Torch is much better with a decent Blas) | |
cd /tmp/ | |
git clone https://github.com/xianyi/OpenBLAS.git -b master | |
cd OpenBLAS | |
if [ $(getconf _NPROCESSORS_ONLN) = 1 ]; then | |
make NO_AFFINITY=1 USE_OPENMP=0 USE_THREAD=0 | |
else | |
make NO_AFFINITY=1 USE_OPENMP=1 | |
fi | |
RET=$?; | |
if [ $RET -ne 0 ]; then | |
echo "Error. OpenBLAS could not be compiled"; | |
exit $RET; | |
fi | |
sudo make install | |
RET=$?; | |
if [ $RET -ne 0 ]; then | |
echo "Error. OpenBLAS could not be installed"; | |
exit $RET; | |
fi | |
} | |
install_openblas_AUR() { | |
# build and install an OpenBLAS package for Archlinux | |
cd /tmp && \ | |
curl https://aur.archlinux.org/packages/op/openblas-lapack/openblas-lapack.tar.gz | tar zxf - && \ | |
cd openblas-lapack && \ | |
makepkg -csi | |
} | |
chekupdates_archlinux() { | |
# checks if archlinux is up to date | |
if [[ -n $(checkupdates) ]]; then | |
echo "It seems that your system is not up to date." | |
echo "It is recommended to update your system before going any further." | |
read -p "Continue installation ? [y/N] " yn | |
case $yn in | |
Y|y ) echo "Continuing...";; | |
N|n ) ;; | |
* ) echo "Installation aborted." | |
echo "Relauch this script after updating your system with 'pacman -Syu'." | |
exit 0 | |
esac | |
fi | |
} | |
# Based on Platform: | |
if [[ `uname` == 'Darwin' ]]; then | |
# GCC? | |
if [[ `which gcc` == '' ]]; then | |
echo "MacOS doesn't come with GCC: please install XCode and the command line tools." | |
exit 1 | |
fi | |
# Install Homebrew (pkg manager): | |
if [[ `which brew` == '' ]]; then | |
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" | |
fi | |
# Install dependencies: | |
brew update | |
brew install git readline cmake wget qt | |
brew install libjpeg imagemagick zeromq graphicsmagick | |
brew link readline --force | |
brew install caskroom/cask/brew-cask | |
brew cask install xquartz | |
brew remove gnuplot | |
brew install gnuplot --with-wxmac --with-cairo --with-pdflib-lite --with-x11 --without-lua | |
elif [[ "$(uname)" == 'Linux' ]]; then | |
if [[ -r /etc/os-release ]]; then | |
# this will get the required information without dirtying any env state | |
DIST_VERS="$( ( . /etc/os-release &>/dev/null | |
echo "$ID $VERSION_ID") )" | |
DISTRO="${DIST_VERS%% *}" # get our distro name | |
VERSION="${DIST_VERS##* }" # get our version number | |
elif [[ -r /etc/redhat-release ]]; then | |
DIST_VERS=( $( cat /etc/redhat-release ) ) # make the file an array | |
DISTRO="${DIST_VERS[0],,}" # get the first element and get lcase | |
VERS="${DIST_VERS[2]}" # get the third element (version) | |
elif [[ -r /etc/lsb-release ]]; then | |
DIST_VERS="$( ( . /etc/lsb-release &>/dev/null | |
echo "${DISTRIB_ID,,} $DISTRIB_RELEASE") )" | |
DISTRO="${DIST_VERS%% *}" # get our distro name | |
VERSION="${DIST_VERS##* }" # get our version number | |
else # well, I'm out of ideas for now | |
echo '==> Failed to determine distro and version.' | |
exit 1 | |
fi | |
# Detect fedora | |
if [[ "$DISTRO" = "fedora" ]]; then | |
distribution="fedora" | |
fedora_major_version="$VERSION" | |
# Detect archlinux | |
elif [[ "$DISTRO" = "arch" ]]; then | |
distribution="archlinux" | |
# Detect Ubuntu | |
elif [[ "$DISTRO" = "ubuntu" ]]; then | |
export DEBIAN_FRONTEND=noninteractive | |
distribution="ubuntu" | |
ubuntu_major_version="${VERSION%%.*}" | |
# Detect CentOS | |
elif [[ "$DISTRO" = "centos" ]]; then | |
distribution="centos" | |
centos_major_version="$VERSION" | |
else | |
echo '==> Only Ubuntu, Fedora, Archlinux and CentOS distributions are supported.' | |
exit 1 | |
fi | |
# Install dependencies for Torch: | |
if [[ $distribution == 'ubuntu' ]]; then | |
declare -a target_pkgs | |
target_pkgs=( build-essential gcc g++ curl \ | |
cmake libreadline-dev git-core libqt4-core libqt4-gui \ | |
libqt4-dev libjpeg-dev libpng-dev ncurses-dev \ | |
imagemagick libzmq3-dev gfortran unzip gnuplot \ | |
gnuplot-x11 ipython ) | |
sudo apt-get update | |
# python-software-properties is required for apt-add-repository | |
sudo apt-get install -y python-software-properties | |
if [[ $ubuntu_major_version == '14' ]]; then | |
echo '==> Found Ubuntu version 14.xx, installing dependencies' | |
sudo apt-get install -y software-properties-common \ | |
libgraphicsmagick1-dev nodejs npm libfftw3-dev sox libsox-dev \ | |
libsox-fmt-all | |
sudo add-apt-repository -y ppa:jtaylor/ipython | |
else | |
sudo add-apt-repository -y ppa:chris-lea/zeromq | |
sudo add-apt-repository -y ppa:chris-lea/node.js | |
fi | |
sudo apt-get update | |
sudo apt-get install -y "${target_pkgs[@]}" | |
install_openblas | |
elif [[ $distribution == 'archlinux' ]]; then | |
echo "Archlinux installation" | |
chekupdates_archlinux | |
sudo pacman -S --quiet --noconfirm \ | |
cmake curl readline ncurses git \ | |
gnuplot unzip libjpeg-turbo libpng libpng \ | |
imagemagick graphicsmagick fftw sox zeromq \ | |
qt4 qtwebkit | |
# if GCC is not installed yet | |
(pacman -Qi gcc &>/dev/null) || \ | |
(pacman -Qi gcc-multilib &>/dev/null) ; | |
gcc_installed=$? | |
if [[ $gcc_installed -ne 0 ]]; then | |
if [[ "machine:`uname -m`" == "machine:x86_64" ]]; then | |
gcc_package="gcc-multilib" | |
else | |
gcc_package="gcc" | |
fi | |
sudo pacman -S --quiet --noconfirm ${gcc_package} gcc-fortran | |
fi | |
# if openblas is not installed yet | |
(pacman -Qs openblas &> /dev/null) ; | |
openblas_installed=$? | |
if [[ $openblas_installed -ne 0 ]]; then | |
install_openblas_AUR | |
else | |
echo "OpenBLAS is already installed" | |
fi | |
elif [[ $distribution == 'fedora' ]]; then | |
if [[ $fedora_major_version == '20' ]]; then | |
sudo yum install -y cmake curl readline-devel ncurses-devel \ | |
gcc-c++ gcc-gfortran git gnuplot unzip \ | |
nodejs npm libjpeg-turbo-devel libpng-devel \ | |
ImageMagick GraphicsMagick-devel fftw-devel \ | |
sox-devel sox zeromq3-devel \ | |
qt-devel qtwebkit-devel sox-plugins-freeworld \ | |
python-ipython | |
install_openblas | |
elif [[ $fedora_major_version == '22' ]]; then | |
#using dnf - since yum has been deprecated | |
#sox-plugins-freeworld is not yet available in repos for F22 | |
sudo dnf install -y cmake curl readline-devel ncurses-devel \ | |
gcc-c++ gcc-gfortran git gnuplot unzip \ | |
nodejs npm libjpeg-turbo-devel libpng-devel \ | |
ImageMagick GraphicsMagick-devel fftw-devel \ | |
sox-devel sox qt-devel qtwebkit-devel \ | |
python-ipython czmq czmq-devel | |
install_openblas | |
else | |
echo "Only Fedora 20 or Fedora 22 is supported for now, aborting." | |
exit 1 | |
fi | |
elif [[ $distribution == 'centos' ]]; then | |
if [[ $centos_major_version == '7' ]]; then | |
sudo yum install -y epel-release # a lot of things live in EPEL | |
sudo yum install -y cmake curl readline-devel ncurses-devel \ | |
gcc-c++ gcc-gfortran git gnuplot unzip \ | |
nodejs npm libjpeg-turbo-devel libpng-devel \ | |
ImageMagick GraphicsMagick-devel fftw-devel \ | |
sox-devel sox zeromq3-devel \ | |
qt-devel qtwebkit-devel sox-plugins-freeworld | |
sudo yum install -y python-ipython | |
install_openblas | |
else | |
echo "Only CentOS 7 is supported for now, aborting." | |
exit 1 | |
fi | |
fi | |
else | |
# Unsupported | |
echo '==> platform not supported, aborting' | |
exit 1 | |
fi | |
ipython_exists=$(command -v ipython) | |
if [[ $ipython_exists ]]; then { | |
ipython_version=$(ipython --version|cut -f1 -d'.') | |
if [[ $ipython_version != 2 && $ipython_version != 3 ]]; then { | |
echo 'WARNING: Your ipython version is too old. Type "ipython --version" to see this. Should be at least version 2' | |
} fi | |
} fi | |
# Done. | |
echo "==> Torch7's dependencies have been installed" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment