Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

cmake options
doc
default
CMAKE_INSTALL_PREFIXwhere you want to install your Magics library /usr/local
CMAKE_BUILD_TYPE

to select the type of compilation:

  • Debug
  • RelWithDebInfo
  • Release (fully optimised compiler options)
  • Production
Production
Release
CMAKE_CXX_FLAGS More flags  for the C++ compiler 
ENABLE_PYTHONenable python interfaceon
ENABLE_GUIenable build of ecflowviewon
BOOST_ROOT

where to find boost ( if non-standard installation  )

If not specified cmake will look for an environment variable

of the same name.

 

...

Code Block
languagebash
titlecmake/ecbuild
cd $WK
mkdir build; cd build;

# Go with defaults, this should with DCMAKE_BUILD_TYPE=Release
cmake .. 

# build therelease mostwith optimiseddebug executablesinfo  
# cmake .. -DCMAKE_BUILD_TYPE=Release RelWithDebInfo

# Override install prefix, build the most optimised executables 
# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/apps/ecflow -DCMAKE_BUILD_TYPE=Release  

# do not build the gui.
# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/apps/ecflow -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=OFF

# If you do not need the python api, use:
# cmake .. -DENABLE_PYTHON=OFF

# Use -j option to speed up compilation. Determine number of cpu's
CPUS=$(lscpu -p | grep -v '#' | wc -l)
make -j${CPUS}
make check
make install

...

  • Now make sure bjam is accessible from $PATH or use $BOOST_ROOT/bjam  in place bjam below.
  • For installation the following environment variables are required.
    ECFLOW_INSTALL_DIR         # Directory Location for client ,server and gui program's
    ECFLOW_PYTHON_INSTALL_DIR  # Directory Location for ecflow python package
            

    The python installation can be customised, by changing Pyext/jamfile.jam and $BOOST_ROOT/tools/build/v2/site-config.jam

  • We now need to build ecFlow. Currently ecflowview/GUI is only built if environment variable of name ARCH is set to linux:

    Code Block
    languagebash
    cd $WK
    bjam variant=release

     

    On some systems like fedora/redhat you may run into compiler errors which complain about the template depth being exceeded. In this case compile using:

     

    Code Block
    languagebash
    cd $WK
    bjam c++-template-depth=512 variant=release
    
    # using boost 1.53 with gcc 4.8, will have excessive warnings. To prune these warnings use
    bjam c++-template-depth=512 cxxflags=-Wno-unused-local-typedefs variant=release

     

    If you have a multi-core machine, you can speed up the build using,  the -j<n> option. Where ‘n’ is an integer, of the number of cores.

     

    Code Block
    languageapplescript
    CPUS=$(lscpu -p | grep -v '#' | wc -l)
    bjam variant=release -j${CPUS)
  • Once ecFlow is built it can be installed.    Note    NOTE, if you used c++-template-depth=512 || cxxflags=-Wno-unused-local-typedefs, use it gain again for the next step.

     

    Code Block
    languagebash
    bjam variant=release install-all

     

    This will create directories:

    Code Block
    <ECFLOW_INSTALL_DIR>/bin
    <ECFLOW_INSTALL_DIR>/lib
    <ECFLOW_INSTALL_DIR>/doc
    <ECFLOW_INSTALL_DIR>/share
    <ECFLOW_PYTHON_INSTALL_DIR>

    Depending on your umask setting you may need to call chmod 755 on the executables

  • To use the ecFlow Python Api , you need to add/change PYTHONPATH . 

     

    Code Block
    languagebash
    export PYTHONPATH=$PYTHONPATH:$ECFLOW_PYTHON_INSTALL_DIR
    
  • When compiling ecflowview in a system where motif is not installed in the usual location, or where both motif and lesstif are installed, it is possible to export the environment variables MOTIF_INCLUDE and MOTIF_LIBRARY to help bjam to find the right location for include files and libraries.

    Openmotif may be retrieve from IST server and installed locally: wget http://www.ist-inc.com/motif/download/motif_files/openmotif-2.1.32-2_IST.x86_64.rpm rpm2cpio openmotif-2.1.32-2_IST.x86_64.rpm | cpio -idmv

    user shall then compile setting MOTIF_INCLUDE and MOTIF_LIBRARY variable.

...