Нет, нет никакого способа, чтобы создать рецепт машинно-зависимый только по имени.
Предполагая, что есть только несколько файлов/патчи, которые отличаются, наиболее распространенным способом сделать это было бы добавить различные файлы в определенном каталоге машины смотри, например:
\-> recipes-example
\-> example
\-> example
\-> machine1
\-> defconfig
\-> mach1.patch
\-> machine2
\-> defconfig
\-> defconfig
Это позволит вам писать такие вещи, как: (. Обратите внимание, что в моем примере, есть общий файл defconfig, и две машины конкретных из них правильный один будет автоматически выбран из-за MACHINEOVERRIDES
)
SRC_URI += "file://defconfig"
SRC_URI_machine1 += "file://mach1.patch"
в этом примере mach1.patch
будет применяться только за machine1
.
Если вам нужно сделать что-то особенное для машины, например. do_install
, вы можете использовать:
do_install_append_machine1() {
do something here
}
UPDATE: (после того, как graugans комментарий)
Да, COMPATIBLE_MACHINE
также могут быть использованы. Одним из способов было бы создать example-mach1.bb
, example-mach2.bb
и exampe-machs.bb
который включал бы пару строк, таких как:
PROVIDES += "virtual/example"
COMPATIBLE_MACHINE = "machine1"
и `example-machs.bb»
PROVIDES += "virtual/example"
COMPATIBLE_MACHINE = "(machine3|machine4)"
В рецепте изображения, вы затем добавляете IMAGE_INSTALL += "virtual/example"
.
Хорошо спасибо за ответ, последняя часть мне очень помогла, могу ли я также использовать 'do_install_append_machine1_machine2', чтобы использовать ту же функцию для двух машин, или мне нужно создать функцию дважды, тогда – h0ch5tr4355
Нет, это невозможно. Хотя вы можете использовать что-то похожее на SOC_FAMILY в http://git.openembedded.org/openembedded-core/tree/meta/conf/machine/include/soc-family.inc, чтобы создать семейство ваших машин. – Anders
Хорошо, но я могу создать несколько методов 'do_install()' для разных машин в одном рецепте, не так ли? 'do_install()', 'do_install_mach1()' и 'do_install_mach2()' как пример – h0ch5tr4355