Можно ли передавать переменные командной строки в битовую сборку?
У меня есть среда OpenEmbedded, использующая битбокс для выполнения некоторых сборок. Я хотел, чтобы что-то "интерактивное" продолжалось, когда битбокс приостанавливался и запрашивал ввод, затем продолжайте сборку, но я обнаружил, что это невозможно.
Так как я не могу этого сделать, я ищу способ передать дополнительные флаги для сборки. Есть ли способ передать флаги в битбокс, вроде gcc -D
option?
т
bitbake -Dfoo=bar oe-myimage
Таким образом, во время процесса сборки oe-myimage
переменная foo
будет установлена на bar
.
Ответы
Ответ 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