Подтвердить что ты не робот

Можно ли передавать переменные командной строки в битовую сборку?

У меня есть среда OpenEmbedded, использующая битбокс для выполнения некоторых сборок. Я хотел, чтобы что-то "интерактивное" продолжалось, когда битбокс приостанавливался и запрашивал ввод, затем продолжайте сборку, но я обнаружил, что это невозможно.

Так как я не могу этого сделать, я ищу способ передать дополнительные флаги для сборки. Есть ли способ передать флаги в битбокс, вроде gcc -D option?

т

bitbake -Dfoo=bar oe-myimage

Таким образом, во время процесса сборки oe-myimage переменная foo будет установлена ​​на bar.

4b9b3361

Ответ 1

bitbake -Dfoo=bar oe-myimage
Флаг

-D не распознается битбаке. Таким образом, использование вышеописанного метода не будет работать. Вместо этого вы можете указать флаги из командной строки, используя следующие шаги -

Предположим, вы хотите экспортировать переменную foo и ожидать, что она будет распознана bitbake.

export foo="foobar"

Вам нужно будет экспортировать это и сообщить битбаке через переменную BB_ENV_EXTRAWHITE после поиска oe-init-build-env. Это означает

. oe-init-build-env
export foo="foobar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"      

Эта переменная whitelists 'foo' для битбокса и, таким образом, делает ее видимой для любого рецепта и подпроцесса во время сборки.

После этого вы можете вызывать любые операции битбокса, используя переменную foo в bitbake с помощью выражений типа -

${foo}

Ответ 2

вы можете сделать:

export foo="bar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
bitbake oe-myimage

Ответ 3

Хотя в других ответах нет ничего плохого, bitbake действительно принимает аргумент --postread как --postread здесь. Это означает, что вы можете записать столько переменных бит-бека, сколько хотите, во временный файл конфигурации и прочитать его после bitbake.conf, указав имя файла в командной строке. Например:

bitbake --postread=./extra.conf

Мне лично это удобнее, чем иметь дело с переменными среды.

Ответ 4

Нет, я не считаю, что такой механизм существует. Но вы могли бы сделать что-то вроде

"echo "foo = \"bar\"" >local.conf

Не уверен, что решит вашу конкретную проблему или нет. Кроме того, существует механизм для локальных переменных сайта: если у вас есть файл site.conf в вашем домашнем каталоге под каталогом .oe, bitbake будет читать это и применять эти переменные к глобальной среде для каждой сборки. Может быть, это поможет? Вы не указали точно, какую проблему вы пытаетесь решить, могут быть лучшие способы.

Ответ 5

Есть также удобный способ сделать это из командной строки, который описан в руководстве по биткойну с использованием BB_ORIGENV:

Иногда полезно иметь возможность получать информацию из исходной среды выполнения. Bitbake сохраняет копию исходного окружения в специальную переменную с именем BB_ORIGENV.

Для этого вы можете прочитать переменную в точности так, как они предлагают (из функции Python):

 origenv = d.getVar("BB_ORIGENV", False)
 bar = origenv.getVar("BAR", False)

Затем, способ передать это из командной строки просто:

BAR=somevalue bitbake myimage