Простая установка родного скрипта для использования в другом рецепте
Мне нужно установить родной скрипт, назовите его foo
в одном рецепте (foo-native
), а затем использовать его в do_compile
шаг другого (целевого) рецепта - назовите его bar
,
Мой (минимальный) родной рецепт
SRC_URI = "file://foo"
LICENSE = "CLOSED"
inherit native
BBCLASSEXTEND = "native"
S = "${WORKDIR}"
do_compile() {
:
}
do_install() {
install -d ${D}/usr/bin
install ${WORKDIR}/foo ${D}/usr/bin
}
Сценарий, foo
существует в каталоге с именем files
который находится рядом с рецептом. т.е.
foo/
├── files
│ └── foo
└── foo.bb
Мой целевой рецепт bar
SRC_URI = ""
LICENSE = "CLOSED"
DEPENDS = "foo-native"
do_fetch[noexec] = "1"
do_configure[noexec] = "1"
do_compile() {
foo >myfile.json
}
do_install() {
install -d ${D}/etc
install ${WORKDIR}/myfile.json ${D}/etc
}
Я получаю ошибку в do_compile
задача bar
и это просто говорит о том, что foo
не может быть найден (т.е. не был установлен в каталог по пути).
1 ответ
Во-первых, вам не нужна линия
inherit native
в foo.bb
, Он позаботился о вас BBCLASSEXTEND = "native"
,
Во-вторых, измените свой do_install
чтобы:
do_install() {
install -d ${D}${bindir}
install ${WORKDIR}/foo ${D}${bindir}
}
Примечание: использовать ${bindir}
вместо /usr/bin
, ${bindir}
определяется с помощью ${prefix}
который, в свою очередь, изменяется, например, при построении -native
версия рецепта.