Dependencies

Setting up the build environment

Build boost

In future releases of ecflow 5 series, the client/server versions of ecflow do not have to be built with the same boost version. This is because ecflow 5  now uses JSON for client/server communication.

            You will also need to disable python when building ecFlow.  See the instruction under cmake before calling $WK/build_scripts/boost_build.sh (see below)

Build

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 note their locations (paths). Based on this information it will produce the Makefiles needed to compile and install ecFlow

CMake is a cross-platform free software program for managing the build process of software using a compiler-independent method.

Generating the Makefiles with CMake

After changing into the build ecflow directory, the user has to run CMake with his/her own options. The command gives feedback on what requirements are fulfilled and what software is still required. Table below gives an overview of the different options of configure.  The default (without any options) will install in /usr/local/.

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_SERVERbuild the ecFlow serveron
ENABLE_PYTHONenable python interfaceon
ENABLE_UIenable the build of ecflowUI (requires Qt)on
CMAKE_PREFIX_PATH

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


ENABLE_ALL_TESTS

enable performance, migration, memory leak, and regression tests

off
ENABLE_SSL

Encrypted communication for user commands 

Please see: Open SSL for more details.

on
BOOST_ROOT

where to find boost ( if non-standard installation  )

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


ENABLE_STATIC_BOOST_LIBS

By default we build with static boost libs, to use shared boost list set to OFFon

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

Further, the variable CMAKE_CXX_FLAGS can be used to set compiler flags for optimisation or debugging. 

cd $WK
mkdir build; cd build;

# Go with defaults, will build with CMAKE_BUILD_TYPE=Release and install to /usr/local
cmake .. 
# Override install prefix 
# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/apps/ecflow/5.8.1 

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

# ignore Wdeprecated-declarations compiler warning messages and do NOT build python api
# cmake .. -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations"  -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


If you experience a problem with your installation and need to fix your install of dependent libraries like QT, Python, Boost, GCC, etc,  then it is VERY important that you delete the build directory and start cmake build again. (This is because cmake keeps a cache of your configuration, and re-uses this unless the build directory is deleted).

cd $WK
rm -rf build
mkdir build; cd build
cmake ..      # or use whatever cmake configuration you used before


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


export PYTHONPATH=$PYTHONPATH:<prefix>/5.8.1/lib/python3.6/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/5.8.1/lib/python3.6/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.

This can be done using:

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


ecflow_ui: Make a list servers accessible to all users

The GUI used by ecFlow is called ecflow_ui.  This is used to interact and visualize the ecFlow servers.

You can make the list of servers available for your users by:

Python API (from ecflow 5.6.0)

The most up to date python API documentation can be generated. This requires that sphinx-build is available on $PATH.

This step relies on build being complete .i.e ecflow.so must have been built or installed


cd $WK
cd Doc/online
make clean; make html

The api can then be viewed in the browser. Please open file $WK/Doc/online/_build/html/index.html