Битбэйк условное включение оператора зависимостей

Как включить строку с зависимостями в файл 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)}"

Другие вопросы по тегам