Build 源代码的bitbake依赖关系是如何工作的?

Build 源代码的bitbake依赖关系是如何工作的?,build,compilation,dependencies,openembedded,bitbake,Build,Compilation,Dependencies,Openembedded,Bitbake,我是“bitbake”方法的初学者,我想知道在构建包含数千个包的项目时,在以下情况下会发生什么: 您对完整映像(所有包)进行bitbake,它将成功完成 您对一个包进行了更改—一些源代码(我们称之为包“X”) 再次烘焙完整图像 在步骤3中,“X”是否重建?重建“X”是否需要增加PV和PR?依赖于“X”的“Y”包会发生什么情况?如果重建X,是否也重建“Y” 我知道如果你修改了一个.bb文件,依赖的包不会被构建,因为时间戳被检查了。源代码更改的机制是否相同?(顺便说一句,这是一个QT项目,所以最后b

我是“bitbake”方法的初学者,我想知道在构建包含数千个包的项目时,在以下情况下会发生什么:

  • 您对完整映像(所有包)进行bitbake,它将成功完成
  • 您对一个包进行了更改—一些源代码(我们称之为包“X”)
  • 再次烘焙完整图像
  • 在步骤3中,“X”是否重建?重建“X”是否需要增加PV和PR?依赖于“X”的“Y”包会发生什么情况?如果重建X,是否也重建“Y”

    我知道如果你修改了一个.bb文件,依赖的包不会被构建,因为时间戳被检查了。源代码更改的机制是否相同?(顺便说一句,这是一个QT项目,所以最后bitbake运行qmake->make进行编译)

    我使用的是bitbake版本1.13.2


    感谢您,Bitbake依赖于其他系统的编译,例如make。make能够检测包是否需要重新编译。这就是bitbake处理重新编译包的方式。

    让我试着回答这个问题。例如,您有包X、Y和Z。假设X依赖于Y,Y依赖于包Z

  • 如果您正在执行“bitbake默认图像名称”,并且正在以scratch方式构建(这意味着在此之前未构建默认图像名称中所需的任何包)。因此,bitbake现在可以创建一个依赖关系树(您可以通过“bitbake-g PACKAGE_NAME”查看依赖关系树)。将构建第一个包Z,然后是Y,最后是包X

  • 现在让我们假设您在X源代码中做了一些更改,并且在不增加X配方文件(X.bb)中的PR数的情况下执行“bitbake X”,bitbake不会再次编译更改。我的意思是说bitbake只检查包的版本和修订版(PV和PR)。在这里,我们有相同的包版本(PV)和相同的包版本(PR),所以bitbake不再编译X包

  • 要在修改后编译包X,需要将更改作为补丁应用。对于要进行更改的补丁(例如change.diff或change.patch),请在X.bb文件中添加条目(例如,请参阅其他配方文件)。之后,增加X.bb中的PR编号

    现在“bitbake X”将再次构建X包

  • 在这里,当我们增加了X的PR时,只生成了X包。在这里,bitbake将检查已构建且具有相同PR编号的从属包Y和Z,它将只使用已构建的Y和Z包

  • 如果我们重建了Y包(如果不想增加PR编号,可以清理包bitbake-c clean package_name),默认情况下,即使X包依赖于Y包,也不会再次生成

  • 希望这有帮助