bitbake 如何在构建过程中搜索配方?
How bitbake searches for recipe in build process?
我想知道 bitbake 如何在构建过程中搜索配方?
例如,
我有一个类似下面的食谱:
DESCRIPTION = "PetaLinux GSTREAMER supported packages"
inherit packagegroup
GSTREAMER_PACKAGES = " \
gstreamer1.0 \
gstreamer1.0-python \
gstreamer1.0-meta-base \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-rtsp-server \
gst-shark \
gstd \
gst-perf \
gst-interpipes \
"
GSTREAMER_PACKAGES_append_zynqmp = " gstreamer1.0-omx"
RDEPENDS_${PN} = "${GSTREAMER_PACKAGES}"
当我在yocto层中搜索gstreamer1.0相关配方时,我找到了两个配方,其中一个是gstreamer1.0_1.16 .1.bb在meta层,另一个是gstreamer1.0_%.bbappend在meta-petalinux层。
这两个层都已添加到 bblayers.conf 文件中的 BBLAYERS 中,并且使用 [=25 指定的优先级=]BBFILE_PRIORITY_*在相关层的layer.conf文件中是相同的。
所以,
在那种情况下,构建过程中将使用哪个配方?
yocto 中的食谱查找规则是什么?
我改变了一些东西来理解行为:
例如,
- 我在 gstreamer1.0_%.bbappend 配方中输入了无效的 github URL。当我尝试构建 linux 系统时,我遇到了错误。没关系。
- 然后我更正了这个食谱中的 github URL 并输入了在 gstreamer1.0_1.16.[=55= 中指定的无效源代码地址]食谱。当我尝试构建 linux 系统时,过程成功完成。
- 然后我提高了meta层的优先级。我本应在这种情况下遇到错误,但构建过程再次成功完成。
你能帮我理解这种行为吗?
谢谢。
您有两个不同的文件:.bb
和 .bbappend
。
A .bb
是一个(或多个)包的基本配方。它通常描述如何为您的目标获取、配置、编译、安装包中的文件。
一个.bbappend
文件是一个'append'文件。它允许一个元(此处为 meta-petalinux)修改另一个元中的现有配方,而无需复制它。 A .bbappend
可以修改bb文件的任何步骤: source fetch, configure, compile, install...
例如,您可以创建自己的 Gstreamer bbappend,以启用 pango(在我的 Yocto 上默认禁用)。 bbappend 文件名为 gstreamer1.0-plugins-base_%.bbappend
,仅包含 PACKAGECONFIG_append = "pango"
Yocto 手册可以为您提供有关 bbappend 文件的更多信息 here。
我想知道 bitbake 如何在构建过程中搜索配方? 例如, 我有一个类似下面的食谱:
DESCRIPTION = "PetaLinux GSTREAMER supported packages"
inherit packagegroup
GSTREAMER_PACKAGES = " \
gstreamer1.0 \
gstreamer1.0-python \
gstreamer1.0-meta-base \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-rtsp-server \
gst-shark \
gstd \
gst-perf \
gst-interpipes \
"
GSTREAMER_PACKAGES_append_zynqmp = " gstreamer1.0-omx"
RDEPENDS_${PN} = "${GSTREAMER_PACKAGES}"
当我在yocto层中搜索gstreamer1.0相关配方时,我找到了两个配方,其中一个是gstreamer1.0_1.16 .1.bb在meta层,另一个是gstreamer1.0_%.bbappend在meta-petalinux层。
这两个层都已添加到 bblayers.conf 文件中的 BBLAYERS 中,并且使用 [=25 指定的优先级=]BBFILE_PRIORITY_*在相关层的layer.conf文件中是相同的。
所以, 在那种情况下,构建过程中将使用哪个配方? yocto 中的食谱查找规则是什么?
我改变了一些东西来理解行为: 例如,
- 我在 gstreamer1.0_%.bbappend 配方中输入了无效的 github URL。当我尝试构建 linux 系统时,我遇到了错误。没关系。
- 然后我更正了这个食谱中的 github URL 并输入了在 gstreamer1.0_1.16.[=55= 中指定的无效源代码地址]食谱。当我尝试构建 linux 系统时,过程成功完成。
- 然后我提高了meta层的优先级。我本应在这种情况下遇到错误,但构建过程再次成功完成。
你能帮我理解这种行为吗?
谢谢。
您有两个不同的文件:.bb
和 .bbappend
。
A .bb
是一个(或多个)包的基本配方。它通常描述如何为您的目标获取、配置、编译、安装包中的文件。
一个.bbappend
文件是一个'append'文件。它允许一个元(此处为 meta-petalinux)修改另一个元中的现有配方,而无需复制它。 A .bbappend
可以修改bb文件的任何步骤: source fetch, configure, compile, install...
例如,您可以创建自己的 Gstreamer bbappend,以启用 pango(在我的 Yocto 上默认禁用)。 bbappend 文件名为 gstreamer1.0-plugins-base_%.bbappend
,仅包含 PACKAGECONFIG_append = "pango"
Yocto 手册可以为您提供有关 bbappend 文件的更多信息 here。