使用bitbake,是否可以根据目标镜像为一个软件包设置不同的do_install?

3
我们有一台机器,用于构建两个目标镜像: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的镜像将包含已完成appends任务的安装包,但foo的镜像不会。

有没有办法实现我所概述的内容或者有没有其他可行的替代方案?

2个回答

2
不,您不能根据正在构建的映像执行不同的任务。虽然我不太确定,但可能会在do_install中检查映像名称。
我会执行以下操作:
- 在食谱中添加第二个包,其中包括其他文件(如果您想这样做)。 - 您的第二个映像食谱应包括此第二个包。
另一个可能性,取决于您是否可以检测到已构建的映像,是添加一个post_install脚本,以便为您进行修改。第三种选项可能不那么好,即在ROOTFS_POSTPROCESS_COMMAND中进行更改。
您选择哪种解决方案将取决于您想要进行什么类型的自定义。

1

经过一些考虑,我们可能是在反向思考这个问题。我们可能希望在机器级别注入分离。由于最终两个产品都将是独立的,因此这是最有意义的。以这种方式进行操作将允许我们针对特定产品引入软件包更改。

我们的构建流程将变为:

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

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

do_install (){
    //Some work
}

do_install_append_custom2(){
   //Some more work
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接