我正在使用 OpenEmbedded-Core,并创建了一个优先级为 6 的自定义层。几个月的开发已经过去,现在我想将层的优先级增加到 8,因为来自另一个优先级为 7 的层的附加文件会干扰附加我要添加到图层中的文件。
我的问题是,如何生成图像中使用的食谱和 .bbappend 文件列表?
我想在更改优先级之前和之后生成列表,以便我可以比较它们(希望使用 difftool)以查看是否发生任何意外的副作用,例如来自其他层的重要附加文件可能会被忽略.
我正在使用 Angstrom 发行版的 angstrom-v2014.12-yocto1.7 分支。
[编辑]
我现在主要只是想确定如何列出我的图像此时实际使用的 .bbappend 文件。
可以使用@pnxs建议的“bitbake -g your-image-name”查看软件包列表,或者从.manifest文件(这是我喜欢使用的)中查看,在我的例子中,该文件位于deploy/glibc下/图像/图像名称/。我最初问如何生成“配方文件”列表,但我认为包列表就足够了。
关于 .bbappends,我遇到过由于层优先级而忽略我自己的 .bbappend 的情况。我对图层优先级进行了更改,现在想看看这是否会导致图像中其他位置的任何 .bbappend 文件被忽略。据我了解,使用“bitbake-layers show-appends”作为建议列表 all .bbappends 存在,而不仅仅是那些实际用于创建图像的列表,所以这不符合我的要求.
尝试以下操作:
显示所有食谱
bitbake-layers show-recipes
显示 .bb 配方文件
RECIPE_NAME="linux-yocto"
bitbake -e $RECIPE_NAME | grep ^FILE=
尝试使用
bitbake-layers show-appends
看看使用了什么 .bbappend
。但这仅适用于每个食谱。但这可能会为您提供了解优先事项所需的信息。
您可以执行
bitbake -g your-image-name
在当前目录中创建一些点文件。
文件
pn-depends.dot
包含包名称列表(pn
)以及它们之间的依赖关系。
当您获取列出所有包的文件的第一部分时,您会看到以下示例:
"busybox" [label="busybox :1.23.1-r0.2\n/home/user/yocto/sources/poky/meta/recipes-core/busybox/busybox_1.23.1.bb"] "base-files" [label="base-files :3.0.14-r89\n/home/user/yocto/sources/poky/meta/recipes-core/base-files/base-files_3.0.14.bb"]
因此您获得了图像使用的所有包的列表以及相应的配方文件。
要查看 bbappend 扩展了哪些菜谱,您必须使用
bitbake-layers show-appends
获取 bbappend 列表,并查找每个菜谱的附加内容。你可以编写一个小的 python 程序来为你做到这一点。
尝试以下命令
bitbake -g image-name && cat pn-depends.dot | grep -v -e '-native' | grep -v digraph | grep -v -e '-image' | awk '{print $1}' | sort | uniq