如何在 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
将其直接包含到图像中,则上述配方应该有效。
已完成更正:
- 您不需要允许空包
FILES_${PN}
应包含您要安装的列表文件
install -d
创建目录并 install -Dm
复制它。您不需要在食谱中使用 cp
或 mkdir
。
大家好,我是 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
将其直接包含到图像中,则上述配方应该有效。
已完成更正:
- 您不需要允许空包
FILES_${PN}
应包含您要安装的列表文件install -d
创建目录并install -Dm
复制它。您不需要在食谱中使用cp
或mkdir
。