5.Class

5.Class

目录

5.Class

5.1 allarch.bbclass

5.2 archiver.bbclass

5.3 autotools*.bbclass

5.4 base.bbclass

5.5 bash-completion.bbclass

5.6 bin_package.bbclass

5.7 binconfig.bbclass

5.8 binconfig-disabled.bbclass

5.9 blacklist.bbclass

5.10 buildhistory.bbclass

5.11 buildstats.bbclass

5.12 buildstats-summary.bbclass

5.13 ccache.bbclass

5.14 chrpath.bbclass

5.15 cmake.bbclass

5.16 cml1.bbclass

5.17 compress_doc.bbclass

5.18 copyleft_compliance.bbclass

5.19 copyleft_filter.bbclass

5.20 core-image.bbclass

5.21 cpan*.bbclass

5.22 cross.bbclass

5.23 cross-canadian.bbclass

5.24 crosssdk.bbclass

5.25 cve-check.bbclass

5.26 debian.bbclass

5.27 deploy.bbclass

5.28 devshell.bbclass

5.29 devupstream.bbclass

5.30 distutils3*.bbclass

5.31 externalsrc.bbclass

5.32 extrausers.bbclass

5.33 features_check.bbclass

5.34 fontcache.bbclass

5.35 fs-uuid.bbclass

5.36 gconf.bbclass

5.37 gettext.bbclass

5.38 gnomebase.bbclass

5.39 gobject-introspection.bbclass

5.40 grub-efi.bbclass

5.41 gsettings.bbclass

5.42 gtk-doc.bbclass

5.43 gtk-icon-cache.bbclass

5.44 gtk-immodules-cache.bbclass

5.45 gzipnative.bbclass

5.46 icecc.bbclass

5.47 image.bbclass

5.48 image-buildinfo.bbclass

5.49 image_types.bbclass

5.50 image-live.bbclass

5.51 image-prelink.bbclass

5.52 insane.bbclass

5.53 insserv.bbclass

5.54 kernel.bbclass

5.55 kernel-arch.bbclass

5.56 kernel-devicetree.bbclass

5.57 kernel-fitimage.bbclass

5.58 kernel-grub.bbclass

5.59 kernel-module-split.bbclass

5.60 kernel-uboot.bbclass

5.61 kernel-uimage.bbclass

5.62 kernel-yocto.bbclass

5.63 kernelsrc.bbclass

5.64 lib_package.bbclass

5.65 libc*.bbclass

5.66 license.bbclass

5.67 linux-kernel-base.bbclass

5.68 linuxloader.bbclass

5.69 logging.bbclass

5.70 meta.bbclass

5.71 metadata_scm.bbclass

5.72 migrate_localcount.bbclass

5.73 mime.bbclass

5.74 mirrors.bbclass

5.75 module.bbclass

5.76 module-base.bbclass

5.77 multilib*.bbclass

5.78 native.bbclass

5.79 nativesdk.bbclass

5.80 nopackages.bbclass

5.81 npm.bbclass

5.82 oelint.bbclass

5.83 own-mirrors.bbclass

5.84 package.bbclass

5.85 package_deb.bbclass

5.86 package_ipk.bbclass

5.87 package_rpm.bbclass

5.88 package_tar.bbclass

5.89 packagedata.bbclass

5.90 packagegroup.bbclass

5.91 patch.bbclass

5.92 perlnative.bbclass

5.93 pixbufcache.bbclass

5.94 pkgconfig.bbclass

5.95 populate_sdk.bbclass

5.96 populate_sdk_*.bbclass

5.97 prexport.bbclass

5.98 primport.bbclass

5.99 prserv.bbclass

5.100 ptest.bbclass

5.101 ptest-gnome.bbclass

5.102 python3-dir.bbclass

5.103 python3native.bbclass

5.104 python3targetconfig.bbclass

5.105 qemu.bbclass

5.106 recipe_sanity.bbclass

