2

我们有一台机器,我们用它来构建两个目标图像;foo 图像和 foobar 图像。两个镜像都使用相同版本的包,但我们想根据构建的镜像添加对 do_install 任务的更改。所以包的配方文件看起来像这样:

do_install (){
    //Some work
}

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

最终,当我们为这两个图像进行构建时:

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

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

有什么办法可以做我所概述的或有什么替代方法?

4

2 回答 2

2

不,您不能根据正在构建的图像在配方中执行不同的任务。do_install尽管我非常不确定,但可能会检查图像名称。

我要做的是:

  • 在配方中,添加包含附加文件的第二个包(如果这是您想要做的)。
  • 让您的第二个图像配方包含此第二个包。

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

您选择哪种解决方案取决于您想要进行哪种定制。

于 2015-10-23T07:17:09.983 回答
1

经过一番深思熟虑,我们可能正在倒退考虑这个问题。我们可能想在机器级别注入分离。由于最终两者都将是单独的产品,因此这是最有意义的。这样做将使我们能够对特定产品的包进行更改。

我们的构建线将变为:

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

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

do_install (){
    //Some work
}

do_install_append_custom2(){
   //Some more work
}
于 2015-10-23T15:13:34.537 回答