openUBMC整包构建提示gpp_header错误

  1. manifest.yml 配置
# yaml-language-server: $schema=/usr/share/bmcgo/schema/manifest.platform.schema.json
base:
  # openUBMC四段式版本号定义规则:第1段为1字节,范围是1-9;后3段固定2字节,范围为00-99
  version: "1.00.00.00.B001"
  # 单板定制化脚本,位于build/customization目录,需要实现一个Customization类
  customization: "customization/prototype.py"
  rtos_version: 208.8.0
  rtos_kernel: 5.10_ek_preempt_pro
  dependency_buildtools: dependency/dependency_buildtools.xml
  # 签名文件,由构建系统复制到self.config.board_path目录,如需定制
  signature:
    ## 伙伴自签名配置示例
    certificates:
      rootca_der: ${product}/ca/rootca.der
      signer_pem: ${product}/ca/signer.pem
      timestamp_signer_pem: ${product}/ca/ts_signer.pem
      timestamp_signer_cnf: ${product}/ca/tsa.cnf
      rootca_crl: ${product}/ca/rootca.crl
    files:
      - file: ${product}/ca/rootca.crl
        dst: cms.crl

dependencies:
  - conan: huawei_secure_c
  - conan: kmc
  ...
  1. 编译报错
切换工作目录到: /home/workspace/source/manifest/temp/build_openUBMC_debug_dev/sdk
切换工作目录到: origin_uboot_debug
>> gpp_header uboot
Open emmc_uboot_header.config fail.
WARN! file NULL not exist
ERROR: 执行命令 ['/usr/local/bin/gpp_header', 'uboot'] 错误, 日志: /home/workspace/source/manifest/temp/log/task.log
  1. emmc_uboot_header.config 在系统中存在:
find / -name "emmc_uboot_header.config"
/home/workspace/source/manifest/temp/build_openUBMC_debug_dev/gpp_build_dir/emmc_uboot_header.config
/usr/local/bin/emmc_uboot_header.config
  1. manifest 最新提交:
git log
commit 194d39223c350f95767c4bab55b6aa14ab636ab8 (HEAD -> main, origin/main, origin/HEAD)
Merge: fae0914 4102748
Author: openUBMC-robot <chaotomzhu@gmail.com>
Date:   Tue Mar 18 23:08:08 2025 +0800

    merge dev into main

    品牌信息白牌化

    Created-by: xyzheng1122
    Commit-by: xyzheng1122
    Merged-by: openUBMC-robot
    Description: 品牌信息白牌化

    See merge request: openUBMC/manifest!35

参考 3.3日clone的manifest,签名相关问题导致编译报错 处理

我的这个报错信息,和3.3日clone的manifest,签名相关问题导致编译报错 是不一样的

尝试用上述方法,但是报错没有变

在gpp/files中新增配置 - file: /usr/local/bin/emmc_uboot_header.config

目前是这么加的:

...
gpp:
  files:
    # rootfs镜像文件固定为rootfs_BMC.img
    - file: ${work_out}/rootfs_iBMC.img
    # rootfs镜像压缩文件固定为rootfs_BMC.img
    - file: ${work_out}/rootfs_iBMC.tar.gz
    # rootfs_BMC.img的cms签名文件
    - file: ${work_out}/rootfs_iBMC.img.cms

    - file: /usr/local/bin/emmc_uboot_header.config

    ## 伙伴自签名配置示例
    # 签名文件的证书吊销列表
    - file: ${product}/ca/rootca.crl
      dst: cms.crl
    # 签名的根证书
    - file: ${product}/ca/rootca.der
      dst: rootca.der
...

需要详细堆栈信息,构建时设置LOG=info环境变量,可以打印堆栈,命令示例:LOG=info bmcgo build

LOG=info bmcgo build -b openUBMC

