我想对目标1使用内核4.14,对目标2使用内核4.9。并且我添加了以下代码,并且同样工作正常。
SRC_URI = "${@oe.utils.conditional('BASEMACHINE', 'target1', 'file://kernel/k-4.14/net/kernel/', '', d)} \
${@oe.utils.conditional('BASEMACHINE', 'target2', 'file://kernel/k-4.9/net/kernel/', '', d)}"
S = "${@oe.utils.conditional('BASEMACHINE', 'target1', '${WORKDIR}/kernel/k-4.14/net/kernel/', '', d)} \
${@oe.utils.conditional('BASEMACHINE', 'target2', '${WORKDIR}/kernel/k-4.9/net/kernel/', '', d)}"
但是对于所有其他目标,如果存在路径“ kernel / k-3.18 / net / kernel /”,我想使用它。如果不存在,则抛出错误。而且我无法将此条件添加到bb文件中。我已经使用过if else条件并尝试过,但是出现解析器错误。即使我尝试添加python代码,但也无济于事。下面是我尝试过的代码段。
work_dir = d.getVar("WORKDIR", expand=True)
KERNEL_3_18_PATH_FILE_CMD = ''
KERNEL_3_18_PATH = ''
python do_package_prepend() {
if os.path.exists(work_dir+/kernel/k-3.18/net/kernel/):
KERNEL_3_18_PATH_FILE_CMD = "kernel/k-3.18/net/kernel/"
KERNEL_3_18_PATH = work_dir + "/kernel/k-3.18/net/kernel/"
}
SRC_URI = "${@oe.utils.conditional('BASEMACHINE', 'target2', 'file://kernel/k-4.9/net/kernel/', 'file://KERNEL_3_18_PATH_FILE_CMD', d)}"
S = "${@oe.utils.conditional('BASEMACHINE', 'target2', 'file://kernel/k-4.9/net/kernel/', 'KERNEL_3_18_PATH', d)}"
请您帮忙。我是python和yocto的新手
答案 0 :(得分:0)
一种更简单的解决方案是为每台计算机的内核配方设置PREFERRED_VERSION。
例如,基于oe-core的BSP执行以下操作:
meta-yocto-bsp/conf/machine/beaglebone-yocto.conf:
PREFERRED_VERSION_linux-yocto ?= "4.18%"