Yocto linux模块配方do_包_qa错误

Yocto linux模块配方do_包_qa错误,yocto,bitbake,Yocto,Bitbake,Linux内核模块配方在Freescale/NXP SDK v1.8的Yocto版本中运行良好,在使用Freescale/NXP SDK v2.0的Yocto版本时,会导致do_package_qa出错。错误如下: 错误:QA问题:kernel-module-r8168配方中的文件不应 包含${D}变量,因为它引用本地生成目录 不是目标文件系统,最好的解决方案是删除${D} 参考文献[expanded-d] 错误:QA运行发现致命错误。请考虑修理它们。 错误:函数失败:do_package_qa

Linux内核模块配方在Freescale/NXP SDK v1.8的Yocto版本中运行良好,在使用Freescale/NXP SDK v2.0的Yocto版本时,会导致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"
我发现${D}变量检查已添加到insane.bbclass的SDK 2.0 Yocto版本中,与SDK 1.8 Yocto版本相比

我有以下问题:

  • 这是Yocto里的虫子吗
  • 我如何解决它或修复它
  • log.do_包_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
    

    在某个地方,您会发现其中一个包的
    文件
    的值中引用了
    ${D}
    ,这是不正确的<代码>文件用于指定目标上显示的路径,因此您不会在它们前面加上临时安装目录
    ${D}


    我不能确定这将在哪里-这不可能是Yocto项目提供的元数据的一部分,但是bitbake-e yourrecipe | less,然后搜索(使用“/”)
    \$\{D\}
    ,您应该能够准确地看到错误值的设置位置。

    在某个地方,您会发现对
    ${D}的引用
    在其中一个软件包的
    文件的值中-这是不正确的<代码>文件
    用于指定目标上显示的路径,因此您不会在它们前面加上临时安装目录
    ${D}


    我不能确定这会在哪里——它不太可能是Yocto项目提供的元数据的一部分,但是bitbake-e yourrecipe | less,然后搜索(使用“/”)
    \$\{D\}
    ,您应该能够准确地看到违规值的设置位置。

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

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

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

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

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

    由于跳过QA检查后构建成功(模块被添加到图像中),我更确信这是一个bug。

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

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

    您能给我们一个飞思卡尔NXP SDK的链接吗?最好是git回购(如果有)。据我所知,在标准YP 2.0版本中构建外部内核模块没有任何价值。您是否也可以提供日志文件的内容:log.do_package_qa以获取相关配方?在您向NXP注册后,可以从NXP网站下载QorIQ SDK。我无法提供链接,您必须搜索“QorIQ SDK”才能找到我们的下载页面。此问题可通过“YP Core-Krogoth 2.1”复制。因此,NXP SDK添加不是根本原因。我检查了在rootfs中添加模块的位置,发现模块路径包括扩展的${D}(./lib/modules/4.1.8-rt8+gbd51baf/local/ctrommel/QorIQ-SDK-V2.0-20160527-yocto/b)‌​uild_ls1021atwr/tmp/work/ls1021atwr fsl linux gnueabi/r8168/8.041.01-r0/image/r81‌​68.ko)。因此,错误消息是正确的,但它似乎不会造成伤害,因为模块无论如何都会以荒谬的长路径加载。问题是这是一个bug还是我添加内核模块的方式不对?你能给我们一个飞思卡尔NXP SDK的链接吗?最好是git回购(如果有)。据我所知,在标准YP 2.0版本中构建外部内核模块没有任何价值。您是否也可以提供日志文件的内容:log.do_package_qa以获取相关配方?在您向NXP注册后,可以从NXP网站下载QorIQ SDK。我无法提供链接,您必须搜索“QorIQ SDK”才能找到我们的下载页面。此问题可通过“YP Core-Krogoth 2.1”复制。因此,NXP SDK添加不是根本原因。我检查了在rootfs中添加模块的位置,发现模块路径包括扩展的${D}(./lib/modules/4.1.8-rt8+gbd51baf/local/ctrommel/QorIQ-SDK-V2.0-20160527-yocto/b)‌​uild_ls1021atwr/tmp/work/ls1021atwr fsl linux gnueabi/r8168/8.041.01-r0/image/r81‌​68.ko)。因此,错误消息是正确的,但它似乎不会造成伤害,因为模块无论如何都会以荒谬的长路径加载。问题仍然是这是一个bug还是我以错误的方式添加了内核模块?${D}在module.bbclass中使用,该module.bbclass由我的r8168_8.041.01.bb继承。M