Простая установка родного скрипта для использования в другом рецепте

Мне нужно установить родной скрипт, назовите его 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 версия рецепта.

Другие вопросы по тегам