Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何确定是什么导致在Yocto中构建不需要的包?_Yocto_Bitbake - Fatal编程技术网

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

我如何确定是什么导致在Yocto中构建不需要的包?,yocto,bitbake,Yocto,Bitbake,我正在尝试使用核心映像库配方为RPi构建控制台映像,但在我的配置中,我似乎打开了某种东西,使构建的配方数量增加了约1000个,其中包括许多感觉不属于控制台映像的内容(libx11,gnome桌面测试,等等) 我正试图找出这些配方被包含在我的构建中的原因。到目前为止,我的方法是运行以下命令: #生成一个包含所有依赖项的海量点文件 bitbake-g核心图像库 #grep通过那个文件来找出带来了什么 #gnome桌面测试。 cat task-dependens.dot | grep-i gnome桌

我正在尝试使用
核心映像库
配方为RPi构建控制台映像,但在我的配置中,我似乎打开了某种东西,使构建的配方数量增加了约1000个,其中包括许多感觉不属于控制台映像的内容(
libx11
gnome桌面测试
,等等)

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

#生成一个包含所有依赖项的海量点文件
bitbake-g核心图像库
#grep通过那个文件来找出带来了什么
#gnome桌面测试。
cat task-dependens.dot | grep-i gnome桌面测试| grep-vi do_包| write_rpm
我从匹配中删除了
do\u package\u write\u 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)
因此,如果我的解释是正确的,
core-image-base
似乎直接依赖于
gnome桌面测试
。这似乎不寻常,因为
core-image-base
应该是一个仅用于控制台的图像

我尝试将
PACKAGE_EXCLUDE=“gnome desktop testing”
添加到我的local.conf中,希望它能返回更多信息,但不管该变量的设置如何,构建似乎都在继续:/


我怎样才能弄清楚为什么Yocto正在构建gnome桌面测试?理想情况下,我希望有一个不涉及烤面包机的解决方案。

这个问题的一个残酷解决方案就是删除你不想要的配方并重新运行bitbake。这会给你一个有用的信息,比如:

ERROR: Required build target 'core-image-base' has no buildable providers.
Missing or unbuildable dependency chain was:
['core-image-base', 'packagegroup-base-extended', 'ofono', 'glib-2.0', 'gnome-desktop-testing']

如果您使用git引入了这些层,那么可以使用
git checkout path/to/deleted/recipe
快速恢复更改,我遇到了这个问题,所以我想我会发布答案

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

NOTE: Runtime target 'shared-mime-info' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['shared-mime-info', 'glib-2.0', 'gnome-desktop-testing']
然后我们查看配方,看看glib ptest在gnome桌面测试中有一个RDEPENDS

RDEPENDS_${PN}-ptest += "\
            coreutils \
            libgcc \
            dbus \
            gnome-desktop-testing \
            tzdata \

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

检查buildhistory目录中的点文件可以更容易地找到它。使用bitbake-g可以看到yocto步骤。在buildhistory中,只有包。要拥有此目录,必须添加“INHERIT+=“buildhistory”和“buildhistory\u COMMIT=“1”“.@see
PACKAGE_EXCLUDE
应该具有与AFAIU相同的行为,并且它比直接删除一个配方更“干净”(特别是因为您可以有多个版本的“相同”配方)不同层次的配方。如问题中所述,我曾尝试在local.conf中使用
PACKAGE_EXCLUDE=gnome desktop testing
,但似乎没有什么不同……有两种可能性:1)此配方用于构建另一个配方,但其包从未达到最终图像,2)正在安装的软件包没有命名为
gnome desktop testing
,但有点不同。最后,您的根本解决方案在您的案例中运行得更好:)我怀疑#2是原因,我在想也许这个包被称为
gnome桌面测试dev
gnome桌面测试bin