【问题标题】:Parsing error while building images for Raspberry pi 3 using yocto使用 yocto 为 Raspberry pi 3 构建图像时出现解析错误
【发布时间】:2017-07-10 21:56:01
【问题描述】:

我正在尝试通过引用this 使用 yocto 为 Raspberry pi 3 构建映像,但在运行 bitbake 命令时出现以下错误。

在错误日志中,执行 python 函数时出现错误,但没有关于错误的详细信息,我可以看到异常 “异常:TypeError:getVar() 至少需要 3 个参数(给定 2 个)” 。但是在 yocto 很多地方我可以看到 getVar 只接受两个参数。

您能否指导解决此问题。我可以在很多地方看到 d.getVar(),你能告诉我这里的 d 是什么吗,我在 yocto 文档中搜索但没有找到任何解释什么是 d 的信息。

ERROR: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb: Error executing a python function in <code>:

The stack trace of python calls that resulted in this exception/failure was: File: '<code>', lineno: 17, function: <module>
     0013:__anon_146__home_ubuntu_raspberryYocto_poky_meta_classes_siteinfo_bbclass(d)
     0014:__anon_381__home_ubuntu_raspberryYocto_poky_meta_classes_kernel_yocto_bbclass(d)
     0015:__anon_6__home_ubuntu_raspberryYocto_poky_meta_recipes_kernel_linux_linux_dtb_inc(d)
     0016:__anon_148__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_rpi_inc(d)  *** 0017:__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc(d) File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc', lineno: 38, function:
__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc
     0034:# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
     0035:python __anonymous () {
     0036:    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
     0037:    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))  *** 0038:    d.setVar("KERNEL_DEVICETREE", kerneldt)
     0039:}
     0040:
     0041:do_kernel_configme_prepend() {
     0042:    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass', lineno: 6, function: get_dts
     0002:
     0003:def get_dts(d, ver=None):
     0004:    import re
     0005:  *** 0006:    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR")
     0007:    dts = d.getVar("KERNEL_DEVICETREE")
     0008:
     0009:    # d.getVar() might return 'None' as a normal string
     0010:    # leading to 'is None' check isn't enough. Exception: TypeError: getVar() takes at least 3 arguments (2 given)

ERROR: Failed to parse recipe: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb ERROR: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb: Error executing a python function in <code>:

The stack trace of python calls that resulted in this exception/failure was: File: '<code>', lineno: 17, function: <module>
     0013:__anon_146__home_ubuntu_raspberryYocto_poky_meta_classes_siteinfo_bbclass(d)
     0014:__anon_381__home_ubuntu_raspberryYocto_poky_meta_classes_kernel_yocto_bbclass(d)
     0015:__anon_6__home_ubuntu_raspberryYocto_poky_meta_recipes_kernel_linux_linux_dtb_inc(d)
     0016:__anon_148__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_rpi_inc(d)  *** 0017:__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc(d) File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc', lineno: 38, function:
__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc
     0034:# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
     0035:python __anonymous () {
     0036:    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
     0037:    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))  *** 0038:    d.setVar("KERNEL_DEVICETREE", kerneldt)
     0039:}
     0040:
     0041:do_kernel_configme_prepend() {
     0042:    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass', lineno: 6, function: get_dts
     0002:
     0003:def get_dts(d, ver=None):
     0004:    import re
     0005:  *** 0006:    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR")
     0007:    dts = d.getVar("KERNEL_DEVICETREE")
     0008:
     0009:    # d.getVar() might return 'None' as a normal string
     0010:    # leading to 'is None' check isn't enough. Exception: TypeError: getVar() takes at least 3 arguments (2 given)

ERROR: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_dev.bb: Error executing a python function in <code>:

The stack trace of python calls that resulted in this exception/failure was: File: '<code>', lineno: 17, function: <module>
     0013:__anon_146__home_ubuntu_raspberryYocto_poky_meta_classes_siteinfo_bbclass(d)
     0014:__anon_381__home_ubuntu_raspberryYocto_poky_meta_classes_kernel_yocto_bbclass(d)
     0015:__anon_6__home_ubuntu_raspberryYocto_poky_meta_recipes_kernel_linux_linux_dtb_inc(d)
     0016:__anon_148__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_rpi_inc(d)  *** 0017:__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc(d) File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc', lineno: 38, function:
__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc
     0034:# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
     0035:python __anonymous () {
     0036:    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
     0037:    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))  *** 0038:    d.setVar("KERNEL_DEVICETREE", kerneldt)
     0039:}
     0040:
     0041:do_kernel_configme_prepend() {
     0042:    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass', lineno: 6, function: get_dts
     0002:
     0003:def get_dts(d, ver=None):
     0004:    import re
     0005:  *** 0006:    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR")
     0007:    dts = d.getVar("KERNEL_DEVICETREE")
     0008:
     0009:    # d.getVar() might return 'None' as a normal string
     0010:    # leading to 'is None' check isn't enough. Exception: TypeError: getVar() takes at least 3 arguments (2 given)

【问题讨论】:

  • getVar 函数{getVar(var, d, exp = False)} 定义在 data.py(available @ bitbake/lib/bb) 内部调用 {d.getVar(var, exp) }。我在 bb 文件中添加了“导入数据”,但它在导入语句中给出了解析错误。当我尝试添加 inc 文件时也出现同样的问题。你能帮助如何在“meta-raspberrypi”层中导入这个data.py吗?

标签: python linux raspberry-pi yocto


【解决方案1】:

我遇到了同样的问题,并通过切换到 meta-raspberrypi 层上的 morty 分支来修复,该分支与我的 poky 环境的分支相同。

【讨论】:

  • 感谢您的信息。它有助于解决问题。我已经切换到 krogoth 分支,因为 poky 分支是 krogoth 并且它有效。
猜你喜欢
  • 1970-01-01
  • 2019-12-08
  • 2020-01-01
  • 2018-01-29
  • 2023-03-21
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
相关资源
最近更新 更多