Giter Club home page Giter Club logo

CARTA Viewer

Branching model

master:
mainstream branch, no development.

develop:
development branch, usually will merge feature branch to it and include hot fix for those feature. After each phase release, merge develop to master.

each feature branch:
people develop each feature in its branch whose name can be peter/drawImage or issue-131 if we use tickets. When it is finished, use pull request to proceed code review and then merge to develop. After merging, evaluate those added features on develop.

Fix Bug: Except some special cases, such as modifying documents, changing build scripts, low/no-risk fixes, otherwise you need to commit your bug fixes in Hotfix branch or the original feature branch, then make a pull request to do code review.

Introduction to build, run and deploy Desktop ver. of CARTA Viewer on Mac and Linux

Development platform:

  1. CentOS 7 (7.3.1611 tested)
  2. Ubuntu 14.04, Ubuntu 16.04 and Ubuntu 17.04
  3. Mac 10.11, 10.12, 10.13

Supported deployment platform:

  1. CentOS 6, 7
  2. Ubuntu
  3. Mac: OS X El Capitan (10.11), macOS Sierra (10.12), macos high sierra (10.13)

Tested c++ compiler: gcc 4.8.5, 5.4 (used by Ubuntu 16.04) & clang on macOS.

CARTA can be built by Qt 5.3, 5.4, 5.5, 5.6~5.8. Start from 5.6, we need to install QtWebKit & QtWebKit additionally.

Build CARTA

Follow https://github.com/CARTAvis/carta/wiki#build-carta.

Run CARTA

Need to prepare some things needed for running CARTA and also appended parameters.

requirement 1: create needed folders

cd your-carta-work,, execute ./CARTAvis/carta/scripts/setupcartavis.sh.

It is optional. You do not need to setup this and can use CARTA smoothly. But not sure if snaptshot function of CARTA will work OK without setup this.

There are two things you need to know first.

  1. The folder structure and why you need to choose a your-carta-work, take a look here, https://github.com/CARTAvis/carta/wiki/build#step2---choose-your-working-space-folder-of-carta-and-clone-source-code-of-carta.

  2. Due to the history issue, so you should rename this git project folder from carta to CARTAvis. Therefore you can executee git clone https://github.com/CARTAvis/carta.git CARTAvis.

requirement 2: install data of geodetic, ephemerides for some kinds of fits file.

Paste the following content to your terminal to install.

mkdir data ; \
mkdir data/ephemerides ;\
mkdir data/geodetic ; \
svn co https://svn.cv.nrao.edu/svn/casa-data/distro/ephemerides/ data/ephemerides ;\
svn co https://svn.cv.nrao.edu/svn/casa-data/distro/geodetic/ data/geodetic ; \
mv data ~/

The default location is under home directory ~/, and will be improved to better place.

requirement 3: prepare fits, casa image format, or miriad files.

The default loading path is ~/CARTA/Images and you can put there or other places (you need to switch the folder in the file browser of CARTA).

You can also chooose fits file in this git project folder, your-carta-work/CARTAvis/carta/scriptedClient/tests/data when using file browser of CARTA. The other ways to get testing fits files,

  1. https://drive.google.com/open?id=0B22Opq0T64ObTGJhNTBGeU04elU (zip file)
  2. https://svn.cv.nrao.edu/svn/casa-data/trunk/demo/ (some files here)
  3. Contact ASIAA members to get some.

requirement 4: check if the foldler using by dbPath exist.

The default location is $(HOME)/CARTA/cache/pcache.sqlite so create $(HOME)/CARTA/cache if it does not exist.

(optional) modify config.json to overwrite the default embedded setting

Create/Modify the following data to be the content of ~/.cartavis/config.json

{
    "_comment" : "List of plugin directories",
    "pluginDirs": [
        "$(APPDIR)/../plugins",
        "$(APPDIR)/../../../../plugins"
    ],
    "disabledPlugins" : ["tester1", "clock1", "blurpy"],
    "plugins": {
        "PCacheSqlite3" : {
            "dbPath": "$(HOME)/CARTA/cache/pcache.sqlite"
        }
    }
}

$(APPDIR)/../plugins is for Linux. "$(APPDIR)/../../../../plugins" is for Mac.

You can browse more detailed instruction about these parameters from here, http://cartaserver.ddns.net/docs/html/developer/contribute/Writinganimageplugin.html#appendix-e-carta-config-file

