如何在Cstom配方中包含文件以进行yocto构建

时间:2018-11-30 11:30:43

标签: go copy yocto recipe

您好,我是Yocto的新手,正在尝试构建我的第一个配方,我有一个自定义层,该层显示并正确安装在我的系统“ colibri-imx6ull”上,但是我看不到任何有效的配方结果。 Bitbake似乎可以构建它们,但是也许我在构建过程中误解了一些东西。我的长期目标是安装Golang和一些自定义脚本,但目前,我什至无法复制简单的文本文件。

可用的版本是 Toradex(2.8)v2017.12 rocko(2.4)

我已将我的图层添加到oe-core / build / conf / bblayers.conf

${TOPDIR}/../layers/meta-hydroware \

我有一个可用的层配置文件

/layers/meta-hydroware/recipes-golang/conf/layer.conf

包含以下内容

BBPATH := "${BBPATH}:${LAYERDIR}"
BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb \ 
       ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "golang"
BBFILE_PATTERN_golang := "^${LAYERDIR}/" 
BBFILE_PRIORITY_golang := "105"

构建时已将其包含在层列表中,因此希望它可以工作。 首先,我只是想让任何东西都可以复制到构建中的任何地方,并且我尝试使用此配方来复制一个简单的文本文件,但是它没有显示。

我的食谱文件“ golang.bb”位于

/layers/meta-hydroware/recipes-golang/golang/golang.bb

并且文本文件位于

/layers/meta-hydroware/recipes-golang/golang/files

这是我的golang.bb的内容

SUMMARY = "Provides GO"
DESCRIPTION = "Tools for runnings and compiling GO"

SRC_URI =   "file://readme.txt"

LICENSE = "CLOSED"

S = "${WORKDIR}"
FILES_${PN} = ""
ALLOW_EMPTY_${PN} = "1"

do_install() {
    install -m 0755 -d ${D}${bindir} ${D}${bindir}/go
    mkdir ~/usr/bin/go
    cp -a --no-preserve=ownership ${WORKDIR}/* ${D}${bindir}/go/
}

我的目标是安装golang,它与文本文件位于同一文件夹中

 /layers/meta-hydroware/recipes-golang/golang/files/go1.11.2.linux-armv6l.tar.gz

我的第一个目标是能够在已安装的计算机上的某个位置找到文本文件,第二个目标是安装go。我的食谱有什么问题可以阻止它放置文件?

要安装.tar.gz文件,我是否还需要做其他事情?还是do_install()知道该怎么办?

感谢您的回答 //迷茫的新手,他们已经花了太多时间了^^

1 个答案:

答案 0 :(得分:0)

该食谱有多项改进,

SUMMARY = "Provides GO"
DESCRIPTION = "Tools for runnings and compiling GO"

SRC_URI =   "file://readme.txt"

LICENSE = "CLOSED"
S = "${WORKDIR}"

do_install() {
    install -d ${D}${bindir}/go
    install -Dm 0755 ${WORKDIR}/readme.txt ${D}${bindir}/go
}

FILES_${PN} = "${bindir}/*"

如果上面的配方使用local.conf中的IMAGE_INSTALL_append或图像配方或该软件包中的其他软件包RDEPENDS直接包含在图像中,则该配方应该起作用。

已更正:

  1. 您不需要允许空包
  2. FILES_${PN}应该带有要安装的列表文件
  3. install -d创建目录,并复制install -Dm。您无需在食谱中使用cpmkdir