如何列出用于使用bitbake构build特定软件包的所有.bb和.bbappend文件?

让我们考虑一下“virtual / kernel”包。 我想知道哪些.bb和.bbappend文件参与构build这个包。

我知道我可以通过以下方式获取包名:

bitbake -e虚拟/内核| grep ^ BP =

这个命令给了我用来构build虚拟/内核的包的名字,在我的例子中是linux-fslc-4.0+gitAUTOINC+19ebefd40a 。 但是,我不知道如何获得.bb和.bbappend文件(包括它们的位置)的列表,用于构buildlinux-fslc-4.0+gitAUTOINC+19ebefd40a软件包。

首先,你应该知道,构建一个单独的软件包可能涉及许多文件,特别是构建一个复杂的软件包,比如Linux内核。

如果将“bitbake -e foo”的输出传递给文件,然后分析其内容,则可以获得更多的信息。 就像是

 $ bitbake -e virtual/kernel >kernel.env 

例如,在输出的早期,您可以找到包含的列表,作为bitbake扫描并读取类文件的链。 也是非常有用的,虽然不是直接相关的问题,你可以看到变量的累积变化,因为这些包含文件被读入和解析。

如果你隔离那些设置变量的行,你可以有效地建立一个涉及构建包的文件列表。 像这样的东西:

 $ cat kernel.env | egrep '^#[ ]*append|^#[ ]*set' | cut -d ':' -f 1 | awk '{print $3}' | sort | uniq 

…应该产生一个在构建包时被挖掘出来的bitbake文件(* .conf,* .bb,* .bbclass等)的列表。 丑,但它的作品;)

你也可以考虑在freenode IRC上加入#oe和#yocto,在那里有很多非常聪明的人会比我更了解这个东西。 祝你好运。

您可以使用

 bitbake-layers show-appends 

列出所有用.bbappend文件扩展的配方。 它将显示所有这些文件的优先级和位置。