Run by command line

  1. Current CARTA needs to execute the following command every time to find correct dynamic/shared Library before running CARTA. Will improve later by using rpath.

    1. setup LD_LIBRARY_PATH on Mac/Linux
    ## 1-1 for casa libs
    ## on Linux, use this
    export LD_LIBRARY_PATH=$CARTAWORKHOME/CARTAvis-externals/ThirdParty/casa/trunk/linux/lib:${LD_LIBRARY_PATH}
    ## on Mac, use this
    export LD_LIBRARY_PATH=$CARTAWORKHOME/CARTAvis-externals/ThirdParty/casa/trunk/darwin/lib:${LD_LIBRARY_PATH}
    ## or this path, should work but not test. It is the symbolic link of the above path,
    ## export LD_LIBRARY_PATH=$CARTAWORKHOME/CARTAvis-externals/ThirdParty/casacore/lib:${LD_LIBRARY_PATH}
    
    ## 1-2 for wcslib, only Mac. no need to setup the path wcslib on Linux, we already use QMAKE_RPATHDIR which seems not work on Mac.
    export LD_LIBRARY_PATH=$CARTAWORKHOME/CARTAvis-externals/ThirdParty/wcslib/lib:${LD_LIBRARY_PATH}
    
    ## 1-3 for /usr/local/lib/libgsl.dylib which is needed by Fitter1D plugin
    export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
    
    1. On Mac, you can use Qt Creator build without setting 1-1, 1-3 thing by (LD_LIBRARY_PATH). In Qt Creator, there is a default enabled setting which will automatically add build library search path to DYLD_LIBRARY_PATH and DYLD_FRAMEWORK_PATH (Mac, work), add build library search path to LD_LIBRARY_PATH (Linux, not work, don't know why).

    2. On Mac, you need to setup below thing, you can copy them as a shell script. [Caution: the below script is setup when build folder is choosed in CARTAvis]

    cd $CARTAWORKHOME/CARTAvis
    export CARTABUILDHOME=`pwd`
    
    mkdir -p $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/
    cp $CARTABUILDHOME/build/cpp/core/libcore.1.dylib $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/
    
    # need to rm for qt creator 4.2, otherwise when build+run together will result in core/libcore.1.dylib not able find out qwt
    rm $CARTABUILDHOME/build/cpp/core/libcore.1.dylib
    cp $CARTABUILDHOME/build/cpp/CartaLib/libCartaLib.1.dylib $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/
    
    install_name_tool -change qwt.framework/Versions/6/qwt $CARTABUILDHOME/ThirdParty/qwt-6.1.2/lib/qwt.framework/Versions/6/qwt $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/MacOS/CARTA
    install_name_tool -change qwt.framework/Versions/6/qwt $CARTABUILDHOME/ThirdParty/qwt-6.1.2/lib/qwt.framework/Versions/6/qwt $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libcore.1.dylib
    
    # not sure the effect of the below line, try comment
    # install_name_tool -change libplugin.dylib $CARTABUILDHOME/build/cpp/plugins/CasaImageLoader/libplugin.dylib $CARTABUILDHOME/build/cpp/plugins/ImageStatistics/libplugin.dylib
    install_name_tool -change libcore.1.dylib  $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libcore.1.dylib $CARTABUILDHOME/build/cpp/plugins/ImageStatistics/libplugin.dylib
    
    install_name_tool -change libCartaLib.1.dylib  $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libCartaLib.1.dylib $CARTABUILDHOME/build/cpp/plugins/ImageStatistics/libplugin.dylib
    install_name_tool -change libcore.1.dylib  $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libcore.1.dylib $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/MacOS/CARTA
    install_name_tool -change libCartaLib.1.dylib  $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libCartaLib.1.dylib $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/MacOS/CARTA
    install_name_tool -change libCartaLib.1.dylib  $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libCartaLib.1.dylib $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libcore.1.dylib
    
    for f in `find . -name libplugin.dylib`; do install_name_tool -change libcore.1.dylib  $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libcore.1.dylib $f; done
    for f in `find . -name libplugin.dylib`; do install_name_tool -change libCartaLib.1.dylib  $CARTABUILDHOME/build/cpp/desktop/CARTA.app/Contents/Frameworks/libCartaLib.1.dylib $f; done
    for f in `find . -name "*.dylib"`; do install_name_tool -change libwcs.5.15.dylib  $CARTABUILDHOME/ThirdParty/wcslib/lib/libwcs.5.15.dylib $f; echo $f; done
    
  2. execute ulimit -n 2000 before running CARTA

  3. To run CARTA binary with parameters, at least should append html file path, example:

$CARTAWORKHOME/CARTAvis/build/cpp/desktop/CARTA --html $CARTAWORKHOME/CARTAvis/carta/html5/desktop/desktopIndex.html

Some of optional parameters:

  1. --scriptPort 9999 for python interface
  2. put /scratch/some-fits-file.fits in the end

Run and Debug by Qt Creator

Ref: https://github.com/CARTAvis/carta/wiki/build#use-qt-creator-to-build-and-debug-will-complement-this-part-later

Deployment: Prepare distributable and packaged installer/zip

Use this repo, https://github.com/cartavis/deploytask.

Third Party Libraries

Third-party Libraries Version license
casacore 2.3+ GPLv2
casa 5.0.0+ GPLv2
ast 8.4.0 LGPLv3
gfortran 4.8+ GPLv3
WCSLIB 5.15 LGPLv3
CFITSIO 3.39 link (NASA license)
GSL 2.3 GPLv3
flex 2.5.37 link (flex license)
RapidJSON 1.02 MIT
qooxdoo 3.5.1 MIT
Qt 5.3+ LGPLv3
Qwt 6.1.2 link (Qwt license)
Python (included for CentOS 6) 2.7 link (Python license)
NumPy (Included for CentOS 6) BSD
Matplotlib (Included for CentOS 6) link (Matplotlib license)
Cython (Included for CentOS 6) Apache
libstdc++ (Included for CentOS 6) 4.8.1+ GCC Runtime Exception

Dynamic/Shared Library search notes for runtime and packaging

  1. On Mac, start from Qt 5.5, the rpath of dependent Qt library will use @rpath instead of using absolute path.

  2. CARTA desktop version is built to CARTA program + dynamic libs (libCARTA, libcore, many libPlugin built from Qt) and use "a few static Third-party library + many dynamic Third-party library".

  3. It seems that Qt-built dynamic libs do not have Search Path issue, at least before moving CARTA program (for packaging).

  4. We use install_name_tool (Mac) and chrpath or PatchELF (Linux) to specify dynamic linking path of each lib. On mac, CARTA is located in CARTA.app/Contents/MacOS/desktop after building. Linux does not have these folder, so we need to have different handles.

CI/CD

CirclCI (docker): https://circleci.com/gh/CARTAvis/carta

Travis CI (Mac): https://travis-ci.org/CARTAvis/carta/. Mac auto build repo: https://goo.gl/3pRsjs.

Introduction to build Server ver. of CARTA Viewer on Linux

https://github.com/CARTAvis/carta/wiki/Server-version-of-CARTA

cartavis's Projects

carta icon carta

To CARTA users, this repo holds the CARTA release packages. Please use this repo to log bugs and feature requests. These will be triaged by the development team and prioritised as necessary in the development cycles.

carta-archived icon carta-archived

CARTA stands for Cube Analysis and Rendering Tool for Astronomy, a new visualization tool designed for the ALMA, the JVLA and the SKA.

carta-backend icon carta-backend

Source code repository for the backend component of CARTA, a new visualization tool designed for the ALMA, the VLA and the SKA pathfinders.

carta-controller icon carta-controller

Source code repository for the server component of CARTA, a new visualization tool designed for the ALMA, the VLA and the SKA pathfinders.

carta-frontend icon carta-frontend

Source code repository for the frontend component of CARTA, a new visualization tool designed for the ALMA, the VLA and the SKA pathfinders.

carta-protobuf icon carta-protobuf

Protocol buffer message definitions for CARTA frontend/backend interface

carta-server icon carta-server

Components used to start CARTA from a web server. These include tools to maintain a user database needed by the CARTA backend when it is started in this way.

carta_robot_test icon carta_robot_test

This repo contains tests using the robotframework and robotframework-selenium library.

casa icon casa

choose a specific commit from https://open-bitbucket.nrao.edu/scm/casa/casa.git and possible minimal required change/patch. Mainly Use rebase. It is using casa version (5.0.0+) around Jul 26, 2017.

casacore icon casacore

choose a specific commit from https://github.com/casacore/casacore and possible minimal required change/patch. Mainly Use rebase. It is using casacore version (2.3+) around Jul 20, 2017

deploytask2018 icon deploytask2018

Repository containing packaging scripts for the new 2018 carta-backend

fits2idia icon fits2idia

C++ implementation of FITS to IDIA-HDF5 converter, optimised using OpenMP

gdrive_uploader icon gdrive_uploader

upload Mac autobuilds made by travis-ci to Google drive. Use Node.js. need to setup Environment Variables: drive_email & drive_key. Python version: pip install --upgrade google-api-python-client.

homebrew-tap-old icon homebrew-tap-old

A repo to put the version-controlled/Customized Homebrew formulas needed by CARTA

icd-rxjs icon icd-rxjs

This is the carta-backend ICD tests based on the RxJS library

libsakura icon libsakura

patched version of libsakura. casa actually uses 3.x which may not have these bugs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.