Created
September 4, 2017 10:19
-
-
Save veggiesaurus/b859f6cf3a46483e6c77b6fdf0b91d83 to your computer and use it in GitHub Desktop.
Building CARTA on Ubuntu 17.04
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
#!/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