【问题标题】:How to include files in Cstom recipe for yocto build如何在 yocto 构建的 Cstom 配方中包含文件
【发布时间】:2019-05-02 13:26:23
【问题描述】:

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

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

【问题讨论】:

  • Parthiban 已经为您提供了有关编写配方的提示,我将仅评论 Go:打包开发工具可能非常棘手……幸运的是,您几乎不必像其他人那样做为你做了。在这种情况下,可以在 openembedded-core 本身中找到 go 配方:只需将 go 包添加到您的图像中就可以了(不过,rocko 中的那个比 1.11 稍旧)

标签: go copy yocto recipe


【解决方案1】:

配方有多项改进,

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 或 image recipe 或此包上的一些其他包 RDEPENDS 将上述配方直接包含到图像中,则上述配方应该可以工作。

已更正:

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

【讨论】:

  • 定义 FILES_${PN} 不需要,这是来自 - meta/conf/bitbake.conf 的默认值(这是明智的了解我认为的这个配置文件)。
  • 感谢您迄今为止的帮助!我尝试了您提供的更新配方,但仍然没有结果。我正在检查 /usr/bin、/bin/ 的 go 目录,但没有找到,也没有文本文件。我已经尝试使用 bitbake -k golang 以及它在两种情况下构建的 bitbake -k hydroware-image 再次对配方和图像进行 bitbake,但我找不到文件......还有什么需要做的吗?包括配方还是在构建过程中我必须做任何事情?还是文件只是隐藏在其他地方?
猜你喜欢
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2020-08-17
相关资源
最近更新 更多