Yocto理论基础之layer

一、layer介绍

在poky源码中我们基本上在每一个meta layer中都能看到一个layer.conf,里面大致内容如下:

# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
            ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "yoctobsp"
BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/"
BBFILE_PRIORITY_yoctobsp = "5"
LAYERVERSION_yoctobsp = "4"
LAYERSERIES_COMPAT_yoctobsp = "dunfell"

这几个基本变量的作用介绍:

  • BBPATH:添加当前layer的路径到bitbake编译系统的搜索路径。
  • BBFILES:定义当前recipes里面的所有bb文件的路径。
  • BBFILE_COLLECTIONS:为layer添加一个唯一标识名,供bitbake系统快速查找对应的meta layer
  • BBFILE_PATTERN_yoctobsp:在bitbake解析期间立即展开以提供当前layer的所有目录。
  • BBFILE_PRIORITY_yoctobsp:当构建系统在不同layer中找到相同名称的recipes时,为该layer中的recipes设置优先级,让构建系统决定使用哪个。
  • LAYERVERSION_yoctobsp:设置当前layer的版本,这样如果不同layer之间如果有依赖关系(LAYERDEPENDS 控制)可以精细化控制到依赖layer的某一个具体版本。
  • LAYERDEPENDS:指定当前layer依赖的其他layer名称。
  • LAYERSERIES_COMPAT_yoctobsp:当前layer兼容的yocto版本。

二、layer最佳实践

维护和开发layer中有一些常见的注意事项:

  1. 创建layer的过程中切忌直接复制其他layer中的bb文件到当前layer然后在修改,最佳实践是如果需要复用已有的recipes你应该创建.bbappend文件来追加修改。
  2. 在.bbappend文件中正确使用overrides机制,并在层中放置特定于machine的文件,可以确保构建不会使用错误的元数据,也不会对不同machine的构建产生负面影响:
    比如我有一个meta-layer里面的recipes有如下定义:
DEPENDS = "foo"

如果我只想在编译raspberrypi的时候才依赖该组件,我可以这么写:

DEPENDS:rpi = "foo"

同理如果我想在特定machine时追加或者删除变量:

DEPENDS:append:rpi = "foo"
DEPENDS:remove:stm32 = "foo"
  1. 如果在.bbappend文件中有附加自己的文件,理论上你需要添加到原bb文件的SRC_URI变量中,为了构建系统能够找到你的文件,你需要将你使用如下变量追加当前layer的路径,简单示例如下:
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

SRC_URI:append:rpi = " \
    file://xorg.conf.d/98-pitft.conf \
    file://xorg.conf.d/99-calibration.conf \
"
do_install:append:rpi () {
    PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}"
    if [ "${PITFT}" = "1" ]; then
        install -d ${D}/${sysconfdir}/X11/xorg.conf.d/
        install -m 0644 ${WORKDIR}/xorg.conf.d/98-pitft.conf ${D}/${sysconfdir}/X11/xorg.conf.d/
        install -m 0644 ${WORKDIR}/xorg.conf.d/99-calibration.conf ${D}/${sysconfdir}/X11/xorg.conf.d/
    fi
}

FILES:${PN}:append:rpi = " ${sysconfdir}/X11/xorg.conf.d/*"

三、创建layer

bitbake提供了一些指令供我们快捷的创建layer:

  1. 创建layer
bitbake-layers add-layer your_layer_name
  1. 将layer添加到构建系统中
bitbake-layers add-layer meta-mylayer
  1. 查看layer
bitbake-layers show-layers

bitbake-layers的常用指令可以通过–help查看:

bitbake-layers  --help
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值