yocto相关class总结

https://my.oschina.net/linuxhunter/blog/737891

  1. allarch.bbclass
该class用在架构无关的镜像上。通常的recipes只要继承base和package类就可以完成基本的工作,继承allarch类的recipe主要是只包含配置文件、媒体文件以及脚本文件等。

2.    archiver.bbclass

该class支持以源代码的方式发布。

3.    autotools*.bbclass

该class簇支持使用autotool工具进行编译的软件包。使用autotool类编译包括了对autoconf/automake/libtool的标准使用。通常情况下,autotools*簇针对out-of-tree builds,即:B!=S。若想使用B==S的则需要使用autotools-brokensep类。

do_configure:通过autoconf工具产生configure脚本,通常情况下使用变量EXTRA_OECONF来传递额外的参数;

do_compile:通过执行make命令来实现编译和链接,通常情况下使用变量EXTRA_OEMAKE来传递额外的参数;

do_install:通过执行make install命令将编译好的文件安装到${D}指定的目录中,通常设置DESTDIR=${D};

4.    base.bbclass

该class是yocto最基本的类,所有的recipes都直接或间接的继承该类。在base类中定义了标准的yocto执行流程,当然继承了base类的recipes可以重载或重构base类中定义的方法。

5.    bash-completion.bbclass

该class在recipes的基础上多了一个bash-completion的包以及定义了bash-completion包中的内容;

6.    bin_package.bbclass

该class从二进制包中直接读取二进制文件后将其打包输出而不需要经过源代码编译过程;

7.    binconfig.bbclass

该class用于正确设置package和sysroot的目录结构。目前大都采用pkg-config方式了;

8.    binconfig-disabled.bbclass

该class不采用binconfig方式;

9.    blacklist.bbclass

该class用于设置recipes黑名单,也就是说编译系统不去编译某些recipes。通常的用法是在local.conf中添加如下内容:

INHERIT += “blacklist”

PNBLACKLIST[recipes_name] = “No Support by our organization”

在local.conf中添加继承blacklist的声明,之后在PNBLACKLIST变量中添加以recipes_name为varflags的声明;

10.    bluetooth.bbclass

该class为recipes或packages提供蓝牙支持;

11.    bugzilla.bbclass

该class自动的将编译的错误上报到bugzilla中;

12.    buildhistory.bbclass

该class记录编译输出的metadata历史数据;

13.    buildstats.bbclass

该class纪录每一个任务执行的性能统计,统计的结果输出到${TMPDIR}/buildstats目录中;

buildstats类默认在local.conf配置文件中的USER_CLASSES变量中指定;

14.    ccache.bbclass

该class用来加速C/C++的编译速度,但是效果不明显,因此不推荐使用该类;

15.    chrpath.bbclass

该class是对chrpath命令的包装,该类主要用在nativesdk,cross,cross-canadian这些recipes中用来修改RPATH变量;

16.    clutter.bbclass

该class用major和minor版本以及其它的items来获取源代码;

17.    cmake.bbclass

该class用在使用cmake进行编译的recipes中。通常使用EXTRA_OECMAKE变量向cmake命令行添加配置选项;

18.    cml1.bbclass

该class提供类似linux内核的编译配置系统;

19.    compress_doc.bbclass

该class用于压缩man pages和info pages,默认的压缩格式是gzip。可以通过DOC_COMPRESS变量来指定其它压缩格式;

20.    core-image.bbclass

该class针对core-image-*镜像recipes的通用变量定义,比如:IMAGE_FEATURES等;

21.    cpan*.bbclass

该class簇主要是针对Perl模块的编译。对于使用Makefile.PL的则需要使用cpan.bbclass,对于使用Build.PL的则需要使用cpan_build.bbclass。这两个bbclass都是继承于cpan-base类;

22.    cross.bbclass

该class用于编译交叉编译链;

23.    cross-canadian.bbclass

该class用于编译Canadian交叉编译链;

24.    crsssdk.bbclass

该class用于编译交叉编译链且该链用于编译SDK;

25.    debian.bbclass

该class用于输出debian标准的包名称;

26.    deploy.bbclass

该class用于部署文件到DEPLOY_DIR_IMAGE目录中。继承该类的recipes需要手动编写do_deploy()函数来复制文件到DEPLOYDIR目录,之后使用addtask命令将do_deploy()函数添加到do_compile或do_install之后。该类主要负责从DEPLOYDIR到DEPLOY_DIR_IMAGE的文件复制过程。

27.    distro_features_check.bbclass

