yocto:重建项目的一部分

问题描述 投票:0回答:8

我有一个项目正在使用 yocto 来构建包括 gstreamer 在内的库。我发现我需要修补一些 gstreamer 元素,从而使用补丁创建新的 bitbake 配方..

我通常必须使用图像名称作为参数运行 bitbake,这将重建整个 yocto(相当长):

MACHINE=some_machine nice bitbake yocto-etc-etc

如何只重建我需要的部分而不是整个 yocto? 我听说过 devtool,但我不知道如何使用它。

gstreamer yocto
8个回答
26
投票

您可以根据需要向bitbake传递不同的命令。

要删除温度:

bitbake -c clean gstreamer

删除临时和状态缓存(我最常使用这个):

bitbake -c cleansstate gstreamer

也要删除下载,让我们从 do_fetch 和 all 开始构建

bitbake -c cleanall gstreamer

一旦完成了其中任何一个适合您的清理工作,您就可以简单地为指定的构建命令:

bitbake gstreamer

8
投票

当然,这很容易做到。只需指定您想要构建的配方而不是图像名称,例如,如果它是您更改的主要 gstreamer 配方(至少在当前版本中称为 gstreamer1.0):

MACHINE=some-machine bitbake gstreamer1.0

请注意,命令行上预期的名称始终是配方名称或配方中 PROVIDES 中的名称,而不是运行时包名称。

关于 devtool,它当然可以让您进入一个可以更轻松地更改配方源并从中生成补丁的环境,但我们在这里讨论的实际构建部分并没有真正改变。您可以在Yocto项目开发手册

中找到有关如何使用devtool的更多信息

4
投票

你也可以

clean:删除目标的所有输出文件 cleanall:根据更改删除目标的所有输出文件、共享状态缓存和下载的源文件

bitbake -c clean task 
bitbake -c cleanall task

3
投票

首先,您可以使用 quilt 或 diff 等在 gstreamer 上创建补丁...

将补丁放入元层并将其包含到,

SRC_URI += "file://xxxx.patch".

确保您已在配方的 bbappend 文件中添加了 FILESEXTRAPATHS_PREPEND 变量。

然后对包进行 cleanstate。

bitabake gstreamer** -c cleansstate

然后执行do_patch操作并检查我们的补丁是否已正确应用。

bitabake gstreamer*** -c patch

然后完整构建组件,然后构建最终目标。


1
投票

您还可以启动您感兴趣的任务,例如:

如果您只想应用补丁,您可以执行以下操作:

# Apply the patch you have located and sourced in SRC_URI variable previously
MACHINE=some_machine nice bitbake -c patch gstreamer
# Compile the recipe 
MACHINE=some_machine nice bitbake -c compile gstreamer

# In case there are more necessary tasks, launch them as previous

现在您可以获取生成的包,并将其传递到您的主板(例如通过 ssh/serial(zmodem) ),测试它并重复直到您喜欢结果,然后重新生成图像:

for i in clean cleanall cleansstate;do bitbake -c ${i} gstreamer;done
MACHINE=some_machine nice bitbake yocto-etc-etc

0
投票

您可以通过提供配方名称和 bitbake 命令来构建任何特定的配方

例如,如果你想构建gstreamer

poky/meta/recipes-multimedia/gstreamer1.0_1.16.3.bb

您可以使用以下命令

MACHINE=<your-machine-name> bitbake gstreamer1.0

请注意,PROVIDES 值将从 .bb 文件名中解析,不包括下划线后面的字符。

其他建议

如果您想在源代码中进行一些实验性更改并希望针对每个简约更改进行编译,您可以通过导航到 工作目录

cd build/tmp/work/armv5e-poky-linux-gnueabi/gstreamer1.0/1.16.3-r0/

在这里,您可以在

src
目录中应用更改,并且可以使用
./temp/run.do_compile
进行编译,与整个构建时间相比,这将花费更少的时间。


0
投票

您可以在文件 root**/build/conf/local.conf** 中相同机器名称: 机器=“some_machine”

然后从根目录: 来源 ./oe-init-build-env

这会将您重定向到 buid/ 目录 然后(从构建目录): Bitbake gstreamer


0
投票

如果你想看的话,我为 yocto 找到了一个很好的课程 https://www.udemy.com/course/best-yocto-poky-bitbake-ever/learn/lecture/42019000#content

© www.soinside.com 2019 - 2024. All rights reserved.