如何解决OpenBMC构建phosphor-user-manager时文件安装未打包QA错误
问题原因
这是OpenEmbedded/Yocto构建体系的标准QA检查报错:你切换到自有仓库后的phosphor-user-manager代码在do_install阶段生成了8个额外的文件/目录,但原配方(.bb文件)里没有声明这些文件需要被打包到最终的软件包中,因此触发了installed-vs-shipped规则导致构建失败。
解决方案
根据你是否需要用到nslcd证书相关功能,选择对应处理方式即可:
方案1:需要保留这些文件(使用nslcd证书管理能力)
直接在你的phosphor-user-manager_git.bb或者对应的.bbappend追加配置文件中添加如下配置,把独有路径加入打包列表:
FILES:${PN} += " \ /dbus-1/system.d/phosphor-nslcd-cert-config.conf \ /usr/share/phosphor-certificate-manager/nslcd \ /lib/systemd/system/multi-user.target.wants/phosphor-certificate-manager@nslcd.service \ "
注意不要直接把/dbus-1、/usr/share这类父目录加入打包列表,这类父目录一般由基础文件系统或其他公共包提供,仅需添加当前包独有的文件和子目录即可。
方案2:不需要这些nslcd相关文件
两种处理方式任选其一:
- 去自有代码仓库的meson.build/CMakeLists.txt等构建配置里,删除nslcd证书相关的安装逻辑,构建时就不会生成这些冗余文件
- 不想修改上游代码的话,直接在配方的
do_install函数末尾追加删除逻辑即可,示例如下:
do_install:append() { rm -rf ${D}/dbus-1/system.d/phosphor-nslcd-cert-config.conf rm -rf ${D}/usr/share/phosphor-certificate-manager rm -rf ${D}/lib/systemd/system/multi-user.target.wants/phosphor-certificate-manager@nslcd.service }
修改后验证
修改完配方后执行如下命令重新构建即可:
bitbake phosphor-user-manager -c cleansstate && bitbake phosphor-user-manager
内容的提问来源于stack exchange,提问作者Alexander Raih
相关产品推荐
相关产品推荐

