libmcpp 仓库容器构建与测试验证报告

基于 README 文档指导,模拟外部开发者从 manifest init.py 初始化到 bingo build/test 的完整流程
仓库: libmcpp (openUBMC C++17 基础框架)
开始: 2026-08-24T22:00:00
结束: 2026-08-24T22:30:17
总耗时: 1817 秒
步骤数: 16
静态检查
通过
pre-commit 10/10
构建
成功
183s · 480 目标
单元测试
6931
通过 / 0 失败 · 12 套件
样例
编译成功
aarch64 交叉编译

1 机器规格与镜像

宿主机

架构x86_64
CPU 型号Intel(R) Xeon(R) Gold 6151 CPU @ 3.00GHz
CPU 核数32
内存62Gi
磁盘105G available
Docker 版本Docker version 29.1.3, build 29.1.3-0ubuntu3~24.04.2

容器

操作系统Ubuntu 24.04.3 LTS (Noble Numbat)
架构x86_64
CPU 核数32
内存62Gi (容器未限制内存)

镜像来源

类型base_image
镜像名swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2
选择理由libmcpp README 明确推荐此镜像快速启动开发环境,并声明本组件仅支持 Ubuntu 24.04 LTS

2 文档阅读摘要

架构要求x86-64 (amd64)
推荐镜像swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2 (README 推荐快速启动开发环境镜像)
构建依赖
  • Python >= 3.10 (init.py 运行依赖)
  • bingo (openubmc 构建工具链,由 init.py 自动安装)
  • Conan (C/C++ 包管理器,文档标注 2.13.0,init.py 实际安装 2.31.2)
  • Node.js v20.18 + npm 10.8.2 (pre-commit 依赖)
  • gcc-9 / g++-9 (C/C++ 编译器)
  • meson (构建系统,随 bingo pip 依赖安装)
  • clang-format / clang-tidy (静态检查,由 init.py 安装)
  • stylua 2.5.2 / luacheck 1.2.0 (pre-commit Lua 工具,init.py 安装)
  • openUBMC APT 仓库源 (bingo/SDK 等)
  • conan.openubmc.cn 远程仓库 (需社区账号登录认证)
构建命令cd /home/workspace/libmcpp && bingo build --stage=dev
单元测试命令bingo test -ut -jit (必须加 -jit 参数,否则测试失败)
样例命令bingo build --stage=dev -o examples=True (样例随 examples 选项启用一同构建,README 未提供独立样例运行命令)
特殊依赖
  • conan.openubmc.cn (Conan 包管理仓库,需社区账号登录)
  • openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.com (openUBMC APT 仓库)
  • dailybuild.openubmc.cn (luacheck 等 pre-commit 工具下载)
  • mirrors.huaweicloud.com (apt/pip/npm 镜像加速)
  • manifest 仓库 init.py 一键安装 bingo/Conan/Node.js/SDK (禁止手动 pip install conan)
说明:libmcpp README 声明自身为唯一指导文档,环境初始化指向 manifest 构建指导书(init.py 一键安装 bingo/Conan/Node.js/SDK)。禁止手动 pip install conan,否则 Conan 远程认证失败。

3 最终验证结果

3.1 静态检查

是否启用是
pre-commit 配置已配置 · .pre-commit-config.yaml · 状态: 全部通过 · 10/10 hooks 通过 · 耗时 2s
pre-commit 失败项无
lint-runner 配置未配置
摘要检测到 pre-commit 配置(10 个文件级 hooks 全部通过,2.1 秒),未检测到 lint-runner 配置

3.2 DevContainer

是否启用是
配置目录.devcontainer
配置文件devcontainer.json
摘要已配置 devcontainer, 基于 swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06 镜像, 含 cpptools/cmake-tools/python/ruff 等 vscode 扩展

3.3 构建 · 成功 · 183s

产物名路径大小
libmcbase.soconan 缓存 /usr/lib64/libmcbase.so.1.0.0动态库
libmcengine.soconan 缓存 /usr/lib64/libmcengine.so动态库
libmcapp.soconan 缓存 /usr/lib64/libmcapp.so动态库
libmcexpr.soconan 缓存 /usr/lib64/libmcexpr.so动态库
libmcdbus.soconan 缓存 /usr/lib64/libmcdbus.so动态库
libmcdatabase.soconan 缓存 /usr/lib64/libmcdatabase.so动态库
liblmc.soconan 缓存 /usr/lib64/liblmc.so.0.1.0 (Lua 绑定底座)动态库
liblmc_binding.soconan 缓存 /usr/lib64/liblmc_binding.so.0.1.0动态库
conan 包libmcpp/3.0.38@openubmc.dev/dev (本地 Conan 缓存)—

3.4 单元测试 · 成功 · 345s

通过 6931 失败 0 总计 6931
测试套件结果耗时
mcbase:mcbase unit testsOK20.61s
mcbase:mcbase fork testsOK0.16s
mcengine:mcengine unit testsOK17.43s
log_appenders:log_appenders unit testsOK1.45s
mcexpr:mcexpr unit testsOK2.11s
mcdatabase:mcdatabase unit testsOK0.38s
secfile:secfile unit testsOK0.15s
mchttp:mchttp_testOK6.11s
mcapp:mcapp unit testsOK9.96s
lmc:lmc_testOK0.04s
libmcpp:libmcpp unit testsOK5.30s
doc - libmcpp:doc drift checkOK—

