简单安装本机脚本以用于其他配方

Simple installation of native script for use in other recipe

我需要安装一个本机脚本,在一个配方 (foo-native) 中将其命名为 foo,然后在另一个(目标)配方的 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
}

我得到的错误是在 bardo_compile 任务中,它只是说 foo 无法找到(即尚未安装到路径)。

首先,你不需要这条线

inherit native

foo.bb 中。由 BBCLASSEXTEND = "native".

为您处理

其次,将您的 do_install 更改为:

do_install() {
    install -d ${D}${bindir}
    install ${WORKDIR}/foo ${D}${bindir}
}

注意:使用 ${bindir} 而不是 /usr/bin${bindir} 是使用 ${prefix} 确定的,而 ${prefix} 又会发生变化,例如在构建 -native 版本的食谱时。