在使用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}变量检查。
我有以下问题:
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
答案 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标志可以解决问题。