使用bitbake是否可以根据目标图像为包提供不同的do_install?

时间:2015-10-22 18:57:05

标签: recipe bitbake

我们有一台MACHINE用于构建两个目标图像; foo-image和foobar-image。两个映像都使用相同版本的软件包,但我们希望根据构建的映像添加对do_install任务的更改。这样包的配方文件看起来像这样:

do_install (){
    //Some work
}

do_install_append_foobar-image(){
   //Some foobar work
}

最后,当我们为两张图片进行构建时:

MACHINE=custom bitbake foo-image
MACHINE=custom bitbake foobar-image

foobar的图像将包含已在附加任务中完成工作的已安装包,但foo的图像不会。

有没有办法做我已概述的内容或替代方案?

2 个答案:

答案 0 :(得分:2)

不,您无法根据正在构建的图像在配方中执行不同的任务。可能有可能在do_install中检查图像名称,虽然我非常不确定。

我要做的是:

  • 在食谱中,添加第二个包,其中包含其他文件(如果您想要做的话)。
  • 让您的第二张图像配方包含第二个包装。

另一种可能性,取决于您是否可以检测到您构建的图像,是添加post_install - 脚本,为您进行修改。第三种可能不太好的选择是在ROOTFS_POSTPROCESS_COMMAND中进行更改。

您选择哪种解决方案取决于您想要的自定义类型。

答案 1 :(得分:1)

经过一番考虑,我们可能正在考虑这个问题。我们可能想在MACHINE级别注入分离。由于两者最终都是独立的产品,因此最有意义。这样做将允许我们为该特定产品的包引入更改。

我们的构建线将成为:

MACHINE=custom1 bitbake foo-image
MACHINE=custom2 bitbake foobar-image

我们对软件包的安装任务可以是:

do_install (){
    //Some work
}

do_install_append_custom2(){
   //Some more work
}