...
[2025-03-24 16:46:08,319 INFO] task.py:233 切换工作目录到: /home/workspace/source/manifest/temp/build_openUBMC_debug_dev/sdk
[2025-03-24 16:46:08,320 INFO] task.py:233 切换工作目录到: origin_uboot_debug
[2025-03-24 16:46:08,324 ERROR] task_download_dependency.py:109 执行命令 ['/usr/local/bin/gpp_header', 'uboot'] 错误, 日志: /home/workspace/source/manifest/temp/log/task.log
[2025-03-24 16:46:08,327 INFO] frame.py:241 Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/frame.py", line 231, in run
    ret = self._run()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/frame.py", line 275, in _run
    ret = work_x.run()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_download_dependency.py", line 92, in run
    self.move_dependency()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_download_dependency.py", line 76, in move_dependency
    self._self_sign_uboot("origin_uboot_debug", ".", True)
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_download_dependency.py", line 109, in _self_sign_uboot
    self.run_command("gpp_header uboot")
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task.py", line 242, in run_command
    return self.tools.run_command(command, ignore_error, sudo, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/utils/tools.py", line 570, in run_command
    raise e
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/utils/tools.py", line 560, in run_command
    ret = subprocess.run(command, stdout=log_fd, stderr=log_fd, check=check, timeout=timeout)
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/local/bin/gpp_header', 'uboot']' returned non-zero exit status 255.

[2025-03-24 16:46:08,327 ERROR] frame.py:243 Command '['/usr/local/bin/gpp_header', 'uboot']' returned non-zero exit status 255.
[2025-03-24 16:46:10,388 ERROR] cli.py:365 任务 personal 执行失败
[2025-03-24 16:46:10,388 ERROR] cli.py:366 请查看日志信息
...

cat /home/workspace/source/manifest/temp/log/task.log

...
[2025-03-24 16:49:07,755 INFO] task.py:233 切换工作目录到: /home/workspace/source/manifest/temp/build_openUBMC_debug_dev/sdk
[2025-03-24 16:49:07,756 INFO] task.py:233 切换工作目录到: origin_uboot_debug
Open emmc_uboot_header.config fail.
WARN! file NULL not exist
[2025-03-24 16:49:07,760 ERROR] task_download_dependency.py:109 执行命令 ['/usr/local/bin/gpp_header', 'uboot'] 错误, 日志: /home/workspace/source/manifest/temp/log/task.log
...

Ok,此问题需要转开发定位,稍等。

cat /usr/local/bin/emmc_uboot_header.config看一下

root@d607db415317:/home/source# cat /usr/local/bin/emmc_uboot_header.config
GPP_MAX_SIZE                =      384
FW_NUM                      =      3
BOOT_NAME                   =      uboot.bin
BOOT_SITE                   =      -3145728
BOOT_SIZE                   =      2097152
ROOTFS_Header_NAME          =      NULL
ROOTFS_Header_SITE          =      -4194304
ROOTFS_Header_SIZE          =      1048576
ROOTFS_NAME                 =      NULL
ROOTFS_SITE                 =      0
ROOTFS_SIZE                 =      0


//uboot SUB HEADER的相关配置
//VendorSig: 产商签名是否开启
//CustomerSig: 客户签名是否开启
VendorSig                   =      ENABLE
CustomerSig                 =      DISABLE
VendorRootPubkCertPath      =      rootca.der
VendorCMSSignaturePath      =      uboot.bin.cms
VendorCRLPath               =      cms.crl
CustomerRootPubkCertPath    =      NULL
CustomerCMSSignaturePath    =      NULL
CustomerCRLPath             =      NULL
ROOTFSPath                  =      uboot.bin

补充版本信息

bmcgo

dpkg -l hw-ibmc-bmcgo
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-==============================================
ii  hw-ibmc-bmcgo  0.5.282      all          The bmc depveloper toolkits provided by huawei
pip3 show hw-ibmc-bmcgo
Name: hw-ibmc-bmcgo
Version: 0.5.214
Summary: Tools provided by ibmcv3
Home-page: https://www.huawei.com
Author: None
Author-email: None
License: UNKNOWN
Location: /usr/local/lib/python3.8/dist-packages
Requires: protobuf, pyopenssl, dbus-python, inflection, pyinstaller, pyecharts, conan, jsonschema, pyyaml, mako, gitpython, colorama, cryptography, meson, pysftp, typeguard, setuptools, kafka-python, launchpadlib, node-semver, pyyaml-include
Required-by:

manifest

最新提交
commit 194d39223c350f95767c4bab55b6aa14ab636ab8

manifest.yml 签名配置

 cat ./build/product/BMC/openUBMC/manifest.yml
# yaml-language-server: $schema=/usr/share/bmcgo/schema/manifest.platform.schema.json
base:
  # openUBMC四段式版本号定义规则:第1段为1字节,范围是1-9;后3段固定2字节,范围为00-99
  version: "1.00.00.00.B001"
  # 单板定制化脚本,位于build/customization目录,需要实现一个Customization类
  customization: "customization/prototype.py"
  rtos_version: 208.8.0
  rtos_kernel: 5.10_ek_preempt_pro
  dependency_buildtools: dependency/dependency_buildtools.xml
  # 签名文件,由构建系统复制到self.config.board_path目录,如需定制
  signature:
    ## 伙伴自签名配置示例
    certificates:
      rootca_der: ${product}/ca/rootca.der
      signer_pem: ${product}/ca/signer.pem
      timestamp_signer_pem: ${product}/ca/ts_signer.pem
      timestamp_signer_cnf: ${product}/ca/tsa.cnf
      rootca_crl: ${product}/ca/rootca.crl
    #simple_signer_server:
    # url: 172.17.0.2
    #  rootca_der: ${product}/ca/rootca.der
    #  cert_id: _bmc_build
    #  ssl_verify: false
    files:
      - file: ${product}/ca/rootca.crl
        dst: cms.crl

编译失败原因汇总

emmc_uboot_header.config 文件找不到

FileNotFoundError: [Errno 2] No such file or directory: '/home/workspace/source/manifest/temp/build_openUBMC_release_dev/gpp_build_dir/emmc_uboot_header.config'

[2025-03-25 11:11:15,799 ERROR] [Errno 2] No such file or directory: '/home/workspace/source/manifest/temp/build_openUBMC_release_dev/gpp_build_dir/emmc_uboot_header.config'
[2025-03-25 11:11:17,811 ERROR] 任务 personal 执行失败
[2025-03-25 11:11:17,812 ERROR] 请查看日志信息
[2025-03-25 11:01:34,001 INFO] 复制 /home/workspace/source/manifest/temp/build_openUBMC_debug_dev/sdk/Hi1711_boot_pmode_debug.bin 到 Hi1711_boot_pmode.bin 并保留权限
[2025-03-25 11:01:34,002 INFO] >> gpp_header hpm
[2025-03-25 11:01:34,006 ERROR] 执行命令 ['/usr/local/bin/gpp_header', 'hpm'] 错误, 日志: /home/workspace/source/manifest/temp/log/task.log
[2025-03-25 11:01:34,009 INFO] Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/frame.py", line 231, in run
    ret = self._run()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/frame.py", line 275, in _run
    ret = work_x.run()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_buildgppbin.py", line 94, in run
    self.build_gpp_hpm_bin()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_buildgppbin.py", line 53, in build_gpp_hpm_bin
    self.run_command("gpp_header hpm")
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task.py", line 242, in run_command
    return self.tools.run_command(command, ignore_error, sudo, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/utils/tools.py", line 570, in run_command
    raise e
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/utils/tools.py", line 560, in run_command
    ret = subprocess.run(command, stdout=log_fd, stderr=log_fd, check=check, timeout=timeout)
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/local/bin/gpp_header', 'hpm']' returned non-zero exit status 255.

[2025-03-25 11:01:34,009 ERROR] Command '['/usr/local/bin/gpp_header', 'hpm']' returned non-zero exit status 255.
[2025-03-25 11:01:34,013 ERROR] 运行子任务 work.task_hpm_envir_prepare 类 bmcgo.tasks.task_hpm_envir_prepare失败
[2025-03-25 11:01:34,099 ERROR] 运行子任务 work.task_build_rootfs_img 类 bmcgo.tasks.task_build_rootfs_img失败
[2025-03-25 11:01:36,103 ERROR] 任务 personal 执行失败
[2025-03-25 11:01:36,103 ERROR] 请查看日志信息

make_uboot_img.sh 传参异常

[2025-03-25 10:56:06,466 INFO] >> make_uboot_img.sh
[2025-03-25 10:56:06,469 ERROR] 执行命令 ['/usr/local/bin/make_uboot_img.sh'] 错误, 日志: /home/workspace/source/manifest/temp/log/task.log
[2025-03-25 10:56:06,476 INFO] Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/frame.py", line 231, in run
    ret = self._run()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/frame.py", line 275, in _run
    ret = work_x.run()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_download_dependency.py", line 92, in run
    self.move_dependency()
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_download_dependency.py", line 76, in move_dependency
    self._self_sign_uboot("origin_uboot_debug", ".", True)
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_download_dependency.py", line 111, in _self_sign_uboot
    self.run_command("make_uboot_img.sh")
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task.py", line 242, in run_command
    return self.tools.run_command(command, ignore_error, sudo, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/utils/tools.py", line 570, in run_command
    raise e
  File "/usr/local/lib/python3.8/dist-packages/bmcgo/utils/tools.py", line 560, in run_command
    ret = subprocess.run(command, stdout=log_fd, stderr=log_fd, check=check, timeout=timeout)
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/local/bin/make_uboot_img.sh']' returned non-zero exit status 255.

[2025-03-25 10:56:06,476 ERROR] Command '['/usr/local/bin/make_uboot_img.sh']' returned non-zero exit status 255.
[2025-03-25 10:56:08,548 ERROR] 任务 personal 执行失败
[2025-03-25 10:56:08,548 ERROR] 请查看日志信息

长期解决方案:

更新bmcgo软件

临时解决方案:

  1. 修改build/product/BMC/openUBMC/manifest.yml文件,在gpp/files下增加:
    - file: /usr/local/bin/emmc_uboot_header.config
    - file: /usr/local/bin/hpm_header.config
  1. 修改/usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_download_dependency.py文件的函数_self_sign_uboot
    新增行:
    shutil.copy("/usr/local/bin/emmc_uboot_header.config", "emmc_uboot_header.config")
    修改行:
    self.run_command(f"make_uboot_img.sh 1711")

修改完成后:

def _self_sign_uboot(self, uboot_dir, output_dir, is_debug):
        output_dir = os.path.realpath(output_dir)
        rootca_der = self.config.rootca_der
        rootca_crl = self.config.rootca_crl
        debug_flag = "_debug" if is_debug else ""
        cwd = os.getcwd()
        cmd = f"dd if=Hi1711_boot_4096{debug_flag}.bin of={uboot_dir}/l0l1.bin bs=1K count=1K count=768"
        self.run_command(cmd)
        self.run_command(f"cp bin/signed_bin/sdk/u-boot_cms{debug_flag}.bin {uboot_dir}/u-boot_cms.bin")
        self.run_command(f"cp {rootca_der} {uboot_dir}/rootca.der")
        self.run_command(f"cp {rootca_crl} {uboot_dir}/cms.crl")
        self.run_command(f"cp {uboot_dir}/u-boot.bin {uboot_dir}/uboot.bin")
        self.signature(f"{uboot_dir}/uboot.bin", f"{uboot_dir}/uboot.bin.cms")
        self.chdir(uboot_dir)
        # 此处新增
        shutil.copy("/usr/local/bin/emmc_uboot_header.config", "emmc_uboot_header.config")
        self.run_command("gpp_header uboot")
        # 此处修改
        self.run_command(f"make_uboot_img.sh 1711")
        cmd = f"dd if=Hi1711_boot_4096.bin of={output_dir}/Hi1711_boot_pmode{debug_flag}.bin bs=1K count=1024 skip=768"
        self.run_command(cmd)
        self.run_command(f"cp Hi1711_boot_4096.bin {output_dir}/Hi1711_boot_4096{debug_flag}.bin")
        self.chdir(cwd)

社区开发者需要安装配套的pip包和deb包,理论上2者版本要对应,
pip3 install xxx.whl --upgrade
dpkg -i xxx.deb
当前构建工具288版本前存在issue,
vi /usr/local/lib/python3.8/dist-packages/bmcgo/tasks/task_buildgppbin.py删除
shutil.copy(os.path.join(self.config.gpp_build_dir, “emmc_uboot_header.config”), “emmc_uboot_header.config”)这一行

适用于214版本

适用于282、283版本