Versions Compared

Key

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

...

  • Boost uses bjam for building the boost libs.
    bjam source is available in boost, hence we first need to build bjam itself:

     

    Code Block
    languagebash
    cd $BOOST_ROOT
    ./bootstrap.sh
  • For python3

    Code Block
    ./bootstrap.sh --with-python=/path/to/python3
    
    # YonYou may need to update $BOOST_ROOT/project-config.jam, with path to executable and path to include files. Note: remember to preserve the spaces, as they are significant.
    # using python
    #     :  # version
    #     :  # cmd-or-prefix
    #     :  # includes
    #     :  # libraries
    #     :  # condition
    #     ;
    using python : 3.5 : python3 : /usr/local/apps/python3/3.5.1-01/include/python3.5m ;
  • Ecflow uses some of compiled libraries in boost. The following script will build the required lib’s, in both debug and release forms and will configure boost build according to your platform.
  • If you do not require the ecflow python api, you can avoid build boost python libs by setting.
            export ECF_NO_PYTHON=1
    before calling $WK/build_scripts/boost_build.sh

     

    Code Block
    languagebash
    cd $BOOST_ROOT
    $WK/build_scripts/boost_1_53_fix.sh    # fix for boost, only for some platforms
    $WK/build_scripts/boost_build.sh       # compile boost libs used by ecFlow

...

  • boost-build/bjam 
  • cmake/ecbuild

It is recommended to use cmake, since boost-build/bjam will be deprecated. Additionally the new GUI(ecflowUI) can only be build with cmake

cmake

As configure, CMake  will run some tests on the customer's system to find out if required third-party software libraries are available and notes their locations (paths). Based on this information it will produces the Makefiles needed to compile and install ecflow

...

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

to select the type of compilation:

  • Debug
  • RelWithDebInfo
  • Release (fully optimised compiler options)
  • Production
Release
CMAKE_CXX_FLAGSmore flags  for the C++ compiler 
ENABLE_PYTHONenable python interfaceon
PYTHON_EXECUTABLEPyhon3.  Path to python3 executable 
ENABLE_UIenable build of ecflowUI (requires Qt)on
CMAKE_PREFIX_PATH

use to provide path to dependent libraries which are installed in a non-system locations.
For example, if you have installed Qt in a non-system location, you should set the path in this variable.

 
ENABLE_GUIenable build of ecflowview (requires X11 and motif)on
ENABLE_ALL_TESTS

enable performance, migration, regression tests.

off
BOOST_ROOT

where to find boost ( if non-standard installation  )

If not specified cmake will look for an environment variable of the same name.

 

The  C++  compilers are chosen by CMake. (This can be overwritten by setting the environment variables CXX on the command line before you call cmake, to the preferred compiler).

...

 

Code Block
languagebash
export PYTHONPATH=$PYTHONPATH:<prefix>/4.1.0/lib/python2.7/site-packages/ecflow
# If you used the default's then <prefix>=/usr/local
# otherwise you should use whatever you entered for -DCMAKE_INSTALL_PREFIX, hence in the examples above we would have:
export PYTHONPATH=$PYTHONPATH:/usr/local/apps/ecflow/4.1.0/lib/python2.7/site-packages/ecflow 

Installing Python to a custom  directory

The default install for ecflow, will install python(if it was enabled) under the directory given to CMAKE_INSTALL_PREFIX.

However sometimes we may need to install the ecflow python module to a different prefix.(starting with release 4.1.1)

This can be done using:

Code Block
cd $WK/build  # change to the build directory
cmake -DCMAKE_INSTALL_PREFIX=/var/tmp/avi/custom -DCOMPONENT=python -P cmake_install.cmake -- make install  # install python module under /var/tmp/avi/custom

 

...

  • 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 build can be customised, by changing Pyext/jamfile.jam and or $BOOST_ROOT/tools/build/v2/site-config.jam.
    To use python3, you need to update/add  in site-config.jam or user-config.jam.

    Code Block
    # Python configuration
        #using python
        #     :  # version
        #     :  # cmd-or-prefix
        #     :  # includes
        #     :  # libraries
        #     :  # condition
        #     ;
    using python : 3.5 : python3 : <path/to/python3/exe> ;
  • To disable ecflow python api.  "export ECF_NO_PYTHON=1"
  • 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, if you used c++-template-depth=512 || cxxflags=-Wno-unused-local-typedefs, use it 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
    

...