该class允许recipes检查DISTRO_FEATURES变量的合法性。该class中提供REQUIRED_DISTRO_FEATURES和CONFLICT_DISTRO_FEATURES变量来支持对DISTRO_FEATURES的检查;

28.    distrodata.bbclass

该class提供自动检查recipe的更新。该类提供do_distrodata和do_distro_check任务用于检查和验证。默认系统不包含该类,若使用该类则调用INHERIT += “distrodata”即可;

29.    distuils*.bbclass

该class提供python2的扩展;

30.    disutils3*.bbclass

该class提供python3的扩展;

31.    externalsrc.bbclass

该class提供OE编译系统外的源代码编译工作。在OE编译系统中默认使用S和B变量来分别保存unpack和build目录,而对于继承externalsrc类的recipes来说,需要使用EXTERNALSRC和EXTERNALSRC_BUILD变量来代替S和B;

32.    extrausers.bbclass

该class用来配置用户和组的相关信息。继承了extrausers类的recipes需要使用变量EXTRA_USER_PARAMS变量来设置用户和组。比如:

inherit extrausers

     EXTRA_USERS_PARAMS = "\

         useradd -p '' tester; \

         groupadd developers; \

         userdel nobody; \

         groupdel -g video; \

         groupmod -g 1020 developers; \

         usermod -s /bin/sh tester; \

         "

33.    fontcache.bbclass

该class用来生成合适的post-install或post-remove字体相关的脚本,比如:在脚本中执行fc-cache等命令;

34.    fs-uuid.bbclass

该class用来从${ROOTFS}中提取UUID。该类只能用在ext文件系统下且依赖tune2fs;

35.    gconf.bbclass

该class用来提供安装GConf的通用函数。

36.    gettext.bbclass

该class用来提供GNU gettext支持的国际化本地化处理;

37.    gnome.bbclass

该class用于编译GNOME相关软件;

38.    grub-efi.bbclass

该class用于提供grub-efi规范函数来编译可启动的镜像;

39.    gsettings.bbclass

该class用于提供安装GSettings的通用函数;

40.    gtk*.bbclass

该class簇用于gtk相关任务的开发;

41.    icecc.bbclass

该class用来支持使用Icecream编译系统的软件;

42.    image.bbclass

该class用来支持创建不同格式的镜像。通常使用IMAGE_FSTYPES变量指定镜像的类型,使用IMAGE_INSTALL变量来指定安装到镜像中的packages;

43.    image_types.bbclass

该class用来指出支持的所有镜像类型,这些类型值可以出现在IMAGE_FSTYPES变量中;

44.    image_types_uboot.bbclass

该class指出uboot的类型;

45.    image-live.bbclass

该class支持编译live类型的镜像;

46.    image-mklibs.bbclass

该class支持在do_rootfs任务中使用mklibs工具对镜像中所有的库大小进行优化。通常做法是在local.conf文件中将image-mklibs添加到USER_CLASSES变量中,即:USER_CLASSES ?= “buildstats image-mklibs image-prelink”;

47.    image-prelink.bbclass

该class支持在do_rootfs任务中使用prelink工具优化动态链接库。通常做法是在local.conf文件中将image-mklibs添加到USER_CLASSES变量中,即:USER_CLASSES ?= “buildstats image-mklibs image-prelink”;

48.    insane.bbclass

该class用来提供在OE整个运行过程中对各个步骤的输出进行的相关检查。通常通过WARN_QA和ERROR_QA变量来控制检查的行为和粒度,使用变量INSANE_SKIP来禁止某些检查动作;

49.    insserv.bbclass

该class使用insserv工具来更新/etc/rc?.d/中的符号链接;

50.    kernel*.bbclass

该class用来处理linux内核及其内核模块;

51.    lib_package.bbclass

该class支持编译库和可执行文件,但是这些可执行文件默认是不安装的。使用该类将可执行文件打包到${PN}-bin包中;

52.    libc*.bbclass

该class支持recipes使用libc编译包;

53.    license.bbclass

该class提供license清单的创建和排除。通常该类默认在INHERIT_DISTRO变量中;

54.    linux-kernel-base.bbclass

该class提供编译linux内核的基本函数;

55.    linuxloader.bbclass

该class为动态loader/linker提供值;

56.    logging.bbclass

该class提供log信息;

57.    meta.bbclass

该class作为meta target来编译其它recipes;

58.    metadata_scm.bbclass

该class提供函数来查询SCM配置库;

59.    mime.bbclass

该class提供对MIME类型文件的支持;

60.    mirrors.bbclass

