If you intend to use ecFlow Python API, You will need to install Python. (install python-dev (sudo apt-get install python-dev))
Please ensure that python is accessible on $PATH otherwise, you may need to customise $BOOST_ROOT/tools/build/v2/site-config.jam .
The python installation should include the development packages
Xlib, X11, XMotif for ecflowview .
Do not use Lesstif library to compile ecflowview as a replacement for Motif.
OpenMotif can be downloaded from http://www.ist.co.uk/downloads/motif_download.html
If you do not want use the GUI, then you can configure the build to ignore this dependency.
ecfFlow consists of two tar files i.e.:
boost_1_53_0.tar.gz
Create a directory for the build:
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:
tar -zxf boost_1_53_0.tar.gz tar -zxf ecFlow-4.5.0-Source.tar.gz |
You should have two directories created:
boost_1_53_0 ecFlow-4.5.0-Source |
Create two environment variables. These are used by some of scripts:
export WK=/tmp/ecflow_build/ecFlow-4.5.0-Source export BOOST_ROOT=/tmp/ecflow_build/boost_1_53_0 |
cd $BOOST_ROOT ./bootstrap.sh |
For python3
./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.
# 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 ; |
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 |
There are two build systems available for ecflow:
It is recommended to use cmake, since boost-build/bjam will be deprecated. Additionally the new GUI(ecflowUI) can only be built with 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 is a cross-platform free software program for managing the build process of software using a compiler-independent method.
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 compile a share library only and install it in /usr/local/.
cmake options | doc | default |
---|---|---|
CMAKE_INSTALL_PREFIX | where you want to install your ecflow | /usr/local |
CMAKE_BUILD_TYPE | to select the type of compilation:
| Release |
CMAKE_CXX_FLAGS | more flags for the C++ compiler | |
ENABLE_SERVER | build the ecflow server | on |
ENABLE_PYTHON | enable python interface | on |
PYTHON_EXECUTABLE | Pyhon3. Path to python3 executable | |
ENABLE_UI | enable build of ecflowUI (requires Qt) | on |
CMAKE_PREFIX_PATH | use to provide path to dependent libraries which are installed in a non-system locations. | |
ENABLE_GUI | enable build of ecflowview (requires X11 and motif) | on |
ENABLE_ALL_TESTS | enable performance, migration, memory leak , and regression tests | off |
ENABLE_SSL | Encrypted communication for user commands (experimental, from ecflow release 4.5.0). Please see: Open ssl for more details. | off |
ENABLE_SECURE_USER | password based protection for user commands (experimental, from ecflow release 4.5.0) Please see: Black list file (experimental) for more details. | 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).
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, this should build with CMAKE_BUILD_TYPE=Release cmake .. # build release with debug info # cmake .. -DCMAKE_BUILD_TYPE=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 |
To use the ecFlow Python Api , you need to add/change PYTHONPATH .
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 |
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:
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 |
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.
# 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:
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 |
CPUS=$(lscpu -p | grep -v '#' | wc -l) bjam variant=release -j${CPUS) |
bjam variant=release install-all |
This will create directories:
<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
export PYTHONPATH=$PYTHONPATH:$ECFLOW_PYTHON_INSTALL_DIR |
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.
The <ECFLOW_INSTALL_DIR>/share/ecflow/server file defines the list of servers you want all your users to see in ecflowview. It has a very simple format. For each ecflow server add a line like:
<server_name> <machine_name> <port> |