5.Class
目录
5.8 binconfig-disabled.bbclass
5.12 buildstats-summary.bbclass
5.18 copyleft_compliance.bbclass
5.39 gobject-introspection.bbclass
5.44 gtk-immodules-cache.bbclass
5.56 kernel-devicetree.bbclass
5.59 kernel-module-split.bbclass
5.67 linux-kernel-base.bbclass
5.72 migrate_localcount.bbclass
5.104 python3targetconfig.bbclass
5.130 toolchain-scripts.bbclass
5.134 update-alternatives.bbclass
类文件用于抽象通用功能并在多个配方 ( .bb
) 文件之间共享。要使用类文件,只需确保配方继承了类。在大多数情况下,当一个配方继承一个类时,它就足以启用它的功能。但是,在某些情况下,您可能需要在配方中设置变量或覆盖某些默认行为。
通常在配方中找到的任何元数据也可以放在类文件中。类文件由扩展名标识, .bbclass
通常放置在源目录中找到的classes/
目录下的meta*/
目录中。类文件也可以通过BUILDDIR(例如)以与目录中的文件相同的方式 指向 。使用与 搜索文件相同的方法在BBPATH中搜索类文件。build/
.conf
conf
.conf
本章只讨论最有用和最重要的类。其他类确实存在于meta/classes
源目录中的目录中。您可以.bbclass
直接参考这些文件以获取更多信息。
5.1 allarch.bbclass
该allarch
班是由不产生建筑特有的输出食谱继承。该类禁用了生成可执行二进制文件的配方通常需要的功能(例如构建交叉编译器和 C 库作为先决条件,并在打包期间拆分调试符号)。
注意
与某些发行版配方(例如 Debian)不同,OpenEmbedded 配方通过使用RDEPENDS和 TUNE_PKGARCH变量生成依赖于调整的软件包, 永远不应为使用allarch
. 即使配方不产生特定于体系结构的输出,情况也是如此。
为所有体系结构配置此类配方会导致 do_package_write_*
任务对具有不同调整的机器具有不同的签名。此外,即使配方从未改变,每次构建不同机器的映像时也会发生不必要的重建。
默认情况下,所有配方都继承基类和 包类,它们启用生成可执行输出的配方所需的功能。例如,如果您的配方只生成包含配置文件、媒体文件或脚本(例如 Python 和 Perl)的包,那么它应该继承allarch
该类。
5.2 archiver.bbclass
的archiver
类支持释放的源代码和与该二进制代码的其它材料。
有关源存档器的更多详细信息,请参阅Yocto 项目开发任务手册中的“在产品生命周期中维护开源许可证合规性”部分。您还可以查看ARCHIVER_MODE变量以获取有关有助于控制存档创建的变量标志 (varflags) 的信息。
5.3 autotools*.bbclass
这些autotools*
类支持 Autotooled 包。
的autoconf
,automake
和libtool
包带来标准化。此类定义了一组适用于所有 Autotooled 包的任务(例如configure
, compile
等等)。通常定义几个标准变量就足够了,然后简单地定义. 这些类还可以与模拟 Autotools 的软件一起使用。有关更多信息,请参阅Yocto 项目开发任务手册中的“自动工具包”部分。inherit autotools
默认情况下,这些autotools*
类使用树外构建(即使用 autotools.bbclass
构建)。B != S
如果由配方构建的软件不支持使用树外构建,则您应该让配方继承 autotools-brokensep
该类。的autotools-brokensep
类的行为相同,autotools
类但构建乙 ==小号。当 out-of-tree 构建支持不存在或被破坏时,此方法很有用。
注意
建议尽可能修复和使用树外支持。
了解autotools*
类定义的任务如何工作以及它们在幕后做什么是很有用 的。
-
do_configure - 重新生成配置脚本(使用
autoreconf
),然后使用交叉编译期间使用的一组标准参数启动它。您可以通过附加参数configure
通过EXTRA_OECONF 或PACKAGECONFIG_CONFARGS 变量。 -
do_compile -
make
使用指定编译器和链接器的参数运行。您可以通过EXTRA_OEMAKE变量传递其他参数。 -
do_install - 运行并将D作为.
make install
${
}
DESTDIR
5.4 base.bbclass
该base
班是在每一个特殊.bb
文件隐含继承的类。此类包含标准基本任务的定义,例如获取、解包、配置(默认为空)、编译(运行任何Makefile
存在的)、安装(默认为空)和打包(默认为空)。这些类经常被其他类覆盖或扩展,例如 autotools类或 包类。
该类还包含一些常用函数,例如 oe_runmake
,make
使用EXTRA_OEMAKE变量中指定的参数 以及直接传递给 的参数运行oe_runmake
。
5.5 bash-completion.bbclass
设置适用于构建包含 bash 完成数据的软件的配方的打包和依赖项。
5.6 bin_package.bbclass
的bin_package
类是提取二进制包(例如RPM)的内容的食谱一个辅助类和安装这些内容,而不是从源代码构建二进制。提取二进制包并创建配置输出包格式的新包。专有二进制文件的提取和安装是此类的一个很好的示例。
5.7 binconfig.bbclass
该binconfig
班有助于在shell脚本正确的路径。
在pkg-config
流行之前,库提供 shell 脚本来提供有关库的信息并包含构建软件所需的路径(通常命名为LIBNAME-config
)。此类帮助使用此类脚本的任何配方。
在暂存期间,OpenEmbedded 构建系统会将此类脚本安装到sysroots/
目录中。继承此类会导致这些脚本中的所有路径都更改为指向该sysroots/
目录,以便所有使用该脚本的构建都使用正确的目录进行交叉编译布局。有关详细信息,请参阅 BINCONFIG_GLOB变量。
5.8 binconfig-disabled.bbclass
binconfig 类的替代版本,它通过使二进制配置脚本返回错误以支持pkg-config
用于查询信息来禁用二进制配置脚本。应该使用继承类的配方中的BINCONFIG变量指定要禁用的脚本 。
5.9 blacklist.bbclass
该blacklist
级防止OpenEmbedded构建系统从构建具体的食谱(黑名单它们)。要使用此类,请全局继承该类并为您希望列入黑名单的每个食谱设置PNBLACKLIST。将PN 值指定为变量标志 (varflag) 并提供一个原因,如果请求将包构建为该值,则会报告该原因。例如,如果您想将名为“exoticware”的配方列入黑名单,请将以下内容添加到您的local.conf
或分发配置中:
INHERIT += "blacklist"
PNBLACKLIST[exoticware] = "Not supported by our organization."
5.10 buildhistory.bbclass
该buildhistory
班记录生成输出元数据,它可以用来检测可能的回归,以及用于生成输出的分析的历史。有关使用构建历史的更多信息,请参阅Yocto 项目开发任务手册中的“维护构建输出质量”部分。
5.11 buildstats.bbclass
在buildstats
关于构建过程中执行的每个任务类记录性能统计数据(例如经过的时间,CPU使用率,和I / O使用)。
当你使用这个类时,输出进入 BUILDSTATS_BASE目录,默认为${TMPDIR}/buildstats/
. 您可以使用 分析经过的时间 scripts/pybootchartgui/pybootchartgui.py
,它会生成整个构建过程的级联图表,可用于突出显示瓶颈。
默认情况下,通过文件中的USER_CLASSES变量 启用收集构建统计信息 local.conf
。因此,您无需执行任何操作即可启用该类。但是,如果您想禁用该类,只需从USER_CLASSES列表中删除“buildstats” 。
5.12 buildstats-summary.bbclass
当全局继承时,在构建结束时打印统计信息,重新使用 sstate。为了运行,这个类需要 启用buildstats类。
5.13 ccache.bbclass
的ccache
类使C / C ++编译器缓存为构建。此类用于在构建期间提供较小的性能提升。但是,使用该类可能会导致意想不到的副作用。因此,建议您不要使用此类。有关C/C++ 编译器缓存的信息,请参阅 https://ccache.samba.org/。
5.14 chrpath.bbclass
该chrpath
班是围绕“chrpath”工具,该工具在生成过程中使用的包装nativesdk
,cross
和 cross-canadian
配方改变RPATH
,以使它们重新定位的二进制文件中的记录。
5.15 cmake.bbclass
本cmake
类允许用于需要使用构建软件食谱的CMake构建系统。您可以使用EXTRA_OECMAKE变量指定要使用cmake
命令行传递的其他配置选项。
如果您要安装正在构建的应用程序提供的自定义 CMake 工具链文件,您应该将它们安装到首选的 CMake 模块目录:do_install${D}${datadir}/cmake/
期间的模块 。
5.16 cml1.bbclass
本cml1
类提供了Linux内核的风格构建配置系统的基本支持。
5.17 compress_doc.bbclass
为手册页和信息页启用压缩。此类旨在全局继承。默认压缩机制是 gz (gzip),但您可以通过设置DOC_COMPRESS变量来选择替代机制 。
5.18 copyleft_compliance.bbclass
该copyleft_compliance
许可证合规性的目的,蜜饯类的源代码。此类是该类的替代品,archiver
并且仍然被一些用户使用,即使它已被弃用而支持归档程序类。
5.19 copyleft_filter.bbclass
使用由A类归档和 copyleft_compliance用于过滤许可证类。所述copyleft_filter
类是一个内部类,并且不旨在被直接使用。
5.20 core-image.bbclass
的core-image
类提供公共定义 core-image-*
图像的食谱,诸如用于附加支撑 IMAGE_FEATURES。
5.21 cpan*.bbclass
这些cpan*
类支持 Perl 模块。
Perl 模块的方法很简单。这些配方通常只需要指向源的存档,然后继承正确的类文件。根据模块作者使用的方法,构建分为两种方法。
-
使用
Makefile.PL
基于旧的构建系统的模块需要cpan.bbclass
在他们的配方中。 -
使用
Build.PL
基于构建系统的模块需要cpan_build.bbclass
在它们的配方中使用。
两种构建方法都继承了cpan-base
基本 Perl 支持的类。
5.22 cross.bbclass
本cross
类为构建交叉编译工具的食谱支持。
5.23 cross-canadian.bbclass
本cross-canadian
类为构建软件开发工具包加拿大交叉编译工具的食谱支持。有关这些交叉编译工具的更多讨论,请参阅Yocto 项目概述和概念手册中的“交叉开发工具链生成”部分。
5.24 crosssdk.bbclass
本crosssdk
类为建立用于建筑物的SDK的交叉编译工具的食谱支持。有关这些交叉编译工具的更多讨论,请参阅Yocto 项目概述和概念手册中的“交叉开发工具链生成”部分。
5.25 cve-check.bbclass
本cve-check
类查找已知的CVE(通用漏洞披露)而构建的图像。此类旨在从配置文件全局继承:
INHERIT += "cve-check"
您还可以通过传递给 BitBake 来查找特定包中的漏洞 。您可以在开发任务手册的“检查漏洞”部分找到详细信息。-c cve_check
5.26 debian.bbclass
将debian
类重命名输出包,让他们跟随Debian的命名策略(即glibc
变libc6
和 glibc-devel
变libc6-dev
)。重命名包括库的名称和版本作为包名的一部分。
如果配方为多个库(.so
类型的共享目标文件)创建包,请 在配方中使用LEAD_SONAME变量来指定要应用命名方案的库。
5.27 deploy.bbclass
本deploy
类处理文件部署到 DEPLOY_DIR_IMAGE目录。这个类的主要功能是允许通过共享状态加速部署步骤。继承这个类的recipe应该定义自己的 do_deploy函数,将要部署的文件复制到DEPLOYDIR,并用于addtask
在合适的地方添加任务,通常在 do_compile或 do_install之后。然后该类负责将文件从DEPLOYDIR 暂存到DEPLOY_DIR_IMAGE。
5.28 devshell.bbclass
本devshell
类增加了do_devshell
任务。分发策略决定是否包含此类。请参阅“使用开发壳牌在Yocto计划发展任务”部分手册有关使用的详细信息devshell
。
5.29 devupstream.bbclass
所述devupstream
类用途 BBCLASSEXTEND添加的配方的一个变体,从替代URI(例如GIT中),而不是压缩包取。下面是一个例子:
BBCLASSEXTEND = "devupstream:target"
SRC_URI:class-devupstream = "git://git.example.com/example"
SRCREV:class-devupstream = "abcd1234"
将上述语句添加到您的配方中会创建一个将DEFAULT_PREFERENCE设置为“-1”的变体 。因此,您需要选择配方的变体来使用它。任何特定于开发的调整都可以通过使用class-devupstream
覆盖来完成 。下面是一个例子:
DEPENDS:append:class-devupstream = " gperf-native"
do_configure:prepend:class-devupstream() {
touch ${S}/README
}
该类目前仅支持创建目标配方的开发变体,不支持native
或nativesdk
变体。
该BBCLASSEXTEND语法(即devupstream:target
)提供支持native
和nativesdk
变种。因此,可以在未来版本中添加此功能。
由于 BitBake 的自动获取依赖项(例如subversion-native
),对其他版本控制系统(例如 Subversion)的支持受到限制 。
5.30 distutils3*.bbclass
这些distutils3*
类支持 Python 3.x 版扩展的简单方法。这些配方通常只需要指向源的存档,然后继承正确的类。根据模块作者使用的方法,构建分为三种方法。
-
使用基于 Autotools 的构建系统的扩展
distutils
在其配方中需要 Autotools 和基于类。 -
使用
distutils
基于构建系统的扩展distutils
在其配方中需要 该类。 -
使用基于构建系统的扩展在其配方中
setuptools3
需要setuptools3类。
5.31 externalsrc.bbclass
该externalsrc
级支持构建从源代码软件,外部OpenEmbedded构建系统。从外部源代码树构建软件意味着不使用构建系统的正常获取、解包和补丁过程。
默认情况下,OpenEmbedded 构建系统分别使用S 和B变量来定位解包的配方源代码并构建它。当您的配方继承 externalsrc
该类时,您将使用 EXTERNLSRC和 EXTERNLSRC_BUILD变量来最终定义S和B。
默认情况下,此类期望源代码支持使用B变量指向 OpenEmbedded 构建系统放置从配方构建的生成对象的目录的配方构建。默认情况下,B目录设置为以下内容,与源目录 ( S )分开:
${WORKDIR}/${BPN}/{PV}/
有关更多信息,请参阅这些变量: WORKDIR、BPN和 PV,
有关更多信息externalsrc
类,请在评论 meta/classes/externalsrc.bbclass
中源目录。有关如何使用 externalsrc
该类的信息,请参阅Yocto 项目开发任务手册中的“从外部源构建软件”部分。
5.32 extrausers.bbclass
在extrausers
类允许附加的用户和组配置于在图像级被应用。全局或从图像配方继承此类允许使用EXTRA_USERS_PARAMS变量执行其他用户和组操作 。
注意
使用 extrausers 类添加的用户和组操作与图像配方之外的特定配方无关。因此,可以在整个图像上执行操作。使用 useradd 类将用户和组配置添加到特定配方。
这是在图像配方中使用此类的示例:
inherit extrausers
EXTRA_USERS_PARAMS = "\
useradd -p '' tester; \
groupadd developers; \
userdel nobody; \
groupdel -g video; \
groupmod -g 1020 developers; \
usermod -s /bin/sh tester; \
"
这是一个添加两个名为“tester-jim”和“tester-sue”的用户并分配密码的示例:
inherit extrausers
EXTRA_USERS_PARAMS = "\
useradd -P tester01 tester-jim; \
useradd -P tester01 tester-sue; \
"
最后,这是一个将 root 密码设置为“1876*18”的示例:
inherit extrausers
EXTRA_USERS_PARAMS = "\
usermod -P 1876*18 root; \
"
5.33 features_check.bbclass
本features_check
类允许单个配方检查需要和冲突的 DISTRO_FEATURES,MACHINE_FEATURES或COMBINED_FEATURES。
此类为以下变量提供支持: