*.bb ошибка файла: ошибка парсера при использовании условия if else в yocto sumo

Я хочу использовать ядро ​​4.14 для target1 и ядро ​​4.9 для target2. И я добавил приведенный ниже код для того же самого, и он отлично работает.

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


person Sneha Dolly    schedule 16.10.2018    source источник


Ответы (1)


Гораздо более простым решением было бы установить PREFERRED_VERSION для вашего рецепта ядра для каждой машины.

Например, BSP oe-core делают это:

meta-yocto-bsp/conf/machine/beaglebone-yocto.conf:
PREFERRED_VERSION_linux-yocto ?= "4.18%"
person Ross Burton    schedule 16.10.2018