Может ли bitbake включать/требовать файл на основе переменной?

С bitbake я хотел бы иметь возможность включать/требовать другой файл на основе переменной, т.е.

требуется ${somevar}

Из всего, что я читал, это не работает напрямую, но, возможно, есть решение для моего конкретного случая использования. Я использую OECore и хотел бы иметь один рецепт изображения, который включает группу настроек, расположенных в другом файле, на основе чего-то вроде МАШИНЫ. Поэтому вместо того, чтобы делать это:

SETTING_A_machine1 = "..."
SETTING_B_machine1 = "..."
SETTING_C_machine1 = "..."
SETTING_D_machine1 = "..."
...
SETTING_A_machine2 = "..."
SETTING_B_machine2 = "..."
SETTING_C_machine2 = "..."
SETTING_D_machine2 = "..."
...

Я хотел бы иметь возможность сделать что-то эквивалентное этому:

require include/${MACHINE}.inc

включить/machine1.inc

SETTING_A = "..."
SETTING_B = "..."
SETTING_C = "..."
SETTING_D = "..."

включить/machine2.inc

SETTING_A = "..."
SETTING_B = "..."
SETTING_C = "..."
SETTING_D = "..."

Любые идеи?


person marler8997    schedule 22.09.2018    source источник


Ответы (2)


Yocto поддерживает машинное переопределение, не могли бы вы попробовать следующее:

your-image-recipe.bb
include/machine1/common.inc
include/machine2/common.inc

Затем в файле your-image-recipe.bb у вас есть:

require include/common.inc
person BenKwan    schedule 22.09.2018
comment
Это не сработает, переопределения работают для SRC_URI, но не включают такие пути. Причина в том, что это не нужно для работы, require include/${MACHINE}.inc будет работать. - person Richard Purdie; 26.09.2018

Вы действительно пробовали это?

требуется включить/${MACHINE}.inc

должно просто работать. Если вы посмотрите на bitbake.conf, то увидите, как в первую очередь включаются файлы конфигурации машины! Вам просто нужно знать, что это подразумевает немедленное расширение переменной, поэтому, если вы ссылаетесь на ${FOO} здесь, а затем в изменении файла FOO, это не будет отражено во включенном файле.

person Richard Purdie    schedule 22.09.2018