如何在 yocto 构建的 Cstom 配方中包含文件

How to include files in Cstom recipe for yocto build

大家好,我是 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() 明白该怎么做?

感谢您的回答 //困惑的新手已经花了太多天了^^

配方有多项改进,

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