如果我在本地目录中有一个tarball,helloworld.tar.gz,比如/ home/user/tarballs /,如何从该目录中获取bitbake配方?
我的helloworld.bb是
SECTION = "examples"
LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://COPYING; md5=1b1b8016e15e07a2fec59623ebf12345"
SRC_URI = "file://helloworld.tar.gz"
Run Code Online (Sandbox Code Playgroud)
但是当我咬嘴时,我收到以下警告信息:
WARNING: Unable to get checksum for helloworld SRC_URI entry helloworld.tar.gz: file could not be found
Run Code Online (Sandbox Code Playgroud)
我读了一些关于FILES和FILESEXTRAPATHS的内容可以影响下载路径,但不确定在何处/如何设置它们.
我做了一个bitbake -c show FILESEXTRAPATHS但收到错误信息:
ERROR: Nothing PROVIDES 'FILESEXTRAPATHS'
Run Code Online (Sandbox Code Playgroud) 我do_install在BitBake配方中有一个任务,我为驱动程序编写了执行自定义install脚本的任务.任务失败,因为安装脚本无法在其中找到内核源头文件<the image rootfs>/usr/src/kernel.此脚本在生成的OS上运行正常.
这是我食谱的相关部分:
SRC_URI += "file://${TOPDIR}/example"
DEPENDS += " virtual/kernel linux-libc-headers "
do_install () {
( cd ${TOPDIR}/example/Install ; ./install )
}
Run Code Online (Sandbox Code Playgroud)
这是install脚本的相关部分:
if [ ! -d "/usr/src/kernel/include" ]; then
echo ERROR: Linux kernel source include directory not found.
exit 1
fi
cd /usr/src/kernel
make scripts
...
./install_drv pci ${DRV_ARGS}
Run Code Online (Sandbox Code Playgroud)
我检查了改变if [ ! -d "/usr/src/kernel" ],也失败了.install传递不同的选项install_drv,我有以下相关部分:
cd ${DRV_PATH}/pci
make NO_SYSFS=${ARG_NO_SYSFS} NO_INSTALL=${ARG_NO_INSTALL} ${ARGS_HWINT}
if …Run Code Online (Sandbox Code Playgroud) 我们正在努力对我们的应用程序,RFS,Uboot和内核进行版本控制
我们有一个你好的世界计划.每次我们更改(修补)程序的新功能时,我们都必须在版本号的帮助下跟踪更改.我们需要这个版本号(hello world package)应该自动递增.同样我们与Linux和uboot有关.
yocto能为我们这样做吗?或者我们还有其他选择来实现这一目标.请建议我们,因为我们是yocto所有功能的新手.
我创建了一个bitbake配方,它将我的两个文件(VPU的固件二进制文件)复制到目标根文件系统上的/ lib/firmware /目录中.
我尝试了很多选项,所以我现在不确定我的食谱中有什么不必要/多余以及需要什么.我认为FILESEXTRAPATHS ..,SRC_URI ..和do_install ..应该足够了,但它不适用于它,也不适用于所有其他的东西.
DESCRIPTION = "VPU libraries provided by fsl"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
PACKAGE_ARCH = "all"
ALLOW_EMPTY_${PN} = "1"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += " \
file://vpu_fw_imx6d.bin \
file://vpu_fw_imx6q.bin \
"
INSANE_SKIP_${PN} += "installed-vs-shipped"
do_install () {
install -d ${D}${base_libdir}/firmware/
cp ${WORKDIR}/vpu_fw_imx6d.bin ${D}${base_libdir}/firmware/
cp ${WORKDIR}/vpu_fw_imx6q.bin ${D}${base_libdir}/firmware/
chmod 755 ${D}${base_libdir}/firmware/vpu_fw_imx6d.bin
chmod 755 ${D}${base_libdir}/firmware/vpu_fw_imx6q.bin
}
PACKAGES = "${PN}"
FILES_${PN} += " \
${D}${base_libdir}/firmware/vpu_fw_imx6d.bin \
${D}${base_libdir}/firmware/vpu_fw_imx6q.bin \
"
Run Code Online (Sandbox Code Playgroud)
能不能指出我做错了什么?
编辑:
安德斯答案真的帮助并解决了这个问题.
我发布"固定"食谱,以防有人发现它有用.
DESCRIPTION = "VPU libraries …Run Code Online (Sandbox Code Playgroud) 我有一个'二进制'(即不编译)文件的目录,只是希望它们安装到我的目标根文件系统上.
我看过几篇文章,其中没有一篇似乎对我有用.
此配方所需的功能是:
myRecipe/myFiles/ - > myRootFs/dir/to/install
我目前的尝试是:
SRC_URI += "file://myDir"
do_install() {
install -d ${D}/path/to/dir/on/fs
install -m ${WORKDIR}/myDir ${D}/path/to/dir/on/fs
}
Run Code Online (Sandbox Code Playgroud)
我不能总是抱怨Yocto文档,这真的很棒!只是找不到这样的例子!
嗨,这是我的图层树
??? conf
? ??? layer.conf
??? COPYING.MIT
??? README
??? recipes-hello
??? helloworld
? ??? helloworld-0.1
? ? ??? helloworld.c
? ? ??? helloworld.patch
? ? ??? newhelloworld.c
? ??? helloworld_0.1.bb
??? message
? ??? message-0.1
? ? ??? message.txt
? ??? message_0.1.bb
??? service
??? service-0.1
? ??? test_systemd.service
? ??? test_systemd.sh
??? service_0.1.bb
Run Code Online (Sandbox Code Playgroud)
这里test_systemd.service是必须调用test_systemd.sh的服务文件,我试图使用service_0.1.bb来实现
# This recipe performs the following tasks
# 1) Install .sh file in /home/root/ and .sh script creates a random text file
# …Run Code Online (Sandbox Code Playgroud) Linux marvin 3.16-0.bpo.2-amd64 #1 SMP Debian 3.16.3-2~bpo70+1 (2014-09-21) x86_64 GNU/Linux 我希望能够在我的RPi2上运行它:
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtWebEngine 1.0
ApplicationWindow {
width: 1280
height: 720
visible: true
WebEngineView {
id: webview
url: "http://www.qt-project.org"
anchors.fill: parent
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用Yocto成功为我的RPi2创建了一个图像,使用这个独特而神奇的葡萄牙语教程,这个用英语写的
在几行之后,我如何能够为我的RPi2生成图像
mkdir -p ~/yocto/dl
cd ~/yocto
git clone -b dizzy git://git.yoctoproject.org/poky poky-dizzy
cd poky-dizzy
git clone git://git.yoctoproject.org/meta-raspberrypi
git clone -b dizzy https://github.com/meta-qt5/meta-qt5.git
git clone -b dizzy git://git.openembedded.org/meta-openembedded
git …Run Code Online (Sandbox Code Playgroud) 如果我想禁用特定的构建步骤,我可以使用以下任一方法:
do_configure[noexec] = "1"
Run Code Online (Sandbox Code Playgroud)
要么
do_configure() {
}
Run Code Online (Sandbox Code Playgroud)
这些替代品有什么区别?我听说使用时会有提高的条件noexec.
我已经尝试了很长时间没有运气修改内核配置.:-(
meta-xxx-yyy /中有一个BSP,配有recipes-kernel/linux/linux_git.bb.我尝试覆盖名为meta-xxx-mylayer的层中的内核配置,其中我有recipes-kernel/linux/linux_git.bbappend和recipes-kernel/linux/files/frag.cfg
frag.cfg:
# CONFIG_NETFILTER is not set
CONFIG_AUTOFS4_FS=y
Run Code Online (Sandbox Code Playgroud)
linux_git.bbappend:
COMPATIBLE_MACHINE_my_mach = "my_mach"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://frag.cfg"
Run Code Online (Sandbox Code Playgroud)
linux_git.bb :(只是文件的一部分)
KERNEL_RELEASE = "3.10"
PV = "3.10"
PR = "r10"
S = "${WORKDIR}/git"
COMPATIBLE_MACHINE = "(my_mach)"
Run Code Online (Sandbox Code Playgroud)
meta-xxx-yyy/conf/machine/my_mach.conf :(没有meta-xxx-mylayer/conf/machine/my_mach.conf)
PREFERRED_PROVIDER_virtual/kernel = "linux"
UBOOT_MACHINE = "socfpga_cyclone5_config"
KERNEL_MACHINE = "socfpga"
Run Code Online (Sandbox Code Playgroud)
构建命令:
bitbake linux -c cleansstate -f
bitbake linux -c configure -f
bitbake linux -c compile -f
bitbake linux -c deploy -f
Run Code Online (Sandbox Code Playgroud)
一切都在构建,但是当我检查/proc/config.gz时,我可以看到CONFIG_AUTOFS4_FS未启用.
我在meta-xxx-mylayer层中有另一个配方,它可以很好地构建和安装到rootfs中,所以我知道该层已启用.
在构建期间,frag.cfg文件被复制到./tmp/work/my_mach-poky-linux-gnueabi/linux/3.10-r10/,而其余文件位于./tmp/work/my_mach-poky-linux -gnueabi/LINUX/3.10-R10/GIT中/.那是问题吗?
我究竟做错了什么???
我知道我可以列出可能的任务:
bitbake package -c listtasks
Run Code Online (Sandbox Code Playgroud)
但是这个列表还包括需要显式调用的任务(比如do_devshell或do_clean),我希望看到运行时调用的内容:
bitbake package
Run Code Online (Sandbox Code Playgroud)
查看使用'bitbake -e package'获得的输出也没有提供我能够解析的大量信息.
鉴于在添加任务时必须使用"之前"和"之后"明确定义任务的顺序,我希望它以某种形式存储.
yocto ×10
bitbake ×7
linux-kernel ×2
copy ×1
directory ×1
header-files ×1
linux ×1
openembedded ×1
path ×1
qt ×1
qtwebengine ×1
qtwebkit ×1
recipe ×1
uri ×1