3.5 样例 · 编译成功(运行环境受限) · 198s

样例名执行状态输出摘要耗时
module_test_example编译链接成功(ARM aarch64, 无法在 x86_64 容器执行)默认 bingo build 交叉编译到 RTOS/aarch64 目标,二进制为 ELF ARM aarch64—
metric_example编译链接成功(ARM aarch64, 无法在 x86_64 容器执行)file 显示 ELF 64-bit ARM aarch64; 运行报 cannot execute binary file—
task_service编译链接成功(ARM aarch64, 无法在 x86_64 容器执行)示例随 -o examples=True 一同构建,产物在 conan 缓存构建目录—
默认 bingo build 使用 host profile=profile.luajit.ini (arch=armv8 + RTOS SDK sysroot) 交叉编译到 aarch64 部署目标,示例二进制为 ARM aarch64,无法在 x86_64 容器直接执行。x86_64 运行时验证由 bingo test (DT profile, x86-64) 的 12 套件 / 6931 用例全部通过覆盖。

4 执行日志

时间命令结果输出错误返回码耗时
2026-08-24T22:01:00pre-commit run --all-files (宿主机本地执行)成功Check .sr Files...Passed Check JSON...Passed Check YAML...Passed clang-format...Passed trim trailing whitespace...Passed fix end of files...Passed check for merge conflicts...Passed check for added large files...Passed check for case conflicts...Passed detect private key...Passed—02s
2026-08-24T22:01:30检查 lint-runner 配置: ls .lint-runner* .lintrunner* lint-runner.config.*成功未找到 lint-runner 相关配置文件—01s
2026-08-24T22:01:35ls .devcontainer/成功devcontainer.json (image: swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06, 含 vscode 扩展配置)—01s
2026-08-24T22:03:45docker run -d --name ttfhw-libmcpp-env -w /home/workspace --memory=62g swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2 tail -f /dev/null (镜像本地已存在,免拉取)成功Container ID: c43cb74f2616, 容器启动成功,OS=Ubuntu 24.04.3 LTS, arch=x86_64, cores=32—02s
2026-08-24T22:03:53apt-get update && apt-get install -y python3 sudo make locales wget curl git libcurl4t64 libcurl4-openssl-dev pkg-config (裸镜像基础工具)成功安装完成 (git 2.43.0, python3 3.12.3, curl, libcurl4-openssl-dev 8.5.0 等)—027s
2026-08-24T22:04:30git config --global + mkdir /home/workspace + docker cp manifest 仓库入容器成功manifest 仓库已复制至 /home/workspace/manifest (init.py 入口)—01s
2026-08-24T22:04:58OPENUBMC_LICENSE=true; echo 'Y' | python3 init.py -user zhao******** -psw 'vku****W2mNBxVmz' (Docker 非交互环境一键初始化)成功init.py 完成: bingo 0.8.7 安装, Conan 2.31.2 安装+profile 生成, Conan 远程 openubmc_opensource 登录成功(user=zhao******** 已认证), Node.js v20.18.0+npm10.8.2, stylua 2.5.2+luacheck 1.2.0, bmc_sdk 下载安装, /opt/RTOS/208.11.0 与 /opt/hcc_arm64le/ 生成。最终输出: openUBMC开发者环境初始化完成!—0440s
2026-08-24T22:12:34验证初始化结果: ls ~/.conan2/profiles/ + conan remote list + conan search -r openubmc_opensource '*' + bingo --version成功profiles: default, profile.dt.ini, profile.ini, profile.luajit.ini; remote: openubmc_opensource(https://conan.openubmc.cn/openubmc_opensource); conan search 返回 abseil/account 等包(认证生效); bingo 版本 0.8.7; conan 2.31.2; node v20.18.0—05s
2026-08-24T22:13:00docker cp 本地 libmcpp 源码入容器 /home/workspace/libmcpp成功源码复制完成 (meson.build / conanfile.py / libraries/ 等就位)—01s
2026-08-24T22:13:35taskset -c 0-18 bingo build --stage=dev (并发限 19 核 ≈ 60%)成功Conan 依赖解析+meson+ninja 构建 [480/480] 全部完成,生成 conan 包 libmcpp/3.0.38@openubmc.dev/dev,输出: 构建成功—0183s
2026-08-24T22:16:50验证构建产物: find conan 缓存 libmc*/usr/lib64/*.so + conan cache path成功缓存 /root/.conan2/p/b/libmc70afbeb27f978/p/usr/lib64/ 下含 libmcbase/libmcengine/libmcapp/libmcexpr/libmcdbus/libmcdatabase/liblmc/liblmc_binding 等全部 .so 库—03s
2026-08-24T22:17:17taskset -c 0-18 bingo test -ut -jit (含 test 选项重编译 + 全量单元测试)成功测试编译 [576/576] 完成,meson test 12 套件全部 OK: 1/12 mcbase unit(20.61s) 2/12 mcbase fork(0.16s) 3/12 mcengine(17.43s) 4/12 log_appenders(1.45s) 5/12 mcexpr(2.11s) 6/12 mcdatabase(0.38s) 7/12 secfile(0.15s) 8/12 mchttp(6.11s) 9/12 mcapp(9.96s) 10/12 lmc(0.04s) 11/12 libmcpp(5.30s) 12/12 doc drift check。gtest 累计 [PASSED] 6931 tests, 0 失败—0345s
2026-08-24T22:24:28taskset -c 0-18 bingo build --stage=dev -o examples=True (构建示例程序)成功[510/510] 完成,生成示例二进制: examples/module_test/module_test_example, examples/metric_example/metric_example, examples/task_service/task_service。输出: 构建成功—0198s
2026-08-24T22:28:00运行 metric_example 烟雾测试 (LD_LIBRARY_PATH 指向构建产物 .so)失败cannot execute binary filefile 显示: ELF 64-bit ARM aarch64, interpreter /lib64/ld-linux-aarch64.so.1。bingo build 默认 host profile=profile.luajit.ini(arch=armv8, RTOS SDK sysroot)交叉编译到 aarch64,故无法在 x86_64 容器执行1261s
2026-08-24T22:29:11docker stop ttfhw-libmcpp-env && docker rm ttfhw-libmcpp-env (清理容器)成功容器已停止并删除—03s
2026-08-24T22:30:17生成验证报告 verification_report_WSL_libmcpp_20260825.json成功报告已生成—01s

5 流程时间线

时间步骤动作结果详情
2026-08-24T22:00:00start开始验证流程已启动—
2026-08-24T22:00:30document_reading阅读 README.md / CONTRIBUTING.md / conanfile.py / manifest 构建指导书, 提取镜像/依赖/构建/测试命令成功
files
  • README.md
  • CONTRIBUTING.md
  • conanfile.py
  • manifest/README.md
  • .devcontainer/devcontainer.json
2026-08-24T22:01:00static_analysis_scan检查 pre-commit 配置并执行 pre-commit run --all-files全部通过
config_file.pre-commit-config.yaml
file_hooks_run10
passed10
failed0
duration_seconds2
2026-08-24T22:01:30static_analysis_scan检查 lint-runner 配置未配置
searched_patterns
  • .lint-runner.yaml
  • .lint-runner.json
  • lint-runner.config.*
  • .lintrunner.toml
2026-08-24T22:01:35devcontainer_scan检查 .devcontainer 目录及配置已配置
config_dir.devcontainer
files
  • devcontainer.json
imageswr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06
2026-08-24T22:03:45container_setup启动容器(基于 README 推荐镜像 ubuntu:24.04.2), 并安装裸镜像基础工具成功
imageswr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2
base_tools
  • python3
  • git
  • make
  • wget
  • curl
  • libcurl4-openssl-dev
  • pkg-config
2026-08-24T22:04:58dependency_installation执行 manifest 仓库 init.py 一键初始化(bingo/Conan/Node.js/SDK 安装 + Conan 登录)成功
bingo0.8.7
conan2.31.2
nodev20.18.0
conan_remoteopenubmc_opensource(已认证)
RTOS/opt/RTOS/208.11.0
hcc/opt/hcc_arm64le
duration_seconds440
2026-08-24T22:13:35build_attempt执行组件级构建 bingo build --stage=dev (taskset 限 19 核)成功
concurrency19
concurrency_ratio60%
targets480
packagelibmcpp/3.0.38@openubmc.dev/dev
2026-08-24T22:17:17ut_execution执行单元测试 bingo test -ut -jit成功
meson_suites12
all_ok12
gtest_cases_passed6931
gtest_cases_failed0
2026-08-24T22:24:28sample_execution构建示例程序 bingo build -o examples=True 并尝试运行烟雾测试编译成功/运行受限
examples_built3
execution_status示例为 aarch64 交叉编译产物,无法在 x86_64 容器执行;运行时验证由 x86-64 单元测试覆盖
2026-08-24T22:29:11cleanup停止并删除容器成功—
2026-08-24T22:30:17report_generation生成验证报告成功
output_fileverification_report_WSL_libmcpp_20260825.json

6 文档缺口

7 遇到的问题

2026-08-24T22:28:00 — 运行 metric_example 烟雾测试时报 cannot execute binary file,无法在 x86_64 容器执行示例二进制
解决: 经 file 命令确认二进制为 ELF 64-bit ARM aarch64;bingo build 默认 host profile=profile.luajit.ini(arch=armv8, sysroot=/opt/RTOS/208.11.0/...),交叉编译到 RTOS/aarch64 部署目标,属预期行为。x86_64 运行时验证由 bingo test(DT profile, x86-64)的 12 套件/6931 用例全部通过覆盖
来源: exbuild.log conan create 输出: Profile host arch=armv8, tools.build:sysroot=/opt/RTOS/208.11.0/arm64le_5.10_ek_preempt_pro/sdk