Versions Compared

Key

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

...

  • ecfFlow consists of two tar files i.e.:  

    • boost_1_53_0.tar.gz

    • ecFlow-4.57.0-Source.tar.gz

      Create a directory for the build:

      Code Block
      languagebash
      mkdir /tmp/ecflow_build
  • Copy the the two tar file into this directory, then change directory to /tmp/ecflow_build

  • Un-zip then un-tar the two file files:

    Code Block
    languagebash
    tar -zxf boost_1_53_0.tar.gz
    tar -zxf ecFlow-4.57.0-Source.tar.gz
  • You should have two directories created:

    Code Block
    boost_1_53_0
    ecFlow-4.57.0-Source
    
  • Create two environment variables. These are used by some of scripts:

     

    Code Block
    languagebash
    export WK=/tmp/ecflow_build/ecFlow-4.57.0-Source
    export BOOST_ROOT=/tmp/ecflow_build/boost_1_53_0

...

  • 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
    
    You 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. i.e.
    Code Block
    # 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 ;
  • IF you do not require the ecflow python api, you can avoid building boost python libs by setting.

 

Code Block
languagebash
titleDisable boost python, *IF* ecflow python API not required
 export ECF_NO_PYTHON=1

 

before calling $WK/build_scripts/boost_build.sh (see below)

...

  • 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

    Code Block
    languagebash
    titleBuild boost libraries used by ecflow
    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

 

Build

...

...

cmake

...

 

...

...

It is recommended to use cmake, since boost-build/bjam will be deprecated. Additionally the new GUI(ecflowUI) can only be built 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

...

 

Code Block
languagebash
export PYTHONPATH=$PYTHONPATH:<prefix>/4.5.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.5.0/lib/python2.7/site-packages/ecflow 

Installing ecflow 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.3.0)

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

 

boost-build/bjam

...

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 build can be customised, by changing Pyext/jamfile.jam 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> ;

...

 

...

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

...

...

languagebash

...

cd $WK
bjam variant=release

 

...

 

...

...

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
  • 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.

ecflowview

By default the ecflowview 'server' and ‘ecflowview.menu’ files are placed in  <ECFLOW_INSTALL_DIR>/share/ecflow directory. However you can use ECFLOWVIEW_HOME shell variable to override this.

...

Code Block
<server_name> <machine_name> <port>

...