ecFlow学习笔记:编译V5.X版本
ecFlow 已开源 V5.X 版本,目前最新版是 5.5.3。 与之前的 V4.X 版本相比,编译源码最大的变化在于 V5 版本可以使用最新版的 Boost。 另外,V5 版本需要使用支持 C++11 的编译器。
虽然 CMA-PI 上已有 ecFlow 5.4.0 版本,但因为没有使用 Qt Charts 编译,ecFlow UI 缺乏统计图表。 另外仅附带 Python 2 接口,无法使用功能更丰富的 Python 3。
为了使用带统计功能的 ecFlow UI,我使用自己编译的一系列工具和库来编译 ecFlow。
下面介绍 ecFlow V5 版本的编译方法,在 CMA-PI 上测试通过。
2020.11 更新:编译 V5.5.3,使用 Anaconda 3 环境
准备
CMA-PI 使用 Environment Modules 管理软件包,可以很方便使用自己编译的工具链。
编译器
已在 CMA-PI 上编译 GCC 9.2.0。
CMake
为了识别最新版的 Boost,编译最新版的 CMake。
Qt
已在 CMA-PI 上编译 Qt 5.10.0。
注:笔者在 CMA-PI 上尝试编译 Qt 5.15,发现无法编译 xcb 组件,所以依然使用旧版 Qt。
Python
已在 CMA-PI 上安装 Anaconda3。 详情参看《HPC用户安装Python解决方案》。
源码
从官网下载 ecFlow 源码和 Boost 源码。
编译
将 Boost 源码路径设置为环境变量 BOOST_ROOT
,将 ecFlow 源码路径设为 WK
。
编译 Boost
加载 Anaconda 3 环境,设置 Python 3 可执行程序路径,避免自动选择系统的 python 2 版本。
./bootstrap.sh --with-python=$(which python3)
在 BOOST_ROOT
目录下运行下面的命令,编译 ecFlow 需要使用的 Boost 库。
$WK/build_scripts/boost_build.sh
编译 ecFlow
注意:本步骤不需要 Anaconda 3 环境
另外创建一个 build 目录,在该目录下执行下面的 cmake 命令,生成编译项目。
cmake -DCMAKE_INSTALL_PREFIX=/some/path/to/install $WK
执行最终的编译过程并安装到执行的目录。
make
make install
运行
ecflow v5 版本的运行方式与 v4 版本一样,执行 start_ecflow.sh
启动 ecflow 服务。
执行 ecflow_ui
启动 UI 界面。
参考
ecFlow 官方安装文档:
https://confluence.ecmwf.int/display/ECFLOW/ecflow5
附录
以下内容为历史版本,已不再适用
编译 Boost 补充内容
运行后生成 project-config.jam
文件中包含对 Python 3 的设置,类似
# Python configuration
import python ;
if ! [ python.configured ]
{
using python : 3.6 :
"/g3/wangdp/lang/python/python3/install_static" ;
}
其中 3.6 后面是安装 Python 的目录。 我编译时候 Boost 会找不到 Python 的位置,需要在后面加上 include 和 lib 目录。 类似
# Python configuration
import python ;
if ! [ python.configured ]
{
using python : 3.6
: "/g3/wangdp/lang/python/python3/install_static"
: /g3/wangdp/lang/python/python3/install_static/include/python3.6m
: /g3/wangdp/lang/python/python3/install_static/lib ;
}