Как работает разбор переменных в Yocto?

Есть некоторые переменные, которые я просто использую, не зная, что они делают. Может ли кто-нибудь объяснить логику всех этих парсингов в Yocto?

Что делает подчеркивание? Каковы доступные аргументы, кроме _append_pn?

PACKAGECONFIG_append_pn-packagename = " packagename"

PREFERRED_VERSION_linux-imx_mx6 = "3.10.17"

SRC_URI_append_toolchain-clang = " file://0004-Remove-clang-unsupported-compiler-flags.patch "

EXTRA_OECONF_append_arm = " --enable-fpm=arm"

Как насчет этого? Я знаю, что добавление таким образом — это выделение пакета, но как это работает?

LICENSE_FLAGS_WHITELIST_append = " commerical_packagename"

Кто-то также упомянул что-то странное, что сработало для них: bitbake: как добавить пакет в зависимости от MACHINE?

IMAGE_INSTALL_append_machine1 += " package1"


person Charles C.    schedule 12.09.2017    source источник


Ответы (1)


В документации это довольно хорошо описано: https://www.yoctoproject.org/docs/latest/bitbake-user-manual/bitbake-user-manual.html#basic-syntax

Более длинная версия заключается в том, что _ вводит переопределение, то есть способ сказать «сделай что-то особенное», а не просто присваивать.

Некоторые из них представляют собой такие операции, как добавление и добавление в начало. FOO = "1" FOO_append = "2"

FOO теперь "12", так как 2 было добавлено к 1.

(_prepend делает то, что вы ожидаете)

_remove может использоваться для удаления элементов из списка, разделенного пробелами.

  FOO = "1 2 3"
  FOO_remove = "2"

FOO теперь "1 3".

pn_[foo] — это переопределение для конкретного имени рецепта (историческое название, оно означает имя пакета, но на самом деле относится к рецепту). Итак, ваш local.conf может:

EXTRA_OEMAKE_pn-foo = "bar"

И вы только что установили EXTRA_OEMAKE для рецепта foo и только для рецепта foo.

Есть и другие переопределения. У всех архитектур есть переопределения, поэтому _arm _x86 _mips и т. д. указывают, что назначение специфично для этих архитектур.

person Ross Burton    schedule 12.09.2017