该class设置MIRRORS变量作为SRC_URI的备份;

61.    module.bbclass

该class提供编译linux内核模块的相关函数;

62.    multilib*.bbclass

该class提供编译multilib的相关函数;

63.    native.bbclass

该class提供编译后在build host上执行的通用函数。使用native类有如下两种方式:

    使用myrecipe-native.bb方式,则需要使用inherit native且该语句在所有inherit语句的最后;

    使用BBCLASSEXTEND = “native”方式

64.    nativesdk.bbclass

该class用于编译后在SDK上执行的通用函数。使用nativesdk类有如下两种方式:

    使用myrecipe-nativesdk.bb方式,则需要使用inherit native且该语句在所有inherit语句的最后;

    使用BBCLASSEXTEND = “nativesdk”方式

65.    nopackages.bbclass

该class禁用打包功能;

66.    npm.bbclass

该class支持编译Node.js软件;

67.    own-mirrors.bbclass

该class使得下载源代码包优先于SRC_URI。使用该类的recipes如下:

INHERIT += "own-mirrors"

     SOURCE_MIRROR_URL = "http://example.com/my-source-mirror"

68.    package.bbclass

该class用来从编译的输出文件中生成包。用户可以在local.conf配置文件中通过设置PACKAGE_CLASSES = “package_rpm“来指定输出rpm类型的包。通常IPK类型的包适用于小型系统;

69.    packagedata.bbclass

该class提供通用的函数来读取PKGDATA_DIR中的pkgdata文件。这些文件包含了OE编译系统输出包的所有信息;

70.    packagegroup.bbclass

该class提供PACKAGES,PACKAGE_ARCH以及ALLOW_EMPTY等变量的默认值;

71.    patch.bbclass

该class提供do_patch任务中的所有函数;

72.    perlnative.bbclass

该class使用编译出来的native版本的perl而不是build主机上的perl;

73.    pixbufcache.bbclass

该class创建小脚本来安装pixbuf loader用在gdk-pixbuf中。该小脚本调用update_pixbuf_cache将pixbuf loaders到cache中。若pixbuf loader在包里则设置PIXBUF_PACKAGES变量来声明;

74.    pkgconfig.bbclass

该class通过调用pkg-config命令得到header和library信息。在staging阶段,bitbake安装pkg-config数据到sysroots目录下;

75.    populate_sdk.bbclass

该class为创建SDK的recipes提供支持;

76.    populate_sdk_*.bbclass

该class簇创建指定包类型的SDK包。populate_sdk_base根据IMAGE_PKGTYPE来继承对应的populate_sdk_*。populate_sdk_base创建两个目录,即:${SDK_OUTPUT}/${SDK_ARCH}-nativesdk-pkgs用来存放运行在host上的交叉编译工具链,${SDK_OUTPUT}/${SDKTARGETSYSROOT}/target-pkgs用来存放target相关头文件和库文件。最终populate_sdk_base类创建工具链环境安装脚本、SDK tarball以及SDK安装脚本;

77.    prexport.bbclass

该class用来导出PR值;

78.    primport.bbclass

该class用来导入PR值;

79.    prserv.bbclass

该class提供PR Service所需要的所有函数,用来自动的管理每个recipe中PR值的自动增长;

80.    ptest.bbclass

该class提供packaging和installing阶段运行时测试工具。该类默认是禁止的除非将ptest添加到DISTRO_FEATURES变量中;

81.    ptest-gnome.bbclass

该class提供针对GNOME packages的测试工具;

82.    python-dir.bbclass

该class为python提供基础版本号、安装位置以及site package安装位置;

83.    python3native.bbclass

该class使用编译的native版本的python3而不是build host上的python3;

84.    pythonnative.bbclass

该class使用编译的native版本的python而不是build host上的python;

85.    qemu.bbclass

该class提供QEMU运行或测试环境;

86.    recipe-sanity.bbclass

该class用来对recipe所需要的先决条件进行检查;

87.    relocatable.bbclass

该class允许重新定位binaries,当binaries安装到sysroot下;

88.    remove-libtool.bbclass

该class用来在do_install任务的后面删除所有的.la文件(.la文件由libtool产生)。这样一来sysroot和target packages中都不包含.la文件;

89.    report-error.bbclass

该class用来向中心数据库发送编译错误信息;

90.    rm-work.bbclass

该class用来删除制作完package后的编译数据来减少对硬盘容量的使用。在local.conf中通过设置INHERIT += “rm-work”来使用该类,对于不想删除的recipes信息则在local.conf中通过设置RM_WORK_EXCLUDE += “busybox glibc”来完成;

