bingo 版本信息 项目 内容 组件版本 0.7.58 首发版本 0.1.0 文档作者 马思雨 最后更新 2026-07-24
1. 组件概述 1.1 组件简介 bingo 是 openUBMC BMC 开发的工程工具和最佳实践的承载者,提供一站式命令行工具,降低组件开发成本。bingo 作为 openUBMC 工程体系的核心枢纽,统一管理组件创建、代码自动生成、构建出包、开发者测试、依赖分析、版本发布等 BMC 开发全流程,是 openUBMC 开发者日常使用的核心工具。
1.2 解决什么问题 bingo 解决 BMC 软件开发中的工程效率问题:将分散的构建脚本、代码生成工具、依赖管理、测试框架整合为统一 CLI,开发者无需手动维护 Conan 配置、交叉编译 profile、MDS 模型到代码的映射等繁琐工程细节,通过一条 bingo 命令即可完成从建模到出包的端到端流程。
1.3 核心功能 核心功能一:组件全生命周期管理——通过 bingo new 创建组件脚手架、bingo gen 代码自动生成(Lua/C)、bingo build 构建、bingo test 测试、bingo deploy 部署,覆盖组件从创建到发布的完整流程 核心功能二:产品集成构建——在 manifest 仓库中执行 bingo build,基于 Conan 依赖体系自动拉取组件、交叉编译、组装 rootfs 并生成 HPM 固件包,支持多单板、多构建类型和发布阶段 核心功能三:工程辅助能力——包括依赖与接口分析(bingo analysis)、版本差异追踪(bingo diff)、源码拉取(bingo fetch)、参数配置(bingo config)、版本升级(bingo upgrade)、BMC Studio 管控(bingo studio)和 Skill 管理(bingo skill) 1.4 关键术语表 术语 解释 Manifest 产品仓库,包含 manifest.yml 配置、组件依赖声明和构建脚本,bingo 识别 manifest 仓后启用 Integrated commands Component 组件仓库,包含 mds/service.json 配置,bingo 识别组件仓后启用 Component commands Conan C/C++ 包管理器,bingo 依赖 Conan 完成组件依赖解析、下载和交叉编译,支持 Conan 1.0 和 2.0 双版本 MDS 模型定义服务(Model Definition Service),组件通过 mds/service.json 描述服务模型,bingo gen 依据此模型生成代码 HPM 固件升级包格式,bingo build 在 manifest 仓最终输出的产品包为 rootfs_<单板名>.hpm DT 开发者测试(Developer Test),bingo test 支持单元测试(UT)、集成测试(IT)和模糊测试(FT) Profile Conan 编译配置文件,描述目标平台(如 ARM64 交叉编译)的构建参数,bingo 自动管理 profile 初始化与同步 CSR 组件服务资源(Component Service Resource),bingo check 用于校验 CSR 语法的正确性与模型一致性
1.5 外部交互边界图 bingo 与以下外部系统交互:
Conan 远程仓库 :拉取/上传组件包,解析依赖关系Git 仓库 :通过 gitpython 拉取源码、获取版本信息和分支差异BMC Studio :启动/停止建模服务,执行 CSR 语法检查PyPI :bingo 自身的安装和升级源(openubmc-bingo 包)Skills Marketplace (GitCode):同步 AI agent 技能到本地HPM 签名服务 :支持 SignServer 签名、服务器签名和自签名三种模式板子部署 :通过 SFTP/HTTPS 将产品包部署到目标 BMC 设备2. API 使用说明与示例 2.1 bingo build 功能说明 构建组件包或产品 HPM 包。bingo 具有配置探测能力:在组件目录执行时构建组件包,在 manifest 目录执行时构建产品集成包。
参数说明 组件构建参数:
参数名 方向 类型 描述 取值范围 -bt / --build_type 输入 str 构建类型,默认:debug debug, release --stage 输入 str 组件包发布阶段,默认:dev dev, pre, rc, stable -u / --upload 输入 flag 上传组件包到 Conan 仓 true/false -r / --remote 输入 str Conan 仓别名 conan remote list 已配置的仓 --conan2 输入 flag 强制使用 Conan 2 构建组件 true/false -nc / --no_cache 输入 flag 强制更新 Conan 缓存依赖 true/false -o / --options 输入 str Conan 构建选项 如 Pkg/*:with_qt=True --user 输入 str Conan 包 user 字段,未指定时依次读取 mds/service.json,都未指定时使用 openubmc 任意合法 user -wb / --without_build 输入 flag 不强制源码构建组件自身 true/false --ccache 输入 flag 使用 ccache 加速 C/C++ 编译 true/false
产品构建参数:
参数名 方向 类型 描述 取值范围 -b / --board_name 输入 str 单板包,默认:openUBMC openUBMC_ast2600, openUBMC_1712, openUBMC 等 -bt / --build_type 输入 str 构建类型 debug(调试包), release(正式包) --stage 输入 str 包类型,默认:dev dev(调试包), rc(预发布包), stable(发布包) --verbose 输入 flag 使能 Conan 构建详细日志打印 true/false -ucc / --update_conan_cache 输入 flag 全量更新本地 Conan 缓存 true/false -r / --remote 输入 str Conan 仓别名 conan remote list 已配置的仓 -z / --zip_code 输入 str 0502 编码 参考单板 manifest.yml/manufacture -sc / --supporte_code 输入 str 待发布的 SupportE 编码 参考单板 manifest.yml/tosupporte --ccache 输入 flag 使用 ccache 加速 C/C++ 编译 true/false --debug_platform_path 输入 str 联调整包路径 任意合法路径 --signature_type 输入 str 固件签名类型 rsa4096, sm2 -v / --version 输入 str 构建版本号,不指定时从 manifest.yml 读取 任意合法版本号 -t / --target 输入 str 构建目标 install_sdk, personal, app, publish --deploy 输入 flag 将 HPM 包部署至 BMC 设备 true/false
返回值与异常 返回值 含义 触发条件 处理建议 0 成功 构建正常完成 无 -1 失败 当前目录不是合法组件/manifest 仓、参数非法或内部错误 检查当前路径是否包含 .bmcgo/config 或 mds/service.json
应用场景 在组件源码目录构建组件 Conan 包并上传到远端仓库 在 manifest 仓库构建产品 HPM 包或发布包 开发调试阶段使用 -bt debug --stage dev 快速构建 正式发布阶段使用 -bt release --stage stable 构建正式包 限制条件 必须在合法组件目录(包含 mds/service.json)或 manifest 目录(包含 .bmcgo/config)下执行 组件构建和产品构建互斥,bingo 根据目录类型自动切换 多个 bingo build 进程在同一 manifest 下并发执行会被互斥锁阻止 Conan 版本需要与组件/产品配置匹配(1.0 或 2.0),bingo 会自动检测并切换 调试示例 命令行调试 组件构建:
bash bingo build -bt debug --stage rc 产品 HPM 包构建:
bash bingo build -t personal -b openUBMC -bt release --stage rc 产品发布包构建:
bash bingo build -t publish -b openUBMC -bt release --stage stable --signature_type sm2 2.2 bingo gen 功能说明 代码自动生成,支持 Lua 和 C 语言。根据 MDS 模型定义自动生成服务端/客户端代码框架,大幅减少手工编码量。
参数说明 参数名 方向 类型 描述 取值范围 -v / --version 输入 str 指定版本号 任意合法版本号 -r / --remote 输入 str Conan 远端仓,如不设置则默认读取本地 Conan 配置 conan remote list 已配置的仓 -s / --service_file 输入 str Service 文件路径 任意合法路径 -w / --with_template 输入 flag 生成时包含模板文件 true/false
返回值与异常 返回值 含义 触发条件 处理建议 0 成功 代码生成正常完成 无 -1 失败 模型文件缺失或格式错误 检查 mds/service.json 和 model.json 是否存在且格式正确
应用场景 新组件创建后首次生成代码框架 MDS 模型变更后重新生成代码以同步接口定义 支持 C、C++ 和 Lua 语言代码生成,C/C++ 组件需在 service.json 中配置 "language" 字段 限制条件 必须在组件目录下执行 C/C++ 组件需要在 service.json 中配置 "language" 字段 生成代码会覆盖 gen 目录下的已有文件,手工修改的代码应放在非 gen 目录 调试示例 命令行调试 bash bingo gen
bingo gen -s mds/service.json
bingo gen -w 2.3 bingo test 功能说明 执行组件开发者测试(DT),支持单元测试、集成测试、模糊测试、Mock 测试和 ASAN 内存检测。
参数说明 参数名 方向 类型 描述 取值范围 -bt / --build_type 输入 str 构建类型,默认:debug debug, release --stage 输入 str 组件包发布阶段,默认:dev dev, pre, rc, stable -r / --remote 输入 str Conan 仓别名 conan remote list 已配置的仓 --conan2 输入 flag 强制使用 Conan 2 构建组件 true/false -s / --from_source 输入 flag 从源码构建,包含依赖组件 true/false -nc / --no_cache 输入 flag 强制更新 Conan 缓存依赖 true/false -o / --options 输入 str Conan 构建选项 如 Pkg/*:with_qt=True --user 输入 str Conan 包 user 字段,未指定时依次读取 mds/service.json,都未指定时使用 openubmc 任意合法 user -as / --asan 输入 flag 使能 Address Sanitizer true/false -wb / --without_build 输入 flag 不强制源码构建组件自身 true/false -pr / --profile 输入 str Conan 构建使用的 profile,默认为空 profile_oee.ini, default, profile.luajit.ini, profile.ini, profile.dt.ini -jit / --enable_luajit 输入 flag 使能 LuaJIT true/false --ccache 输入 flag 使用 ccache 加速 C/C++ 编译 true/false -ut / --unit_test 输入 flag 执行单元测试 true/false -it / --integration_test 输入 flag 执行集成测试 true/false -ft / --fuzz_test 输入 flag 执行模糊测试 true/false -fg / --fuzz_gen 输入 flag 生成模糊测试用例 true/false -mt / --mock_test 输入 flag 执行 Mock 测试 true/false -mg / --mock_gen 输入 flag 生成 Mock 用例 true/false -lf / --log_file 输入 str 监控日志文件目录路径 任意合法路径 -cnt / --fuzz_count 输入 str 模糊测试次数 整数值 -f / --test_filter 输入 str 单元测试过滤器 LuaUnit 过滤表达式 -a / --app 输入 str hica 中的 App 任意合法 App 名 --coverage_exclude 输入 str 覆盖率排除文件路径(白名单) 任意合法路径 --minimum / -m 输入 flag 获取 DT 构建的最小版本 true/false -pi / --package_info 输入 str package_info 文件路径,manifest 构建时在 inner 目录生成 任意合法路径
返回值与异常 返回值 含义 触发条件 处理建议 0 成功 所有测试通过 无 -1 失败 测试失败或组件无效 检查测试用例是否正确、组件 mds/service.json 是否存在
应用场景 组件开发过程中执行单元测试验证功能正确性 代码提交前执行集成测试验证接口行为 使用模糊测试发现潜在安全漏洞 使用 Mock 测试隔离依赖组件进行局部验证 使用 ASAN(-as)检测内存错误 限制条件 必须在合法组件目录下执行(包含 mds/service.json) 测试默认会先构建组件,如需跳过构建可使用 -wb 参数 使用 ASAN 测试需添加 -as 参数 模糊测试用例可通过 -fg 生成,通过 -ft 执行 调试示例 命令行调试 bash
bingo test -ut
bingo test -it
bingo test -ut -wb
bingo test -ut -as
bingo test -mt
bingo test -fg && bingo test -ft 2.4 bingo new 功能说明 创建新的 openUBMC 组件,自动生成组件脚手架代码和目录结构。
参数说明 参数名 方向 类型 描述 取值范围 -n / --name 输入 str 指定组件名(必填) 任意合法目录名 -t / --type 输入 str 指定组件类型,默认:application application -l / --language 输入 str 指定组件编程语言,默认:lua lua -conan / --conan_version 输入 str 指定组件支持的 Conan 版本,默认:1.0 1.0, 2.0
返回值与异常 返回值 含义 触发条件 处理建议 0 成功 组件创建完成 无 -1 失败 当前目录已存在同名子目录或选项无效 删除同名目录或修正选项
应用场景 开发新的 openUBMC 业务组件 快速搭建包含 MDS 模型、构建脚本、测试框架的标准组件框架 限制条件 当前目录下不能已存在同名子目录 目前仅支持 Lua 语言和 application 类型 调试示例 命令行调试 bash bingo new -n my_component -t application -l lua -conan 1.0
bingo new -n my_component -t application -l lua -conan 2.0 2.5 bingo deploy 功能说明 将组件及其依赖部署至 temp/rootfs 目录,先构建再部署。
参数说明 与 bingo build 组件构建参数一致。
返回值与异常 返回值 含义 触发条件 处理建议 0 成功 构建并部署完成 无 -1 失败 组件无效(缺少 mds/service.json) 检查当前目录是否为合法组件
应用场景 本地调试时将组件部署到 temp/rootfs 目录模拟运行环境 验证组件在目标文件系统中的安装布局 调试示例 命令行调试 bash bingo deploy -bt debug --stage dev 2.6 bingo analysis 功能说明 依赖和接口分析,支持组件和 manifest 两个级别,用于理解组件间依赖关系和接口调用链。
参数说明 参数名 方向 类型 描述 取值范围 -r / --remote 输入 str 指定 Conan 远端 conan remote list 已配置的仓 --rebuild 输入 flag 分析前重新构建 true/false --out_dir 输入 str 分析结果输出目录 任意合法路径 --lock_file 输入 str manifest lock 文件路径 任意合法路径 -b / --board_name 输入 str 单板名,参考 manifest/build/product 目录 manifest/build/product 下的目录名
调试示例 命令行调试 bash bingo analysis -b openUBMC 2.7 bingo fetch 功能说明 基于参数指定的单个、部分或全量组件版本拉取源代码。
参数说明 参数名 方向 类型 描述 取值范围 -b / --board_name 输入 str 指定单板获取配套全量源码,默认:openUBMC build/product 目录下的单板名 --manifest_yml 输入 str 指定 manifest.yml 文件获取源码 任意合法路径 -pi / --package_info 输入 str 通过组件包名及版本拉取单个组件源码,或通过配置文件拉取部分组件源码 package/version@user/channel 或 yml/文本配置文件路径 -sys / --subsystem 输入 str 根据平台获取源码 opensource, public, framework, bmc_core, security, hardware, ras, energy, om, interface, product_extension, customer_extension --stage 输入 str 包类型,默认:stable rc, stable -a / --all 输入 flag 拉取全部 Conan 代码 true/false -p / --path 输入 str 指定拉取源代码的存放路径,默认:./source_code 任意合法路径 -r / --remote 输入 str Conan 仓别名 conan remote list 已配置的仓
调试示例 命令行调试 bash
bingo fetch -pi iam/1.20.31@openUBMC.release/rc
bingo fetch --all
bingo fetch -b openUBMC
bingo fetch -sys bmc_core 2.8 bingo diff 功能说明 获取两个产品版本间组件版本变更时的合并记录。
参数说明 参数名 方向 类型 描述 取值范围 commit id before 输入 str 前一个 commit ID(位置参数) Git commit hash commit id after 输入 str 后一个 commit ID(位置参数) Git commit hash
调试示例 命令行调试 bash bingo diff abc123 def456 2.9 bingo config 功能说明 bingo 参数配置,支持代理、签名、部署、插件等运行参数的持久化管理。
参数说明 参数名 方向 类型 描述 取值范围 -l / --list 输入 flag 列出所有配置 true/false --unset 输入 flag 取消配置参数 true/false --local 输入 flag 本地配置模式(写入 .bmcgo/config) true/false
通过 bingo config <section>.<key>=<value> 格式设置配置项。可用配置项包括:
配置项 描述 取值范围 env.http_proxy bingo 使用的 http_proxy URL 或空 env.https_proxy bingo 使用的 https_proxy URL 或空 env.ftp_proxy bingo 使用的 ftp_proxy URL 或空 env.no_proxy bingo 使用的 no_proxy 域名/IP 列表 env.timestamp_sign_server jar 文件签名的时间戳签名服务器 URL 或空 env.jarsigner_http_proxy JarSigner HTTP 代理 URL 或空 env.json_checker 检查 json 文件的工具 工具名或路径 env.hpm_signer HPM 重签名工具 工具名或路径 env.plugins_path 插件地址,默认 ~/.bmcgo/plugins 路径 deploy-host.port https 端口号,默认 443 端口号 deploy-host.username 部署用户名 任意合法用户名 deploy-host.password 部署密码 任意合法密码(明文存储,请注意安全) skill.sync 技能自动同步开关,默认 true true, false
调试示例 命令行调试 bash
bingo config skill.sync= false
bingo config env.http_proxy=http://proxy:8080
bingo config -l
bingo config --unset env.http_proxy
bingo config --local env.http_proxy=http://proxy:8080
bingo config deploy-192.168.1.1.port= 443 2.10 bingo upgrade 功能说明 升级 bingo 自身版本,支持升级到最新版本、指定版本和版本范围。
参数说明 参数名 方向 类型 描述 取值范围 -v / --version 输入 str 目标版本号 bingo=latest, bingo=<版本号>, bingo>=<版本号> -f / --force 输入 flag 跳过确认,直接安装 true/false -l / --list 输入 flag 列出可安装版本 true/false
调试示例 命令行调试 bash
bingo upgrade
bingo upgrade --version bingo= 0.7.50
bingo upgrade -l 2.11 bingo studio 功能说明 执行 BMC Studio 启动/停止操作,用于建模服务的管控。
调试示例 命令行调试 bash bingo studio start
bingo studio stop 2.12 bingo check 功能说明 CSR 语法正确性与模型一致性检查,用于验证组件服务资源的合规性。
参数说明 参数名 方向 类型 描述 取值范围 -b / --board_name 输入 str 指定单板,默认:openUBMC build/product 目录下的单板名 --stage 输入 str 包类型,默认:stable rc, stable -r / --remote 输入 str Conan 仓别名 conan remote list 已配置的仓 --csr-format 输入 str CSR 检查结果输出格式,默认:human human, json, junit --no-csr-incremental 输入 flag 关闭 CSR 增量检查,对全仓库执行全量检查 true/false
调试示例 命令行调试 bash bingo check
bingo check --csr-format json
bingo check --no-csr-incremental 2.13 bingo skill 功能说明 技能管理,用于从 GitCode Skills Marketplace 同步和管理 AI agent 技能到本地环境。
调试示例 命令行调试 3. 组件扩展案例 3.1 扩展能力概述 bingo 提供功能模块动态加载机制,开发者可通过在 bmcgo/functional/ 目录下编写 Python 模块来扩展 bingo 命令。每个功能模块需实现 if_available(可用性检查)、command_info(命令元信息)和 BmcgoCommand(命令执行类)三个接口,bingo CLI 在启动时自动扫描并注册符合条件的命令。
3.2 扩展点说明 扩展点位于 bmcgo/functional/ 目录,bingo 在初始化时通过 _load_functional 方法扫描该目录下所有 .py 文件(以 _ 开头的除外),动态导入并注册到对应命令组(Misc/Component/Integrated/Studio/Conan Index/SDK)中。
3.3 二次开发指导 步骤一:创建功能模块文件 在 bmcgo/functional/ 目录下创建新的 .py 文件,如 my_command.py。
步骤二:实现三个必须接口 if_available(bconfig: BmcgoConfig):返回布尔值,控制命令是否在当前环境下显示command_info: CommandInfo:定义命令组、名称、描述、是否隐藏和帮助信息class BmcgoCommand:实现命令执行逻辑,构造函数接收 bconfig 和 args,run() 方法执行具体操作示例代码 python from bmcgo import misc
from bmcgo.bmcgo_config import BmcgoConfig
from bmcgo.utils.tools import Tools
tools = Tools( "my_command" )
log = tools.log
command_info: misc.CommandInfo = misc.CommandInfo(
group = misc. GRP_MISC ,
name = "mycmd" ,
description = [ "我的自定义命令" ],
hidden = False
)
def if_available (bconfig: BmcgoConfig):
return True
class BmcgoCommand :
def __init__ (self, bconfig: BmcgoConfig, * args):
self .bconfig = bconfig
log.info( "自定义命令执行" )
def run (self):
log.success( "自定义命令完成" )
return 0 验证方法 在 bingo 源码目录执行 sh install_local.sh 安装到本地 在任意 bingo 项目目录执行 bingo help,检查是否出现新命令 执行 bingo mycmd 验证命令逻辑是否正确 注意事项 功能模块文件不能以 _ 开头 必须实现 if_available、command_info 和 BmcgoCommand 三个接口,否则 bingo 会跳过该模块 command_info.group 必须属于已有命令组(Misc commands、Component commands、Integrated commands、Studio commands、Conan Index commands、SDK commands)新增功能模块后需重新安装 bingo(sh install_local.sh)才能生效 4. 日志说明 4.1 一键日志收集 文件路径 内容说明 ~/.bmcgo_log/ bingo 运行时日志缓存目录,每次执行前自动清理并重建 temp/log/ 组件构建和测试过程中产生的详细日志 output/openubmc.perf 产品构建性能分析数据 output/package.lock 构建依赖锁定文件
4.2 关键日志信息 日志片段 日志级别 含义解读 建议处理动作 构建成功 INFO bingo build 命令正常完成 无需处理 注意:检测到当前目录即不是合法的组件(Component)目录也不是合法的产品(Manifest)目录 ERROR 当前执行目录未被 bingo 识别为有效项目 切换到包含 .bmcgo/config 或 mds/service.json 的目录 检测到依赖conan2.0但仅安装了conan1.0 WARN Conan 版本不匹配 bingo 会自动安装正确版本,重新执行命令即可 未检测到/opt/RTOS目录,可能未安装构建工具 INFO 缺少交叉编译工具链 执行 init.py 或 bingo build 安装构建工具 检测到环境设置了https_proxy代理 WARN 代理可能导致网络资源访问失败 设置 no_proxy 或取消代理 Build successfully INFO 组件 Conan 包构建成功 无需处理 当前skill自动更新状态已关闭 INFO Skill 同步功能被禁用 执行 bingo config skill.sync=true 开启 构建已退出, 退出码为: N ERROR 命令执行异常退出 检查退出码含义和输入参数
4.3 日志级别控制 通过环境变量 LOG 控制日志详细程度:
LOG 值 日志级别 用途 不设置 INFO(简化格式) 日常使用 info INFO(带文件名和行号) 问题排查 debug DEBUG 详细调试 warn WARNING 仅警告和错误 error ERROR 仅错误
使用方式:
bash export LOG = debug && bingo build 5. 问题定界指南 5.1 典型问题定界 现象描述 是否为本组件问题 判断依据 关键证据收集方法 bingo build 报错"不是合法组件或产品目录" 是 bingo 根据目录下的配置文件识别项目类型 检查当前目录是否包含 .bmcgo/config 或 mds/service.json bingo build Conan 包下载失败 否 网络或 Conan 仓问题 检查 conan remote list,测试 conan install,检查代理配置 bingo gen 代码生成报错 是 模型文件格式错误或模板引擎异常 查看 temp/lua_codegen 日志,检查 mds/service.json 和 model.json 格式 bingo test 测试失败 否 通常是组件业务逻辑问题 查看测试输出和 temp/coverage/dt_result.json HPM 包签名失败 否 签名服务或证书配置问题 检查 .bmcgo/config 中的签名配置和证书文件 bingo 命令未显示预期子命令 是 bingo 根据项目类型动态显示命令 检查 .bmcgo/config 是否正确配置 manifest/component 字段 Conan 版本冲突 是 bingo Conan 版本自动切换失败 查看 conan --version,检查 conanfile.py 的 required_conan_version
5.2 错误码速查表 错误码 含义 可能原因 排查建议 -1 一般性失败 参数非法、目录无效、内部异常 查看 ERROR 日志,检查执行目录和参数 1 系统退出 命令执行过程中触发 SystemExit 检查子命令返回码 0 成功 正常完成 无需处理 CommandNotFoundException 命令未找到 输入了 bingo 不支持的命令 执行 bingo help 查看可用命令 NotIntegrateException 非集成环境 在非 manifest 仓执行了集成构建命令 切换到 manifest 仓库目录 ConfigException 配置错误 命令组不匹配或配置文件格式错误 检查 .bmcgo/config 配置 ParameterException 参数错误 命令行参数不合法 执行 bingo <command> -h 查看参数说明
5.3 调试方法 开启调试日志 bash export LOG = debug
bingo build -bt debug --stage dev 复现问题方法 前置条件设置:确保 bingo 已正确安装(pip3 install openubmc-bingo),在目标目录下有 .bmcgo/config 或 mds/service.json 操作步骤:设置 export LOG=debug,执行目标 bingo 命令 预期现象:命令成功完成或输出详细错误信息定位到具体代码行 VSCode 调试 bingo 提供了 VSCode 调试脚本 debug.py,修改其中的配置后可直接在 VSCode 中断点调试:
python
DEBUG_TARGET_RELATIVE_PATH = "." # 调试目标目录
DEBUG_COMMAND = "bingo help" # 需调试的命令 6. 常见问题解答 Q1:bingo help 未显示预期命令 问题描述:在某个目录执行 bingo help,预期出现的命令未显示 一句话答案:bingo 根据目录下的配置文件动态显示可用命令 根因说明:bingo 通过检测 .bmcgo/config 或 mds/service.json 判断项目类型,只显示对应类型的命令组 解决方案:确认当前目录包含正确的配置文件,manifest 仓需要 .bmcgo/config 中配置 manifest.folder,组件仓需要 mds/service.json 适用版本:所有版本 Q2:Conan 版本不匹配导致构建失败 问题描述:bingo build 报错 Conan 版本不匹配 一句话答案:bingo 会自动检测并切换 Conan 版本 根因说明:组件 conanfile.py 的 required_conan_version 或 manifest 的 conan.version 配置与当前安装的 Conan 版本不一致 解决方案:bingo 会自动安装正确版本并提示重新执行,按提示操作即可 适用版本:所有版本 Q3:bingo build 构建速度慢 问题描述:bingo build 执行时间过长 一句话答案:利用 Conan 缓存和增量构建加速 根因说明:全量构建每次都重新编译所有依赖,Conan 缓存未启用 解决方案:避免使用 -nc(no_cache)参数,确保 ~/.conan/data 缓存目录正常;产品构建使用 -ucc 更新缓存而非全量重建 适用版本:所有版本 Q4:bingo gen 后手工代码被覆盖 问题描述:执行 bingo gen 后之前手写的代码被覆盖 一句话答案:手工代码不应放在 gen 目录下 根因说明:bingo gen 输出到 gen 目录,每次执行会覆盖该目录内容 解决方案:将手工编写的业务逻辑代码放在 gen 目录之外(如 src/lualib/lib),仅通过 gen 生成框架代码 适用版本:所有版本 Q5:bingo 升级失败 问题描述:执行 bingo upgrade 报错 一句话答案:检查 pip3 网络和权限 根因说明:pip3 安装失败通常由网络不通、PyPI 源不可达或权限不足导致 解决方案:配置正确的 pip 源和代理(bingo config env.http_proxy),或使用 APT 源安装(apt install openubmc-bingo) 适用版本:所有版本 附录 附录A 参考资料 附录B 修订记录 版本 日期 修订人 修订内容 v1.0 2026-07-24 openUBMC 初始版本创建