...
Dependencies
- cmake ( install cmake (sudo apt-get install cmake))
- g++ ( install g++ (sudo apt-get install g++))
- Python 2.7 or Python 3(optional)
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
If you do not need the python api, then you can build without it, see below.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. - Qt for ecFlowUI (Qt5 preferred).
For self-installed Qt libraries, consider setting CMAKE_PREFIX_PATH (see below). See also http://doc.qt.io/qt-5/cmake-manual.html for further details. - openssl(optional)
Setting up the build environment
ecfFlow consists of two tar files i.e.:
boost_1_5371_0.tar.gz (or any recent boost)
- ecFlow-45.173.0-Source.tar.gz
Create a directory for the build:
Code Block language bash 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 language bash tar -zxf boost_1_5371_0.tar.gz tar -zxf ecFlow-45.173.0-Source.tar.gz
You should have two directories created:
Code Block boost_1_5371_0 ecFlow-45.173.0-Source
Create two environment variables. These are used by some of the scripts:
Code Block export WK=/tmp/ecflow_build/ecFlow-45.173.0-Source export BOOST_ROOT=/tmp/ecflow_build/boost_1_5371_0
If you have a module system, please ensure that before you start, gcc,cmake,python2,python3,etc are available in $PATH.
Code Block language bash module load gnu module load cmake module load python3 module load qt
...
Boost uses bjam for building the boost libs.
bjam source is available in boost, hence we first need to build bjam itself:Code Block language bash 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.
Code Block # using python # : # version # : # cmd-or-prefix # : # includes # : # libraries # : # condition # ; using python : 3.6 : /usr/local/apps/python3/3.6.8-01/bin/python3 : /usr/local/apps/python3/3.6.8-01/include/python3.6m ; # remember to preserve the spaces, as they are significant
- IF you do not require the ecFlow python api, you can avoid building boost python libs by setting.
Code Block | ||||
---|---|---|---|---|
| ||||
export ECF_NO_PYTHON=1 |
You will also need to disable python when building ecFlow. See the instruction under cmake
...
ecFlow uses some of compiled libraries in boost. The following script will build the required lib’s and configure boost build according to your platform.
If you want to build python2Code Block language bash title Build boost libraries including python3 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. Please see notes in boost_build.sh, if you want to build both for python2 and python3
python3. Then ALWAYS build the python3 first. See earlier stepsand
Code Block title Building boost python2 libs module load python mv $BOOST_ROOT/project-config.jam $BOOST_ROOT/project-config.jam_python3 # move the python3 config to the side ./bootstrap.sh # || ./bootstrap.sh --with-python=/path/to/python2 to regenerate project-config.jam ./b2 --with-python --clean # Clean previous python3 build *VERY* important $WK/build_scripts/boost_build.sh # Build boost python2 libs
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 notes their locations (paths). Based on this information it will produces the Makefiles needed to compile and install ecFlow
...
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_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 |
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_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).
...