Yocto变量 之一
S
解压的recipe源代码所在的构建目录中的位置。默认情况下,此目录为${WORKDIR}/${BPN}-${PV},其中${BPN} 是基本recipe名称,${PV} 是recipe版本。
如果源 tarball 将代码存放到名为 ${BPN}-${PV} 以外的任何目录中,或者如果源代码是从Git 或 Subversion 之类的 SCM 获取的,则必须在recipe中设置 S,以便OpenEmbedded 构建系统知道在哪里可以找到解压后的源代码。
例如,假设有一个名为 poky 的源目录顶级文件夹,和一个位于 poky/build 的默认构建目录。在这种情况下,构建系统用来保存 db 的解压recipe的工作目录如下:
poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19
PN
根据上下文,此变量可以具有两个单独的功能:recipe名称或生成的包名称。
PN 指的是 OpenEmbedded 构建系统使用的文件上下文中的recipe名称,作为创建包的输入。该名称通常从recipe文件名中提取。例如,如果recipe名为 expat_2.0.1.bb,则 PN 的默认值为“expat”。
该变量指的是 OpenEmbedded 构建系统创建,或生成的文件上下文中的包名称。
如果适用,PN 变量还包含任何特殊的后缀或前缀。例如,使用 bash 为本地机器构建包,PN 是 bash-native。使用 bash 为目标和 Multilib 构建包,PN 将分别是 bash 和 lib64-bash。
PV
recipe的版本。版本通常从recipe文件名中提取。例如,如果recipe名为 expat_2.0.1.bb,则 PV 的默认值为“2.0.1”。 PV 通常不会在recipe中被覆盖,除非它从源代码存储库(例如 Git 或 Subversion)构建不稳定(即开发)版本。
PV 是 PKGV 变量的默认值。
PR
recipe的修订。此变量的默认值为“r0”。recipe的后续修订通常具有值“r1”、“r2”等。当 PV 增加时,PR 通常会重置为“r0”。
OpenEmbedded 构建系统不需要 PR 的帮助来知道何时重建recipe。构建系统使用任务输入校验和以及标记和共享状态缓存机制。
当包管理器在已构建的映像上动态安装包时,PR 变量主要变得重要。在这种情况下,PR 是 PKGR 的默认值,它可以帮助包管理器在许多包具有相同 PV(即 PKGV)的情况下,区分哪个包是最新的。具有多个具有相同 PV 的包的组件通常意味着这些包都安装相同的上游版本,但具有更高 (PR) 版本的包,包括打包修复。
对于不更改包内容或元数据的更改,不需要增加 PR。
由于手动管理 PR 可能很麻烦,且容易出错,因此存在自动化解决方案。
SRC_URI
源文件列表 - 本地或远程。此变量告诉 OpenEmbedded 构建系统,要为构建拉入哪些位以及如何拉入它们。例如,如果recipe或附加文件只需要从 Internet 获取 tarball,则recipe或附加文件使用单个 SRC_URI入口。另一方面,如果recipe或附加文件需要获取 tarball、应用两个补丁并包含自定义文件,则recipe或附加文件将包含变量的四个实例。
以下列表解释了可用的 URI 协议。 URI 协议高度依赖于特定的 BitBake Fetcher 子模块。根据 BitBake 使用的 fetcher,使用了各种 URL 参数。
-
file://
-
从本地机器获取文件,通常是元数据附带的文件(例如补丁文件)。该路径是相对于 FILESPATH 变量的。因此,构建系统按顺序,从以下目录中搜索,这些目录假定为recipe文件 (.bb) 或附加文件 (.bbappend) 所在目录的子目录:
-
${BPN} - 没有任何特殊后缀,或版本号的基本recipe名称。
${BP} - B P N − {BPN}- BPN−{PV}。基本recipe名称和版本,但没有任何特殊的包名称后缀。
files - 目录中的文件,称为files,也位于recipe或附加文件。 -
如果您希望构建系统,从附加文件中,获取通过 SRC_URI 语句指定的文件,则需要确保通过使用附加文件中的 FILESEXTRAPATHS 变量来扩展 FILESPATH 变量。
bzr://
-
从 Bazaar 版本控制存储库中获取文件。
git://
-
从 git 版本控制存储库中获取文件。
osc://
-
从 OSC(OpenSUSE 构建服务)版本控制库中获取文件。
repo://
-
从 repo (Git) 存储库中获取文件。
ccrc://
-
从 ClearCase 存储库中获取文件。
http://
-
使用 http 从 Internet 获取文件。
https://
-
使用 https 从 Internet 获取文件。
ftp://
-
使用 ftp 从 Internet 获取文件。
cvs://
-
从 CVS 版本控制存储库中获取文件。
hg://
-
从 Mercurial (hg) 版本控制存储库中获取文件。
p4://
-
从 Perforce (p4) 版本控制存储库中获取文件。
ssh://
-
从安全外壳中获取文件。
svn://
-
从 Subversion (svn) 版本控制库中获取文件。
npm://
-
从注册表中获取 JavaScript 模块。