Skip to content

Instantly share code, notes, and snippets.

@veggiesaurus
Created September 4, 2017 10:19
Show Gist options
  • Save veggiesaurus/b859f6cf3a46483e6c77b6fdf0b91d83 to your computer and use it in GitHub Desktop.
Save veggiesaurus/b859f6cf3a46483e6c77b6fdf0b91d83 to your computer and use it in GitHub Desktop.
Building CARTA on Ubuntu 17.04
#!/bin/sh
sudo apt-add-repository -y -s ppa:kernsuite/kern-1
sudo apt-add-repository -y multiverse
sudo apt-get update; sudo apt-get -y dist-upgrade
sudo apt install -y qt5-default libqt5webkit5-dev flex bison libbison-dev sqlite sqlite3 libsqlite3-dev libleveldb-dev cython python-matplotlib gfortran libblas-dev libblas3 mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libqt5svg5 libqt5svg5-dev libqt5designer5 libqt5designercomponents5 qttools5-dev libfftw3-dev doxygen libeigen3-dev liblapack-dev wcslib-dev libxml2-dev libxslt1-dev libxerces-c-dev libreadline-dev libncurses5-dev
export CARTAWORKHOME=/home/angus/cartawork
export cartawork=/home/angus/cartawork
mkdir -p $cartawork/CARTAvis-externals/ThirdParty
cd $cartawork/CARTAvis-externals/ThirdParty
# qwt
sudo apt install libqwt-qt5-dev libqwt-qt5-6
mkdir -p $cartawork/CARTAvis-externals/ThirdParty/qwt
ln -s /usr/include/qwt $cartawork/CARTAvis-externals/ThirdParty/qwt/include
mkdir -p $cartawork/CARTAvis-externals/ThirdParty/qwt/lib
ln -s /usr/lib/libqwt-qt5.so $cartawork/CARTAvis-externals/ThirdParty/qwt/lib/libqwt.so
# qooxdoo
cd $cartawork/CARTAvis-externals/ThirdParty
## Install qooxdoo for CARTA
if [ -f qooxdoo-3.5.1-sdk.zip ]
then
echo "alreayd downloaded qooxdoo-3.5.1-sdk.zip"
else
curl -o qooxdoo-3.5.1-sdk.zip -L https://github.com/qooxdoo/qooxdoo/releases/download/release_3_5_1/qooxdoo-3.5.1-sdk.zip
fi
unzip qooxdoo-3.5.1-sdk.zip > /dev/null
# rapidjson - rapidjson-dev is available but appears to date back to late 2014
# (what's downloaded here is newer but not newest version)
cd $cartawork/CARTAvis-externals/ThirdParty
curl -O -L https://github.com/miloyip/rapidjson/archive/v1.0.2.tar.gz
mv v1.0.2.tar.gz rapidjson_v1.0.2.tar.gz
tar xvfz rapidjson_v1.0.2.tar.gz > /dev/null
ln -s rapidjson-1.0.2 rapidjson
# cfitsio
sudo apt install -y libcfitsio-dev
# ast
cd $cartawork/CARTAvis-externals/ThirdParty
curl -O -L http://www.starlink.ac.uk/download/ast/ast-8.4.0.tar.gz
tar xfz ast-8.4.0.tar.gz
mv ast-8.4.0 ast-8.4.0-src
cd ast-8.4.0-src
# ./configure --prefix=`pwd`/../ast/ CPPFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 LDFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0
./configure --prefix=`pwd`/../ast/
make && make install
# gsl
sudo apt install libgsl2 libgsl-dev
# Grimmer's patched version of libsakura to build with gcc 5.4, 4.8
cd $cartawork/CARTAvis-externals/ThirdParty
git clone https://github.com/grimmer0125/libsakura
curl -o gtest-1.7.0.zip -L https://github.com/google/googletest/archive/release-1.7.0.zip
unzip gtest-1.7.0.zip -d libsakura > /dev/null
cd libsakura
ln -s googletest-release-1.7.0 gtest
mkdir -p build
cd build
#echo "Added set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0") and set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0") to CMakeLists.txt" && sleep 60
# sudo apt install liblog4cxx-dev # don't do this; it breaks the build
cmake ..
make
make apidoc
sudo make install
# CASA could find sofa libraries in the debug output
# sudo apt install libsofa-c-dev libsofa-c0
# casa itself
export TARGETOS=linux
cd $cartawork/CARTAvis-externals/ThirdParty
mkdir -p casa
cd casa
git clone https://open-bitbucket.nrao.edu/scm/casa/casa.git trunk
cd trunk
git checkout 77a3c0170c895142883dc1b69c4996f430c9e8ec ## = 5.0.0-mas-193, 20170506
git submodule update --init casacore
cd casacore
mkdir -p build
cd build
cmake -DBoost_NO_BOOST_CMAKE=1 -DCASA_BUILD=1 -DBUILD_TESTING=OFF \
-DUseCasacoreNamespace=1 \
-DCMAKE_INSTALL_PREFIX=../../$TARGETOS -DBUILD_PYTHON=1 \
-DWCSLIB_ROOT_DIR=$cartawork/CARTAvis-externals/ThirdParty/wcslib \
-DCFITSIO_ROOT_DIR=$cartawork/CARTAvis-externals/ThirdParty/cfitsio \
-DCMAKE_BUILD_TYPE=Release -DCXX11=1 ..
cmake -DBoost_NO_BOOST_CMAKE=1 -DCASA_BUILD=1 -DBUILD_TESTING=OFF -DUseCasacoreNamespace=1 -DCMAKE_INSTALL_PREFIX=../../$TARGETOS -DBUILD_PYTHON=1 -DWCSLIB_ROOT_DIR=$cartawork/CARTAvis-externals/ThirdParty/wcslib -DCFITSIO_ROOT_DIR=$cartawork/CARTAvis-externals/ThirdParty/cfitsio -DCMAKE_BUILD_TYPE=Release -DCXX11=1 ..
# it may build fail due to no official parallel build support of casa, switch to use "make" when fail
make -j8 || make
make install
cd ../../code
# buildcasa.sh describes this patch of grimmer's
curl -O https://raw.githubusercontent.com/grimmer0125/tmp/master/casacodereduce3.diff
git apply casacodereduce3.diff
mkdir -p build
cd build
#echo edit ../CMakeLists.txt to add -D_GLIBCXX_USE_CXX11_ABI=0 to DEFAULT_CMAKE_CXX_FLAGS for non-Apple machines; sleep 60
cmake -DUseCrashReporter=0 -DBoost_NO_BOOST_CMAKE=1 '-DEXTRA_C_FLAGS=-DPG_PPU' \
-DUseCasacoreNamespace=1 \
-DWCSLIB_ROOT_DIR=$cartawork/CARTAvis-externals/ThirdParty/wcslib \
-DCFITSIO_ROOT_DIR=$cartawork/CARTAvis-externals/ThirdParty/cfitsio \
-DQWT_ROOT_DIR=$cartawork/CARTAvis-externals/ThirdParty/qwt \
-DLIBSAKURA_ROOT_DIR=/opt/casa/01/lib/libsakura/default/ \
-Darch=$TARGETOS -DCMAKE_BUILD_TYPE=Release ..
# it may build fail due to no official parallel build support of casa
make -j8 || make
mkdir -p $cartawork/CARTAvis-externals/ThirdParty/casacore
mkdir -p $cartawork/CARTAvis-externals/ThirdParty/imageanalysis
cd $cartawork/CARTAvis-externals/ThirdParty/imageanalysis
ln -s $cartawork/CARTAvis-externals/ThirdParty/casa/trunk/$TARGETOS/include/casacode/ include
ln -s $cartawork/CARTAvis-externals/ThirdParty/casa/trunk/$TARGETOS/lib lib
cd ../casacore
ln -s $cartawork/CARTAvis-externals/ThirdParty/casa/trunk/$TARGETOS/include/ include
ln -s $cartawork/CARTAvis-externals/ThirdParty/casa/trunk/$TARGETOS/lib lib
# Setup casacore measures data in default location
sudo mkdir /usr/share/casacore
wget --output-document=- ftp://ftp.atnf.csiro.au/pub/software/measures_data/measures_data.tar.bz2 | sudo tar -xjC /usr/share/casacore
# HDF5 lib
cd $cartawork/CARTAvis-externals/ThirdParty
mkdir -p hdf5/lib
cd hdf5/lib
ln -s /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so libhdf5.so
# Build CARTA itself
cd $CARTAWORKHOME/CARTAvis/carta/html5/common/skel
./generate.py build
mkdir $CARTAWORKHOME/CARTAvis/build
cd $CARTAWORKHOME/CARTAvis/build
CARTA_BUILD_TYPE=dev # could also be release
qmake NOSERVER=1 CARTA_BUILD_TYPE=$CARTA_BUILD_TYPE $CARTAWORKHOME/CARTAvis/carta -r
make -j8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment