已切换分支到20251230
使用的bmc_sdk版本为: openUBMC
进行python3 init.py -path ./bmc_sdk.zip -user xxx -psw xxx
一直有如下报错
请问如何解决,我之前构建过一次是成功的
已切换分支到20251230
使用的bmc_sdk版本为: openUBMC
进行python3 init.py -path ./bmc_sdk.zip -user xxx -psw xxx
一直有如下报错
请问如何解决,我之前构建过一次是成功的
答案内容由AI生成,仅供参考:
根据您提供的错误日志和上下文信息,您在使用 openUBMC 25.09 版本构建签名包时遇到了初始化过程中的文件复制错误。以下是详细的分析与解决步骤。
/usr/bin/cp: cannot stat 'rtos_compiler': No such file or directory
ERROR:root:Command ['usr/bin/cp', '-rf', 'rtos_compiler', '/root'] returned non-zero exit status 1.
该错误发生在执行 python3 init.py 初始化脚本的过程中,具体表现为:
bmc_sdk.zip 成功。rtos_compiler 目录复制到 /root 路径失败。rtos_compiler 的文件或目录(cannot stat)。这表明虽然 bmc_sdk.zip 中包含 rtos_compiler 文件夹(见您日志中 inflating: bmc_sdk/rtos_compiler/...),但在调用 cp 命令时当前工作目录下并不存在名为 rtos_compiler 的独立目录。
结合 Knowledge Graph 和相关文档(如 search result id 1, 3, 4),可以确认以下几点:
init.py 脚本逻辑问题:
init.py 的设计预期是先解压 bmc_sdk.zip 到一个中间目录,然后从中提取 sdk/、rtos_compiler/ 等内容,并将其复制到指定位置(如 /root 或构建环境路径)。
路径映射错误或解压路径未切换:
当前错误的关键在于命令为:
cp -rf rtos_compiler /root
但实际文件位于 bmc_sdk/rtos_compiler,因此脚本未正确进入 bmc_sdk 目录即执行复制操作,导致 rtos_compiler 不在当前路径下。
Docker 环境与宿主路径差异导致缓存污染:
您使用的是 Docker 镜像 swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09。若您之前已成功构建过一次,可能残留了旧的 SDK 缓存(如 ~/sdk, ~/rtos_compiler),影响本次初始化行为。
Manifest 配置变更或分支适配问题:
您当前切换到了 br_release_openUBMC2509_20251230 分支。若该分支对 init.py 或 manifest.yml 的初始化流程进行了修改,而 bmc_sdk.zip 仍为旧版或不匹配版本(如未更新 pre_download 配置),也会导致初始化失败。
# 删除可能存在的旧 SDK 和编译器缓存
rm -rf ~/sdk ~/rtos_compiler
# 如果是在容器内,也清理根目录下的相关目录
rm -rf /root/sdk /root/rtos_compiler
注意:确保您以正确用户身份运行命令(如 root),否则权限不足可能导致部分删除失败。
确保您当前位于 manifest 仓库根目录下,并手动检查 bmc_sdk.zip 是否完整:
# 查看压缩包内容是否包含 rtos_compiler
unzip -l bmc_sdk.zip | grep rtos_compiler
# 正常输出应类似:
# XX ... bmc_sdk/rtos_compiler/hcc_arm64le.tar.gz
# XX ... bmc_sdk/rtos_compiler/rtos_base-208.9.1.SPC0100-...
如果存在,请执行完整解压流程:
# 删除之前残留的 bmc_sdk 目录
rm -rf bmc_sdk/
# 新建并进入目录进行解压
mkdir -p bmc_sdk
unzip bmc_sdk.zip -d bmc_sdk/
init.py 执行路径与参数正确您应将 -path 参数指向 .zip 文件本身,而不是解压后的目录:
python3 init.py -path ./bmc_sdk.zip -user xxx -psw xxx
正确行为:
init.py 会自动解压并提取所需内容。sdk/、rtos_compiler/ 等子目录。
常见错误:
-path 设为 ./bmc_sdk(解压后目录),可能导致路径解析错误。init.py 不支持相对路径,建议使用绝对路径以提高稳定性。根据知识图谱信息,bmcgo 版本(即 bingo)也可能影响构建流程:
# 升级 bingo 工具至最新版
bingo upgrade
# 或
pip install --upgrade bmcgo
已知问题:版本 0.5.317 存在签名失败问题(参考 KC #1 & #2),建议升级至 0.6.x 以上版本。
验证当前版本:
bingo -v
# 或
bmcgo --version
rtos_compiler 对应的 RTOS 版本应为 208.9.1(从您的日志可见)。Docker 镜像 24.04.2_25.09 支持该 SDK 版本。sed -i 's/208\.[0-9]\+\.[0-9]\+/208.9.1/g' /root/.conan2/profiles/profile.ini
# 0. 确保所在目录为 manifest 仓库根路径
cd /home/workspace/manifest
# 1. 清理旧数据
rm -rf ~/sdk ~/rtos_compiler /root/sdk /root/rtos_compiler bmc_sdk/
# 2. 重新下载或验证 bmc_sdk.zip 完整性
wget https://openubmc.cn/marketplace/bmc_sdk/download/latest -O bmc_sdk.zip # 替换为实际链接
unzip -t bmc_sdk.zip # 验证完整性
# 3. 执行初始化(确保路径为 zip 文件)
python3 init.py -path ./bmc_sdk.zip -user xxx -psw xxx
# 4. 升级工具
bingo upgrade
# 5. 构建签名包
LOG=info bingo build -b openUBMC -r artifactory
init.py 设计改进提案:使用 pre_download 机制自动管理 SDK(避免手动处理路径)若您之前成功构建过一次,而现在出现失败,很可能是以下原因之一:
bmc_sdk.zip → 确保与文档/分支完全对应ls -l bmc_sdk/rtos_compiler 输出pwd 返回的当前路径bingo -v 显示的版本号cat /root/.bmcgo_log/task.log | grep -i error 日志片段我们将基于更详细日志进一步排查。
相关链接:
请参考AI答复处理。