h0c*_*355 3 recipe embedded-linux bitbake yocto
我想知道是否有机会仅通过文件名创建机器特定的配方,以便我有类似这样的层结构:
\-> recipes-example
\-> example
\-> example_1.0.bb_machine1
\-> example_1.0.bb_machine2
Run Code Online (Sandbox Code Playgroud)
我刚刚读过几乎完整的Yocto文档,并且认为我曾经偶然发现这个创建机器特定配方的机会,但无法重新修改它.
备选方案也很受欢迎,但我知道像这个例子的bash解决方案:
do_install() {
case ${MACHINE} in
< case statements [...] >
}
Run Code Online (Sandbox Code Playgroud)
And*_*ers 10
不,没有办法根据他们的名字创建特定于机器的配方.
假设只有少数文件/补丁不同,最常见的方法是在机器特定目录中添加不同的文件,例如:
\-> recipes-example
\-> example
\-> example
\-> machine1
\-> defconfig
\-> mach1.patch
\-> machine2
\-> defconfig
\-> defconfig
Run Code Online (Sandbox Code Playgroud)
这将允许你写下这样的东西:(注意,在我的例子中,有一个通用的defconfig文件,以及两个特定于机器的文件.由于这个原因,会自动选择正确的一个.MACHINEOVERRIDES)
SRC_URI += "file://defconfig"
SRC_URI_machine1 += "file://mach1.patch"
Run Code Online (Sandbox Code Playgroud)
在此示例中,mach1.patch仅适用于machine1.
如果你需要为例如机器做一些特殊的事情do_install,你可以使用:
do_install_append_machine1 () {
do something here
}
Run Code Online (Sandbox Code Playgroud)
更新:(在graugans评论后)
是的,COMPATIBLE_MACHINE也可以使用.一种方法是创建example-mach1.bb,example-mach2.bb和,exampe-machs.bb其中包括几行,如:
PROVIDES += "virtual/example"
COMPATIBLE_MACHINE = "machine1"
Run Code Online (Sandbox Code Playgroud)
并为'example-machs.bb"
PROVIDES += "virtual/example"
COMPATIBLE_MACHINE = "(machine3|machine4)"
Run Code Online (Sandbox Code Playgroud)
在您的图像配方中,然后添加IMAGE_INSTALL += "virtual/example".
| 归档时间: |
|
| 查看次数: |
2152 次 |
| 最近记录: |