我是“bitbake”方式的初学者,我想知道在以下几种情况下,当建立一个包含数千个包的项目时会发生什么:
在步骤3中重建了“X”?是否有必要增加PV和PR以重建“X”? “Y”包取决于“X”会发生什么?如果重建X也是“Y”重建?
我知道如果修改.bb文件,则不会构建依赖包,因为会检查时间戳。源代码更改的机制是否相同? (这是一个QT项目btw,所以最后bitbake运行qmake-> make来进行编译)
我正在使用bitbake版本1.13.2。
由于
答案 0 :(得分:4)
让我试着回答这个问题。例如,你有包X,Y和Z.假设X取决于Y,Y取决于包Z。
如果您正在执行“bitbake default-image-name”并且您正在构建为scratch(这意味着之前没有构建default-image-name中所需的包)。所以bitbake现在创建一个依赖树(你可以通过“bitbake -g PACKAGE_NAME”看到依赖树)。第一个包Z将构建,然后是Y,然后最终包X.
现在假设您已对X源代码进行了一些更改,并且在不增加X配方文件(x.bb)中的PR编号的情况下执行“bitbake X”,bitbake不编译更改再次。我的意思是说bitbake只是检查包版本和修订版(PV和PR)。这里我们有相同的Package版本(PV)和相同的Package Revision(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包(你可以清理包bitbake -c clean package_name,如果不想增加PR号),默认情况下X包不会再生成,即使它依赖于收率
希望得到这个帮助。
答案 1 :(得分:0)
Bitbake依赖于其他系统进行编译,例如make。 make有能力检测包是否需要重新编译。这就是bitbake处理重新编译包的方式。