Ошибка файла * .bb: ошибка парсера при использовании условия if else в yocto sumo - PullRequest
0 голосов
/ 16 октября 2018

Я хочу использовать ядро ​​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

1 Ответ

0 голосов
/ 17 октября 2018

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

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

meta-yocto-bsp/conf/machine/beaglebone-yocto.conf:
PREFERRED_VERSION_linux-yocto ?= "4.18%"
...