如何确定是什么导致在 Yocto 中构建不需要的包?

all*_*y87 5 bitbake yocto

我正在尝试使用配方为 RPi 构建一个控制台映像core-image-base,但在我的配置中的某个地方,我似乎打开了一些开关,使构建的配方数量增加了大约 1000 个,其中包括许多感觉不像的东西属于控制台图像(libx11gnome-desktop-testing等)

我试图找出为什么这些食谱被包含在我的构建中。到目前为止,我的方法是运行以下命令:

# Generate a massive dot file with all the dependencies in it
bitbake -g core-image-base

# grep through that file to find out what is bringing in
# gnome-desktop-testing.
cat task-depends.dot | grep -i gnome-desktop-testing | grep -vi do_package_write_rpm
Run Code Online (Sandbox Code Playgroud)

do_package_write_rpm从匹配中删除了,因为一切似乎都与它匹配。这留下了以下内容:

"core-image-base.do_build" -> "gnome-desktop-testing.do_build"
"core-image-base.do_rootfs" -> "gnome-desktop-testing.do_package_qa"
"core-image-base.do_rootfs" -> "gnome-desktop-testing.do_packagedata"
"core-image-base.do_rootfs" -> "gnome-desktop-testing.do_populate_lic"
"glib-2.0.do_package_qa" -> "gnome-desktop-testing.do_packagedata"
(followed by many dependencies between the tasks of the gnome-desktop-testing recipe)
Run Code Online (Sandbox Code Playgroud)

所以,如果我的解释是正确的,那么似乎core-image-base直接取决于gnome-desktop-testing. 这看起来很不寻常,因为core-image-base它应该只是控制台图像。

我尝试添加PACKAGE_EXCLUDE = "gnome-desktop-testing"到我的 local.conf 希望它能返回一些更多信息,但无论这个变量的设置如何,构建似乎都会继续进行:/

我怎样才能弄清楚gnome-desktop-testingYocto 为何要构建它?理想情况下,我想要一个不涉及烤面包机的解决方案。

小智 2

我遇到了这个问题,所以我想我会发布答案。

首先,我删除了配方,重新构建,然后查看第一个依赖链。

NOTE: Runtime target 'shared-mime-info' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['shared-mime-info', 'glib-2.0', 'gnome-desktop-testing']
Run Code Online (Sandbox Code Playgroud)

然后我们查看配方,发现 glib-ptest 在 gnome-desktop-testing 上有一个 RDEPENDS。

RDEPENDS_${PN}-ptest += "\
            coreutils \
            libgcc \
            dbus \
            gnome-desktop-testing \
            tzdata \
Run Code Online (Sandbox Code Playgroud)

因此,要解决这个问题,您需要禁用“ptest”。这可以通过您的发行版配置来完成 ( meta-layer/conf/distro/*.conf)。