【发布时间】:2021-09-10 23:42:32
【问题描述】:
我正在为不同的项目构建多个基于 poky 的图像,但使用相同的构建目录(因为为每个项目创建一个新的 yocto 克隆似乎有点矫枉过正)。
但由于他们定义的.bbappend,我碰巧有我的图像相互冲突。例如,我有两个图像,每个图像都扩展了 hostapd 配方,以便定义自己的配置文件。
让我用一个例子来说明。我有两个层,每个层都定义了一个图像:第一个项目和第二个项目。每个都有自己的层,因为它们属于不同的存储库:meta-first-project 和 meta-second-project。两者都使用hostapd。所以他们的项目看起来像这样:
元优先项目:
.
├── conf
│ └── layer.conf
├── recipes-connectivity
│ └── hostapd
│ ├── hostapd
│ │ └── hostapd.conf
│ └── hostapd_%.bbappend
└── recipes-first-project
└── images
└── first-project-image.bb
元秒项目:
.
├── conf
│ └── layer.conf
├── recipes-connectivity
│ └── hostapd
│ ├── hostapd
│ │ └── hostapd.conf
│ └── hostapd_%.bbappend
└── recipes-second-project
└── images
└── second-project-image.bb
每个都有不同的hostapd.conf。
conf/bblayers.conf 文件如下所示,包括两个层:
conf/bblayers.conf:
BBLAYERS ?= " \
/home/user/Documents/yocto/poky/meta \
/home/user/Documents/yocto/poky/meta-poky \
/home/user/Documents/yocto/poky/meta-yocto-bsp \
/home/user/Documents/yocto/meta-first-project \
/home/user/Documents/yocto/meta-second-project \
当我运行bitbake first-project-image 时,我希望它使用meta-first-project 中的hostapd_%.bbappend 而不是meta-second-project 中的那个。但我的理解是两者都会被评估,这意味着meta-second-project/hostapd_%.bbappend 会对我的first-project-image 产生影响,这是我不想要的。
有没有办法解决这个问题,或者我应该有两个构建文件夹(并在那里下载、构建和复制所有内容)?
例如,我考虑在meta-first-project(伪代码)中的hostapd 的bbappend 中检查类似的内容:
if (${IMAGE_BASENAME} == "first-project-image") {
// write the whole bbappend here
}
这样这个 bbappend 只在构建图像first-project-image 时被考虑。但是,${IMAGE_BASENAME} 似乎没有在 hostapd 配方中设置...
另一个类似于COMPATIBLE_HOST 和COMPATIBLE_MACHINE 的想法是定义一个COMPATIBLE_IMAGE 变量,但它不存在。
【问题讨论】:
标签: yocto openembedded