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

时间:2017-08-15 21:59:33

标签: yocto bitbake openembedded

我需要在一个配方(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的{​​{1}}任务,它只是说找不到bar(即没有安装到路径上的目录中)

1 个答案:

答案 0 :(得分:6)

首先,您不需要该行

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又会被更改,例如在构建食谱的{{1}}版本时。