加载中…
个人资料
峯挚
峯挚
  • 博客等级:
  • 博客积分:0
  • 博客访问:13,236
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

菜谱元数据说明

(2020-01-05 16:58:03)
标签:

it

分类: 笔记
1,描述性元数据
描述性元数据提供关于菜谱和它构建的软件包的信息。
SUMMARY(摘要):一行(最多80个字符长度),包的简短描述。
DESCRIPTION(描述):扩展的(可能多行长度),包和其所提供的东西的细节描述。
AUTHOR(作者):以AUTHOR = “”形式的软件包(不是菜谱)的作者的名字和邮箱地址。可以是多个作者的列表。
HOMEPAGE(主页):以http://开头的URL,软件包被托管在这里。
BUGTRACKER(缺陷追踪):以http://开头的URL,指向项目的缺陷追踪系统。
2,包管理器元数据
在这一部分的元数据为包管理系统提供主要用于包数据库维护的额外信息。然而,不是所有的包管理系统都支持这些设置。
SETCTION:这个包所归属的类别。包管理工具使用这个类别来组织包。虽然类别违背严格标准化并且各种主流linux发行版定义它们自己的列表,但是通常被使用的类别已经演化出来了。常用部分或者类别的例子是app、audio、base、devel和libs。
PRIORITY(优先级):用优先级告诉包管理工具软件包是否被系统运行所需要,以及软件包是否可选的或者最终是与其他包冲突的。优先级仅仅被Debian包管理器dpkg和开放包管理器opkg所利用。优先级是:
standard:对任何linux发行版来说都是标准的包,包括一个相当小的但是也不太限制与控制台模式的系统。
required:对系统的正常功能来说所必要的包。
optional:对可运行的系统来说不是必要的包,而是为了合理可用的系统的包。
extra:可能与来自更高优先级的其他包冲突或者有特殊需求的包。
3,许可元数据
这部分数据允许构建系统自动追踪开源许可需求。这个信息对所有包都是强制性的。
LICENSE:用于这个软件包的许可(或者多个许可)的名字。
LIC_FILES_CHECKSUM:这个变量允许追踪对许可文件本身的变更。
4,继承指令和包含
这部分包含用于菜谱从类继承功能性的继承指令inherit。它也包括include和require语句,以在语句的位置上直接插入其他文件。在菜谱中的位置对于继承没有关系,但是对于包含文件,他可能是重要的。被包含的文件可以设置你可能希望在菜谱中覆盖的变量。
5,构建元数据
提供对于构建软件包所需的设置,如URI、声明依赖性和定义提供(provisions)。
PROVIDES(提供):通常用于抽象配置的一个或者多个额外报名的空格分隔列表。
DEPENDS(依赖):在这个包可以被构建前必须被构建的包名的空格分隔列表。
PN:包名。这个变量的值是由BitBake从菜谱文件的基名称获取的。对大部分包来说,这是正确且足够的。一些包可能需要调整这个值。例如,交叉工具链应用————gcc-cross,在它们的名字上被追加了目标架构。
PV:包版本。它是由BitBake从菜谱文件的基名称获取的。
PR:包修订。默认修订是r0。在过去,BitBake要求你在每次菜谱改变了的时候增加修订以出发重新构建。然而现在,新的签名处理器计算包含函数的菜谱元数据的签名。现在构建系统完全依赖于签名来重新构建。
为了正确的包命名,增加PR的值可能仍然是需要的,因为其事的包管理器尅有正确地为包升级维护数据库。以前,维护升级通过PRINC变量来完成的。然而这个方法已经证明是容易出错的,所以PRINC已经被弃用并且被PR Service所替代。PR Service是基于签名来计算PR的修订服务器。默认情况下PR Service是被禁用的。
SRC_URI:用于从服务器下载源代码、补丁和其他文件的URI空格分隔列表。
SRCDATE:源代码日期。这个变量仅仅当源是从软件配置管理中获取而来时才适用。
S:在构建环境中的、构建系统把未解压的源代码放在其中的目录位置。默认位置依赖菜谱名和版本:${WORKDIR}/${PN}-${PV}。默认位置对于几乎所有从文件包中构建的包来说都是合适的。对于直接从软件配置管理中构建的包来说,你需要显示地设置这个变量,例如用于GIT仓库的${WORKDIR}/git。
:在构建环境中的、构建系统把构建中创建的对象放入其中的目录位置。默认与S相同:${WORKDIR}/${PN}-${PV}。很多软件包是在树中或者在位置中被构建的,把对象放在源树中。用GNU AutoTools来构建菜谱、linux内核和交叉编译工具链应用分离源和构建目录。
FILESEXTRAPATHS:扩展用于FILESPATH定义的额外本地文件的构建系统的搜索路径。
PACKAGECONFIG:这个变量允许在构建时启用和禁用软件包的特性。
EXTRA_OECONF:额外的configure脚本选项。
EXTRA_OEMAKE:用于GNU Make的额外选项。
EXTRA_OECMAKE:用于CMake的额外选项。
LDFLAGS:传到链接器的选项。默认设置依赖于构建系统在构建什么:当为目标构建时,它是TARGET_LDFLAGS;当为构建主机构建时,它是BUILD_LDFLAGS;当为主机构建SDK时,它是BUILDSDK_LDFLAGS。通常不用完全覆盖这个变量,而是向其增加选项。
PACKAGE_ARCH:定义软件包的架构。
6,打包元数据
菜谱的这个元数据部分定义构建输出如何使用包管理器被打包进不同的包中。打包发生在软件已经被构建并且被安装进包构建目录本地的根文件系统结构之后。
PACKAGES:这个变量时在打包过程中被创建的包的空格分隔列表。
FILES:FILES变量定义被放进特定包中的目录和文件的列表。
PACKAGE_BEFORE_PN:这个变量让你在最终的包名被创建前简单地增加包。
PACKAGE_DEBUG_SPLIT_STYLE:这个变量决定当${PN}-dbg包被创建时如何拆分二进制和调试对象。
PACKAGESPLITFUNCS:这个变量定义执行包拆分的函数的列表。由package.bbclass定义的默认是PACKAGESPLITFUNCS ?= "package_do_split_loacles_populate_packages"。菜谱可以前新增到这个变量以在改默认被运行前运行它们自己的包分离函数。
7,任务覆盖、前新增和追加
在这一部分,菜谱覆盖任务、向任务前新增(prepend)和追加以重新定义、变更或者扩展默认行为。
8,变体/类扩展
这个部分简单地包含BBCLASSEXTEND变量以创建例如包的原生或者软件开发工具包构建的变体。
9,运行时元数据
这个元数据部分定义运行时依赖性。
RDEPENDS:该包在运行时所以来的,为了该包正确运转而必须被安装的包列表。变量适用于正在被构建的包,因此对特定包,你需要条件性地定义它。例如,如果开发包依赖Perl以正确运行,那么你需要指定RDEPENDS_${PN}-dev += "Perl",它告诉构建系统在包管理器的程序清单中创建这个包依赖性。
RRECOMMENDS:与RDEPENDS类似但是指示弱依赖性,因为这些包对于正在被构建的包不是必不可少的。然而,它们确实增加可使用性。如果这些包是可用的,那么包管理器安装它们;但如果这些包是不可用的,那么包管理器也不失败。
RSUGGESTS:与RRCOMMENDS类似,从即使这些包是可用的但是包管理器也不安装它们的这个意义上来说,甚至更加弱。它们仅仅提供这样的信息————安装这些包可能是有好处的。
RPROVIDES:用于运行时配置的包名别名列表。包的自有名字总是隐式地作为那个列表的一部分。正如对于控制包创建的所有运行时元数据一样,需要使用条件赋值:RPROVIDES_${PN} = "alias1 alias2"。
RCONFLICTS:冲突包的名字列表。如果在安装前不是所有冲突包都被移除了,那么包管理器不安装这个包。正如对于控制包创建的所有运行时元数据一样,你需要使用条件赋值:RCONFLICTS_${PN} = "conflicting-package-name"。
RREPLACES:这个包替代的包的名字列表。包管理器使用这个变量来决定这个包替换其他哪些包。如果包可以共存,那么包管理器安装这个包,即使在这个列表的其他包是被安装的。如果包不能共存,那么该包必须也设置RCONFLICTS变量来包含那些包。正如对于控制包创建的所有运行元数据一样,你需要使用条件赋值:RCONFLICTS_${PN} = "conflicting-package-name"。构建系统支持版本化的依赖性:
RDEPENDS_${PN} = " ( )"
这里的operator(操作符)是=、<、>、<=或者>=之一。例如
RDEPENDS_${PN} = "gettext (> 0.16)"

0

阅读 收藏 禁止转载 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有