...
portDependencies
- cmake ( install cmake (sudo apt-get install cmake))
- g++ ( install g++ (sudo apt-get install g++))
- Python 2.7 or Python 3
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 .
If you do not need the python api, then you can build without it, see below.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.- 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.
...
ecfFlow consists of two tar files i.e.:
boost_1_53_0.tar.gz
- ecFlow-4.14.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_53_0.tar.gz tar -zxf ecFlow-4.14.0-Source.tar.gz
You should have two directories created:
Code Block boost_1_53_0 ecFlow-4.14.0-Source
Create two environment variables. These are used by some of the scripts:
Code Block export WK=/tmp/ecflow_build/ecFlow-4.14.0-Source export BOOST_ROOT=/tmp/ecflow_build/boost_1_53_0
If you have a module system, please ensure that before you start, gcc,cmake,python2,python3,etc are available in $PATH.
Code Block module load gnu module load cmake module load python module load python3 module load qt
Build boost
- 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.5 : python3 : /usr/local/apps/python3/3.5.1-01/include/python3.5m ; # 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 |
...
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. ONLY required if cmake version is less than 3.12.0 | ||
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).
...
Code Block | ||||
---|---|---|---|---|
| ||||
cd $WK
mkdir build; cd build;
# Go with defaults, will build with CMAKE_BUILD_TYPE=Release and install to /usr/local
cmake ..
# build release with debug info
# cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
# Override install prefix
# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/apps/ecflow/4.14.0
# do NOT build the gui.
# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/apps/ecflow -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=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 |
...
To use the ecFlow Python Api , you need to add/change PYTHONPATH .
Code Block | ||
---|---|---|
| ||
export PYTHONPATH=$PYTHONPATH:<prefix>/4.14.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.14.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=/tmp/avi/custom/ecflow/4.14.0 -DCOMPONENT=python -P cmake_install.cmake -- make install # install python module under /tmp/avi/custom/ecflow/4.14.0 |
ecflow_ui: Make a list servers accessible to all users
...