2021-08-12 在两个recipe之间共享文件(Share files between recipes)

使用其他recipes生成的文件,using files generated by other recipes

原本期望在recipes之间共享文件会有类似namespace的实现方式,即,可以在recipes-bb的build脚本中,任意通过recipes-aa namespace下的环境变量来轻松访问recipes-aa下生成的编译文件。如::recipes-aa:${WORKDIR} ::recipes-aa:${D}等。
一番查阅之后,没有找到类似的机制,改为使用staging.bbclass提供的do_populate_sysrootdo_prepare_recipe_sysroot来实现


1. 需求

期望能在recipes-bb编译过程中使用recipes-aa生成的文件

2. 实现方式

使用yocto提供的staging.bbclass提供的标准任务来完成该需求。

文档描述:https://www.yoctoproject.org/docs/2.3.1/ref-manual/ref-manual.html#ref-classes-staging

假设recipes-bb依赖recipes-aa的编译输出文件。

基本原理:

  1. Stage 0:在recipes-bb文件中添加对recipes-aa的依赖
# recipes-bb.bb

DEPENDS = "recipes-aa"
  1. Stage one: build recipes-aa时,其do_populate_sysroot任务负责从recipes-aa$D}目录的sysroot-destdir的文件中挑出一部分放到,recipes-aa$WORKDIR}sysroot-destdir
  2. Stage two: build recipes-bb时,其do_prepare_recipe_sysroot任务负责将Stage one中准备好的文件,拷贝到recipes-bb的${WORKDIR}recipe-sysroot中。至此,在编译recipes-bb时,则可以通过访问当前WORKDIR的recipe-sysroot内容,来获取recipes-aa的编译输出文件

其他说明

  • Stage one拷贝的对象由SYSROOT_DIRSSYSROOT_DIRS_NATIVESYSROOT_DIRS_BLACKLIST变量来配置
  • 另外可以通过SYSROOT_PREPROCESS_FUNCS变量来配置额外的拷贝函数,而且实测该方式比较有效也可控
    eg:
SYSROOT_PREPROCESS_FUNCS += "additional_populate_sysroot"
additional_populate_sysroot() {
    sysroot_stage_dir ${D}/lib ${SYSROOT_DESTDIR}/lib
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值