5.107 relocatable.bbclass

5.108 remove-libtool.bbclass

5.109 report-error.bbclass

5.110 rm_work.bbclass

5.111 rootfs*.bbclass

5.112 sanity.bbclass

5.113 scons.bbclass

5.114 sdl.bbclass

5.115 setuptools3.bbclass

5.116 sign_rpm.bbclass

5.117 sip.bbclass

5.118 siteconfig.bbclass

5.119 siteinfo.bbclass

5.120 sstate.bbclass

5.121 staging.bbclass

5.122 syslinux.bbclass

5.123 systemd.bbclass

5.124 systemd-boot.bbclass

5.125 terminal.bbclass

5.126 testimage*.bbclass

5.127 testsdk.bbclass

5.128 texinfo.bbclass

5.129 toaster.bbclass

5.130 toolchain-scripts.bbclass

5.131 typecheck.bbclass

5.132 uboot-config.bbclass

5.133 uninative.bbclass

5.134 update-alternatives.bbclass

5.135 update-rc.d.bbclass

5.136 useradd*.bbclass

5.137 utility-tasks.bbclass

5.138 utils.bbclass

5.139 vala.bbclass

5.140 waf.bbclass


类文件用于抽象通用功能并在多个配方 ( .bb) 文件之间共享。要使用类文件,只需确保配方继承了类。在大多数情况下,当一个配方继承一个类时,它就足以启用它的功能。但是,在某些情况下,您可能需要在配方中设置变量或覆盖某些默认行为。

通常在配方中找到的任何元数据也可以放在类文件中。类文件由扩展名标识, .bbclass通常放置在目录中找到的classes/目录下的meta*/目录中。类文件也可以通过BUILDDIR(例如)以与目录中的文件相同的方式 指向 。使用与 搜索文件相同的方法在BBPATH中搜索类文件。build/.confconf.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 包。

autoconfautomakelibtool包带来标准化。此类定义了一组适用于所有 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_runmakemake使用EXTRA_OEMAKE变量中指定的参数 以及直接传递给 的参数运行oe_runmake

5.5 bash-completion.bbclass

设置适用于构建包含 bash 完成数据的软件的配方的打包和依赖项。

5.6 bin_package.bbclass

bin_package类是提取二进制包(例如RPM)的内容的食谱一个辅助类和安装这些内容,而不是从源代码构建二进制。提取二进制包并创建配置输出包格式的新包。专有二进制文件的提取和安装是此类的一个很好的示例。

注意

对于不包含子目录的 RPM 和其他包,您应该指定适当的 fetcher 参数以指向子目录。例如,如果 BitBake 使用 Git fetcher ( git://),则“subpath”参数会将结帐限制为树的特定子路径。这是一个示例,${BP}用于将文件提取到S的默认值预期的子目录中 :

SRC_URI = "git://example.com/downloads/somepackage.rpm;subpath=${BP}"

有关受支持的 BitBake Fetchers 的更多信息,请参阅BitBake 用户手册中的“ Fetchers ”部分。

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”工具,该工具在生成过程中使用的包装nativesdkcross和 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的命名策略(即glibclibc6和 glibc-devellibc6-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
}

该类目前仅支持创建目标配方的开发变体,不支持nativenativesdk变体。

BBCLASSEXTEND语法(即devupstream:target)提供支持nativenativesdk变种。因此,可以在未来版本中添加此功能。

由于 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变量来最终定义SB

默认情况下,此类期望源代码支持使用B变量指向 OpenEmbedded 构建系统放置从配方构建的生成对象的目录的配方构建。默认情况下,B目录设置为以下内容,与源目录 ( S )分开:

${WORKDIR}/${BPN}/{PV}/

有关更多信息,请参阅这些变量: WORKDIRBPN和 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_FEATURESMACHINE_FEATURESCOMBINED_FEATURES

此类为以下变量提供支持:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值