You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KAS构建Yocto时默认添加${BSPDIR}至bblayers.conf?

使用KAS构建Yocto时自动添加${BSPDIR}的方法

问题场景

我用KAS构建Yocto项目,部分配方里用${BSPDIR}指定本地源码路径,比如:

KERNEL_SRC = "git://${BSPDIR}/local_repos/linux-5.4.142;protocol=file"

不用KAS的话,执行source poky/oe-init-build-env build后,Yocto会自动在bblayers.conf里生成BSPDIR的定义:

BBPATH = "${TOPDIR}"
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

但KAS生成的bblayers.conf里只有TOPDIR相关配置:

${TOPDIR}/../work/poky/meta \
${TOPDIR}/../work/poky/meta-poky"
BBPATH ?= "${TOPDIR}"
BBFILES ??= ""

这直接导致构建失败,只能手动把配方里的${BSPDIR}替换成${TOPDIR}/../才能正常构建。

解决方法

有两种方法能让KAS自动添加${BSPDIR}的定义,不用再手动改配方:

方法1:在KAS配置文件中注入到local.conf

打开你的KAS配置文件(比如kas.yml),添加local_conf_header段,直接定义BSPDIR:

local_conf_header:
  bspdir_def: |
    BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

这样KAS生成构建配置时,会把这个变量加到local.conf里,和oe-init-build-env的效果完全一致,配方里的${BSPDIR}就能正常识别。

方法2:直接加到bblayers.conf中

如果一定要把BSPDIR放到bblayers.conf里,就在KAS配置文件里用bblayers_conf_header:

bblayers_conf_header:
  bspdir_def: |
    BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

这样KAS生成bblayers.conf时会自动带上这个变量定义。

一般更推荐第一种方法,因为Yocto的自定义变量通常放在local.conf里,bblayers.conf主要用来管理层路径。

内容的提问来源于stack exchange,提问作者Aspire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 10:34:58