Битбэйк условное включение оператора зависимостей
Как включить строку с зависимостями в файл bitbake с условием? Я хочу что-то вроде ниже:
if (some env varible)
DEPENDS += "recipe-1"
else
DEPENDS += "recipe-2'
Я попробовал ниже в файле.bb:
DEPENDS += "${@ 'recipe-2' if '${ENV_VAR}' else 'recipe-1'}"
До этого я экспортировал ENV_VAR в BB_ENV_EXTRAWHITE
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE ENV_VAR"
Это работает, только если установлен ENV_VAR:
env ENV_VAR="value" bitbake test-recipe
если ENV_VAR не установлен, он выдает ошибку при разборе строки DEPENDS битового выпечки
ExpansionError: Failure expanding variable DEPENDS, expression was
${@ 'recipe-2' if '${ENV_VAR}' else 'recipe-1'}
which triggered exception SyntaxError: EOL while scanning string literal (DEPENDS, line 1)
2 ответа
Пытаться:
DEPENDS += "${@ 'recipe-2' if d.getVar('ENV_VAR') else 'recipe-1'}"
Причина в том что ${ENV_VAR}
расширяется до значения переменной. Если он не установлен, он не расширяется, и это вызывает ошибку, которую вы видите. Используя getVar
вы получите результат, с которым может справиться остальная часть выражения python None
или значение.
Обратите внимание, что есть некоторые предлагаемые изменения, которые могут улучшить поведение, чтобы сделать его немного более удобным и понятным для людей, но вышеперечисленное продолжит работать независимо от этого.
Допустим, у вас есть рецепты, recipe-main и recipe-test, и на основе значения
USE_TEST_RECIPE
0
или же
1
, вы можете сделать следующее
DEPENDS_append += "${@base_conditional('USE_TEST_RECIPE', '1', 'recipe-test', 'recipe-main', d)}"