Yocto linux模块配方do_package_qa错误

时间:2016-06-29 12:41:53

标签: yocto bitbake

在使用Yesto版本的Freescale / NXP SDK v2.0时,在Yocto版本的Freescale / NXP SDK v1.8中运行良好的Linux内核模块配方会导致do_package_qa出错。如下错误:

  

错误:QA问题:kernel-module-r8168配方中的文件不应该   包含$ {D}变量,因为它引用了本地构建目录   不是目标文件系统,最好的解决方案是删除$ {D}   参考文献[expanded-d]
  错误:QA运行发现致命错误。请考虑修理它们   错误:功能失败:do_package_qa

内核模块配方本身不包含$ {D},但它在我的模块配方继承的module.bbclass中使用

如下我的模块食谱:

SUMMARY = "Realtek r8168 family driver Linux kernel module" 
LICENSE = "GPLv2" 
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"

inherit module

PN = "r8168" 
PV = "8.041.01"

SRC_URI = "file://r8168-8.041.01.tgz \
           file://COPYING \
          "

SRC_URI[md5sum] = "f3fd1530132ed1b64345698f89beea0f"

S = "${WORKDIR}"

KERNEL_MODULE_AUTOLOAD += "r8168"

我发现与SDK 1.8 Yocto版本相比,SDK 2.0 Yocto版本的insane.bbclass中添加了$ {D}变量检查。

我有以下问题:

  1. 这是Yocto的错误吗?
  2. 我该如何解决或修复它?
  3. log.do_package_qa.526:

    DEBUG: Executing python function sstate_task_prefunc
    DEBUG: Python function sstate_task_prefunc finished
    DEBUG: Executing python function do_package_qa
    NOTE: DO PACKAGE QA
    DEBUG: Executing python function read_subpackage_metadata
    DEBUG: Python function read_subpackage_metadata finished
    NOTE: Checking Package: r8168
    NOTE: Checking Package: r8168-doc
    NOTE: Checking Package: r8168-dbg
    NOTE: Checking Package: r8168-staticdev
    NOTE: Checking Package: r8168-locale
    NOTE: Checking Package: r8168-dev
    NOTE: Checking Package: kernel-module-r8168
    NOTE: arm-fsl-linux-gnueabi-objdump -p /local/ctrommel/QorIQ-SDK-V2.0-20160527-yocto/build_ls1021atwr/tmp/work/ls1021at
    wr-fsl-linux-gnueabi/r8168/8.041.01-r0/packages-split/kernel-module-r8168/lib/modules/4.1.8-rt8+gbd51baf/local/ctrommel
    /QorIQ-SDK-V2.0-20160527-yocto/build_ls1021atwr/tmp/work/ls1021atwr-fsl-linux-gnueabi/r8168/8.041.01-r0/image/r8168.ko
    ERROR: QA Issue: FILES in kernel-module-r8168 recipe should not contain the ${D} variable as it references the local bu
    ild directory not the target filesystem, best solution is to remove the ${D} reference [expanded-d]
    ERROR: QA run found fatal errors. Please consider fixing them.
    DEBUG: Python function do_package_qa finished
    ERROR: Function failed: do_package_qa
    

3 个答案:

答案 0 :(得分:0)

在某个地方你会发现其中一个软件包的.offer-detail-image { display: block; overflow: visible; width: 100%; height: auto; margin-right: auto; margin-bottom: 12px; margin-left: auto; float: none; }值为${D} - 这是不正确的。 FILES用于指定目标上显示的路径,因此您不会在临时安装目录FILES前添加前缀。

我无法确定这是什么意思 - 它不太可能成为Yocto Project提供元数据的一部分,但是bitbake -e yourrecipe |更少,然后搜索(使用'/')${D},你应该能够确切地看到设置了违规值的位置。

答案 1 :(得分:0)

将以下行添加到模块配方中将解决此问题:

INSANE_SKIP_kernel-module-${PN} = "expanded-d"

因为在跳过QA检查后构建成功(模块已添加到图像中),我更确信这是一个错误。

答案 2 :(得分:0)

这不是Yocto的错误。这是添加模块的Makefile中的问题。此Makefile是设备供应商提供的驱动程序的Makefile的修改版本。原始Makefile包含make标志INSTALL_MOD_DIR,值被修改为INSTALL_MOD_DIR = $(INSTALL_MOD_PATH)。假设INSTALL_MOD_PATH是目标模块安装路径,但它是包含$ {D}的主机模块安装路径。所以Yocto提出的错误是正确的。 从Makefile中删除make标志可以解决问题。