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 v5 版本的 ecflow-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 ;
}