yocto:重建项目的一部分

时间:2016-04-06 13:35:48

标签: gstreamer yocto

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

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

MACHINE=some_machine nice bitbake yocto-etc-etc

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

5 个答案:

答案 0 :(得分:4)

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

MACHINE=some-machine bitbake gstreamer1.0

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

关于devtool,它当然可以让你进入一个环境,你可以更容易地更改配方的源代码并从中生成补丁,但我们在这里讨论的实际构建部分并没有真正改变。您可以在Yocto Project Development Manual

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

答案 1 :(得分:4)

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

删除temp:

bitbake -c clean gstreamer

删除temp和sstate缓存(我最常使用):

bitbake -c cleansstate gstreamer

要删除下载,让我们从do_fetch和所有

开始构建
bitbake -c cleanall gstreamer

一旦你完成了任何适合你的干净,你可以简单地给出指定的构建命令:

bitbake gstreamer

答案 2 :(得分:1)

你也可以

clean:删除目标的所有输出文件 cleanall:删除目标的所有输出文件,共享状态缓存和下载的源文件,具体取决于更改

bitbake -c clean task 
bitbake -c cleanall task

答案 3 :(得分:0)

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

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

# 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)),对其进行测试并重复进行,直到您喜欢resul,然后执行以下操作重新生成图像:

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

答案 4 :(得分:0)

首先,您可以使用被子或diff等在gstreamer上创建补丁。

将补丁放入您的元层,并将其包含在SRC_URI += "file://xxxx.patch".

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

然后对软件包进行清理。

bitabake gstreamer** -c cleansstate

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

bitabake gstreamer*** -c patch

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