91.    rootfs*.bbclass

该class为image创建rootfs;

92.    sanity.bbclass

该class用来检查host系统中预装软件的安装情况以及在local.conf中用户配置的检查;

93.    scons.bbclass

该class支持recipes使用Scons编译系统进行编译。用户可以通过EXTRA_OESCONS变量向SCons命令添加配置选项;

94.    sdl.bbclass

该class支持recipes使用SDL库编译;

95.    setuptools.bbclass

该class支持python2的setuptools;

96.    setuptools3.bbclass

该class支持python3的setuptools;

97.    sign_rpm.bbclass

该class支持rpm包的签名;

98.    sip.bbclass

该class支持SIP-based Python bindings;

99.    sitconfig.bbclass

该class处理site configuration。该类由autotools类调用来加速do_configure任务;

100.    siteinfo.bbclass

该class提供targets相关信息为其它类或recipes使用;

101.    sstate.bbclass

该class提供对Shared State的支持;

102.    staging.bbclass

 该class提供do_populate_sysroot任务,该任务将文件复制到sysroot下,使得这些文件在编译过程中可以被其它recipes使用;

103.    syslinux.bbclass

该class提供syslinux类型的bootable镜像;

104.    systemd.bbclass

该class支持recipes安装systemd unit files。

使用该类需要在DISTRO_FEATURES变量中添加systemd。

在recipes中默认将systemd unit files安装到${D}/${systemd_unitdir}/system目录下。若后加入的recipes则需要定义SYSTEMD_PACKAGES变量来指定systemd unit files安装路径以及SYSTEMD_SERVICE变量来指定service file。比如:

在local.conf文件中使用systemd:

    DISTRO_FEATURES += “systemd”

在recipes中添加service file:

    SYSTEMD_SERVICE_${PN} = “connman.service”

105.    terminal.bbclass

该class支持启动一个terminal session。其中变量OE_TERMINAL确定具体的terminal类型;

106.    testimage*.bbclass

该class簇支持在QEMU环境或真实硬件环境下运行自动化测试工具。使用如下命令激活该类:

$bitbake -c testimage image

107.    testsdk.bbclass

该class支持在SDK上运行自动化测试工具。使用如下命令激活该类:

$bitbake -c testsdk image

108.    texinfo.bbclass

该class支持在编译过程中使用textinfo工具;

109.    toaster.bbclass

该class用来收集package、images相关信息,之后以events形式发送给bitbake;

110.    toolchain-scripts.bbclass

该class提供脚本来安装SDK的运行环境;

111.    typecheck.bbclass

该class提供类型检查,比如:IMAGE_FEATURES[type] = “list”

112.    uboot-config.bbclass

该class提供uboot的配置。通过设置UBOOT_CONFIG和UBOOT_MACHINE变量来添加额外的信息;

113.    uninative.bbclass

该class用来隔离编译系统和主机系统的C库;

114.    update-alternatives.bbclass

该class用来处理在多个包中包含相同命令的情况,比如:在busybox、binutils以及elfutils包中都会包含ar命令。使用如下变量:ALTERNATIVE/ALTERNATIVE_LINK_NAME/ALTERNATIVE_TARGET/ALTERNATIVE_PRIORITY;

115.    update-rc.d.bbclass

该class用来给package安装初始化脚本。使用如下变量:INITSCRIPT_PACKAGES/INITSCRIPT_NAME/INITSCRIPT_PARAMS;

116.    useradd*.bbclass

该class簇用来在target上创建用户和组。该类支持如下变量:USERADD_PACKAGES/USERADD_PARAM/GROUPADD_PARAM/GROUPMEMS_PARAM;

其中useradd-staticids类支持静态的添加uid和gid,通过在BBPATH的files/passwd和files/group中来查找对应的内容。该类支持如下变量:USERADDEXTENSION/USERADD_UID_TABLES/USERADD_GID_TABLES/USERADD_ERROR_DYNAMIC;

117.    utility-tasks.bbclass

该class支持各种类型的工具任务,比如:do_clean和do_listtasks;

118.    utils.bbclass

该class提供一些有用的python函数集合,比如:${@…}等;

119.    vala.bbclass

该class提供对vala编程语言的支持;

120.    waf.bbclass

该class支持recipes中使用Waf编译系统进行编译。用户可以通过EXTRA_OECONF变量向Waf命令提供额外的配置选项;

猜你喜欢

转载自blog.csdn.net/hbcbgcx/article/details/84885942