yocto系列之针对从git仓库获取源代码编写recipe
回顾
针对借助yocto构建linux 镜像我们已经讲述了7部分, 简单回顾如下:
Yocto: 第1部分 - yocto系列之yocto是个什么东东
https://mp.csdn.net/mp_blog/creation/editor/136742286
Yocto: 第2部分 - yocto系列之配置ubuntu主机
https://mp.csdn.net/mp_blog/creation/editor/136745533
Yocto: 第3部分 - yocto系列之构建与运行第一个镜像
https://mp.csdn.net/mp_blog/creation/editor/136760112
Yocto: 第4部分 - yocto系列之针对rk3588平台构建一个基本镜像
https://mp.csdn.net/mp_blog/creation/editor/136760112
Yocto: 第5部分 -yocto系列之创建和添加新的layer
https://blog.csdn.net/hanpca/article/details/136781418?spm=1001.2014.3001.5502
Yocto: 第6部分 -yocto系列之理解与创建第一个定制recipe
https://blog.csdn.net/hanpca/article/details/136781609
Yocto: 第7部分 -yocto系列之针对tarball编写recipes
https://blog.csdn.net/hanpca/article/details/136819473?spm=1001.2014.3001.5502
在这篇文章中,我们将讨论如何编写从git存储库中获取源代码的recipe。随着git迅速成为各种规模的公司和个人的源代码管理(SCM)机制的选择,这也迅速成为编写bitbake食谱的首选方式。
在上一篇文章中,我们讨论了如何从位于远程和本地存储的tarball中获取源代码,本文中的recipe与上一篇文章描述的recipe没有本质的区别,只有细微的差异。
编写一个基于git的recipe
我们应用同第七部分同样的repo资源:
https://github.com/teggerhan/yocto-test-apps
在第七部分我们编写recipe是为了获取tarball, 本篇我们编写recipe是为了获取git repo中的源码。
当前我们的meta-test的目录结构如下:
所用repo的提交历史情况如下:
假设我们要检出repo中commit id 是c01dfd4对应的源码资源,对应的bitbake recipe(hw_git.bb)如下:
SRCREV 变量表明要应用的对应哪个sha1 哈希值提交的源代码
SRC_URI 指明仓库源码树的地址与协议
我们看到这个recipe文件与上一篇文章最大的不同是对PV的变量赋值。上次我们了解到PV是recipe的版本号。它看起来是x.y.z这样的搁置。
本篇中对于基于git的recipe,PV的生成方式如上所示。这里,SRCPV是另一个帮助我们定义PV的变量。正如在Yocto文档中提到的,SRCPV本身在meta/conf/bitbak .conf中定义,PV的非git部分,即0.1要根据源代码的发布版本进行更改。
S变量现被显式地分配了一个值${WORKDIR}/git。这样做是依据Yocto文档对git存储库的要求。
通常,从git中获取的recipe的版本号可能会频繁变化。根据bitbake的要求,recipe本身的名称应该是recipe-name_git.bb。例如,在本例中,我们可以将recipe命名为hw_git.bb。
测试这个recipe
现在试着用这个recipe构建一下目标镜像,如果没有问题, 构建会成功。