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

Yocto Zeus及以上版本如何针对单个recipe禁用sstate-cache

Yocto Zeus及以上版本单Recipe禁用sstate缓存方案

针对依赖变更后Recipe不自动重构的需求,Zeus(3.0)及以上版本原生支持按单个Recipe维度完全禁用sstate缓存机制,无需使用老旧补丁,具体方案如下:

方案1:直接修改目标Recipe(永久生效)

在自定义Recipe文件末尾添加以下配置:

# 完全禁用当前Recipe的sstate缓存生成与读取
SSTATE_SKIP_CREATION = "1"

该配置会让该Recipe所有任务都不会生成sstate缓存,每次构建时也不会从全局sstate缓存中拉取对应任务的缓存,强制全流程重新构建。

方案2:在全局配置中指定(不修改Recipe代码)

如果不想改动Recipe本身,可以在conf/local.conf或者自定义发行版配置文件中添加如下配置:

# 将<recipe_name>替换为你要禁用sstate的Recipe名称,注意保留pn-前缀
SSTATE_SKIP_CREATION:pn-<recipe_name> = "1"

该方案利用BitBake的Overrides机制针对特定Recipe生效,适合临时测试或者多Recipe统一管理的场景。

方案3:单次构建临时禁用(无需修改配置)

如果只是某一次构建需要跳过sstate缓存,可以直接在BitBake命令中添加参数:

bitbake <recipe_name> --no-setscene

该命令只会在本次构建时跳过目标Recipe的所有sstate缓存拉取,不会对后续构建产生影响。

生效验证

配置完成后执行构建,若日志中没有出现do_* (setscene)格式的缓存复用提示,所有任务均正常执行,即代表配置生效。

注意事项

  • 该特性仅适用于Yocto 2.7(Warrior)及以上版本,Zeus及后续版本均原生稳定支持,完全覆盖老旧补丁、部分禁用方案的能力缺口
  • 建议仅对频繁修改依赖的自定义Recipe使用该配置,不要对glibc、gcc等基础组件禁用sstate,否则会大幅提升整体构建耗时

内容的提问来源于stack exchange,提问作者Martin H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:36:05