https://github.com/sanger-pathogens/gubbins
Tip revision: f571b771f2604339d795fcfe6a90c6438a085190 authored by Nick Croucher on 01 December 2023, 13:14:37 UTC
Enlarge logo
Enlarge logo
Tip revision: f571b77
install_dependencies.sh
#!/bin/bash
set -x
set -e
start_dir=$(pwd)
# Determine OS type
OS="Linux"
if [[ $OSTYPE == "darwin"* ]]; then
OS="OSX"
fi
# Alias wget on OSX
if [[ $OS == "OSX" ]]; then
function _wget() { curl "${1}" -o $(basename "${1}") ; };
alias wget='_wget'
fi
# Get tree builder options
RAXML_VERSION="8.2.12"
FASTTREE_VERSION="2.1.11"
IQTREE_VERSION="2.0.3"
RAXMLNG_VERSION="1.0.1"
RAPIDNJ_VERSION="2.3.2"
RAXML_DIR="standard-RAxML-$RAXML_VERSION"
RAXML_ZIP_FILE="$RAXML_DIR.tar.gz"
IQTREE_DIR=""
IQTREE_ZIP_FILE=""
if [[ $OS == "Linux" ]]; then
IQTREE_DIR="iqtree-$IQTREE_VERSION-Linux"
IQTREE_ZIP_FILE="$IQTREE_DIR.tar.gz"
elif [[ $OS == "OSX" ]]; then
IQTREE_DIR="iqtree-$IQTREE_VERSION-MacOSX"
IQTREE_ZIP_FILE="$IQTREE_DIR.zip"
fi
FASTTREE_DIR="FastTree-$FASTTREE_VERSION"
FASTTREE_SOURCE="$FASTTREE_DIR.c"
RAXMLNG_DIR="raxmlng_dir"
RAXMLNG_ZIP_FILE=""
if [[ $OS == "Linux" ]]; then
RAXMLNG_ZIP_FILE="raxml-ng_v${RAXMLNG_VERSION}_linux_x86_64.zip"
elif [[ $OS == "OSX" ]]; then
RAXMLNG_ZIP_FILE="raxml-ng_v${RAXMLNG_VERSION}_macos_x86_64.zip"
fi
RAPIDNJ_DIR="rapidnj-$RAPIDNJ_VERSION"
RAPIDNJ_ZIP_FILE="$RAPIDNJ_VERSION.zip"
RAXML_DOWNLOAD_URL="https://github.com/stamatak/standard-RAxML/archive/v$RAXML_VERSION.tar.gz"
FASTTREE_DOWNLOAD_URL="http://www.microbesonline.org/fasttree/$FASTTREE_SOURCE"
IQTREE_DOWNLOAD_URL="https://github.com/Cibiv/IQ-TREE/releases/download/v$IQTREE_VERSION/$IQTREE_ZIP_FILE"
RAXMLNG_DOWNLOAD_URL="https://github.com/amkozlov/raxml-ng/releases/download/$RAXMLNG_VERSION/$RAXMLNG_ZIP_FILE"
RAPIDNJ_DOWNLOAD_URL="https://github.com/johnlees/rapidnj/archive/$RAPIDNJ_ZIP_FILE"
# Make an install location
if [ ! -d 'build' ]; then
mkdir build
fi
cd build
build_dir=$(pwd)
# DOWNLOAD ALL THE THINGS
download () {
url=$1
download_location=$2
if [ -e $download_location ]; then
echo "Skipping download of $url, $download_location already exists"
else
echo "Downloading $url to $download_location"
wget $url -O $download_location
fi
}
download $RAXML_DOWNLOAD_URL $RAXML_ZIP_FILE
download $FASTTREE_DOWNLOAD_URL $FASTTREE_SOURCE
download $IQTREE_DOWNLOAD_URL $IQTREE_ZIP_FILE
download $RAXMLNG_DOWNLOAD_URL $RAXMLNG_ZIP_FILE
download $RAPIDNJ_DOWNLOAD_URL $RAPIDNJ_ZIP_FILE
# Update dependencies
if [[ "$OS" == 'Linux' ]]; then
sudo apt-get update -q
sudo apt-get install -y -q autoconf \
check \
g++ \
libtool \
libsubunit-dev \
pkg-config \
python-dev
fi
# Build all the things
## RAxML
cd $build_dir
if [ ! -d $RAXML_DIR ]; then
tar xzf $RAXML_ZIP_FILE
fi
cd $RAXML_DIR
if [ -e "raxmlHPC" ]; then
echo "Already built single-processor RAxML; skipping build"
else
make -f Makefile.gcc
fi
if [ -e "raxmlHPC-PTHREADS" ]; then
echo "Already built multi-processor RAxML; skipping build"
else
make -f Makefile.PTHREADS.gcc
fi
## FastTree
cd $build_dir
if [ ! -d $FASTTREE_DIR ]; then
mkdir $FASTTREE_DIR
fi
cd $FASTTREE_DIR
if [ -e "$FASTTREE_DIR/FastTree" ]; then
echo "Skipping, FastTree already exists"
else
gcc -O3 -finline-functions -funroll-loops -Wall -o FastTree $build_dir/$FASTTREE_SOURCE -lm
fi
## IQTree
cd $build_dir
if [ ! -d $IQTREE_DIR ]; then
if [[ $OS == "Linux" ]]; then
tar xzf $IQTREE_ZIP_FILE
elif [[ $OS == "OSX" ]]; then
unzip $IQTREE_ZIP_FILE
fi
fi
cd $IQTREE_DIR
if [ -e "bin/iqtree" ]; then
cp bin/iqtree iqtree
fi
## RAxML-NG
cd $build_dir
if [ ! -d $RAXMLNG_DIR ]; then
mkdir $RAXMLNG_DIR
fi
unzip $RAXMLNG_ZIP_FILE
mv raxml-ng $RAXMLNG_DIR
## RapidNJ
cd $build_dir
if [ ! -d $RAPIDNJ_DIR ]; then
unzip $RAPIDNJ_ZIP_FILE
fi
cd $RAPIDNJ_DIR
make
if [ -e "bin/rapidnj" ]; then
cp bin/rapidnj rapidnj
fi
# Setup environment variables
update_path () {
new_dir=$1
if [[ ! "$PATH" =~ (^|:)"${new_dir}"(:|$) ]]; then
export PATH=${new_dir}:${PATH}
fi
}
update_path $build_dir/$RAXML_DIR
update_path $build_dir/$FASTTREE_DIR
update_path $build_dir/$IQTREE_DIR
update_path $build_dir/$RAXMLNG_DIR
update_path $build_dir/$RAPIDNJ_DIR
cd $start_dir
set +x
set +e