【发布时间】:2019-07-05 06:32:05
【问题描述】:
我有一个与 rocko 兼容的食谱层。我想为 thud 添加兼容性。 LAYERSERIES_COMPAT_layer 支持列表,因此似乎有意支持多个带有层的版本。
Thud 包含一些破坏兼容性的库的版本冲突。一个示例是 protobuf-3.6,其中包含与 rocko 中使用的早期版本不兼容的 API 更改。
对于该层中的所有包,我为它们的源提供了补丁,使它们与新的 API 版本(仅)兼容。
目前,为了支持不同的库版本,有一种创建元层的不同分支(甚至分支)的文化。这导致了项目和部门之间的严重分散和偏差。
如果我可以创建独立于例如构建中使用的确切版本的 protobuf 工作的配方,那么我可以合并其中的一些分支和分支并维护 一个 repo。
我尝试了一些带有条件
.bbappend的方法,但找不到方法。例如,COMPATIBLE_MACHINE 似乎没有等价物,我可以用它来区分版本。我还尝试了一种根据依赖项的实际 PV 有条件地修补源的方法。基本上尝试执行以下配方伪代码片段中描述的内容:
DEPENDS += "protobuf"
SRC_URI = "git://github.com/foo/bar;"
if ${protobuf_PV} larger_or_equal "3.6.0"
SRC_URI_append = " file://replace_protobuf_scoped_ptr.patch"
endif
我在这里找到了一个现有的答案,这让我怀疑这是可能的:How can I reference/find the ${PV} of one recipe in another recipe in Yocto/Bitbake?
那么,bitbake 提供了哪些机制(如果有)来帮助我制作与不同版本的依赖项兼容的配方,特别是与不同的 yocto 版本兼容?
【问题讨论】:
标签: embedded-linux yocto bitbake