6

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

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

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

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

4

3 回答 3

7

首先,您应该知道,构建单个包可能涉及数十个文件,尤其是构建复杂包(如 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,那里有很多非常聪明的人,他们比我更了解这些东西!祝你好运。

于 2015-06-08T13:09:01.617 回答
7

您可以使用

bitbake-layers show-appends

列出使用 .bbappend 文件扩展的所有配方。它将指示所有此类文件的优先级和位置。

于 2015-10-08T13:15:55.540 回答
2

尝试以下操作:

显示配方的.bb文件

RECIPE_NAME="linux-yocto"
bitbake -e  $RECIPE_NAME | grep ^FILE=

显示配方的.bbappend文件

RECIPE_NAME="linux-yocto"
bitbake-layers show-appends linux-yocto

bitbake-layers show-appends linux-yocto旧版本的 bitbake 可能不支持查询特定配方。改为使用bitbake-layers show-appends

于 2021-04-24T08:28:31.960 回答