Yocto - 文件/目录已安装但未包含在任何软件包中

23
我正在使用Yocto来安装clBLAS库(https://github.com/clMathLibraries/clBLAS),使用的配方为https://github.com/CogentEmbedded/meta-opencl/blob/master/meta-ocl-common/recipes-graphics/clblas/clblas_git.bb
但是每次都会收到以下警告,而且.so文件没有出现在构建的映像中。
WARNING: QA Issue: clblas: Files/directories were installed but not shipped in any package:
  /usr/lib
  /usr/lib/libclBLAS.so.2.12.0
  /usr/lib/libclBLAS.so.2
  /usr/lib/libclBLAS.so
  /usr/lib/.debug
  /usr/lib/pkgconfig
  /usr/lib/cmake
  /usr/lib/.debug/libclBLAS.so.2.12.0
  /usr/lib/pkgconfig/clBLAS.pc
  /usr/lib/cmake/clBLAS
  /usr/lib/cmake/clBLAS/clBLASTargets-debug.cmake
  /usr/lib/cmake/clBLAS/clBLASConfigVersion.cmake
  /usr/lib/cmake/clBLAS/clBLASTargets.cmake
  /usr/lib/cmake/clBLAS/clBLASConfig.cmake
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
clblas: 14 installed and not shipped files. [installed-vs-shipped]

如何克服此警告并使.so文件出现在目标的/usr/lib文件夹中?
3个回答

20

请将以下内容添加到您的clblas_git.bb文件中

 FILES_${PN} += "${libdir}/*"
 FILES_${PN}-dev = "${libdir}/* ${includedir}"

你可以在这里找到一个好的解释。


2
谢谢,Siva.v。您能告诉我为什么我们需要添加包含目录吗? - user8563305
答案并不是非常好,当然也不是完美的。它只是处理了症状,特别是INSANE_SKIP表示测试将被跳过,但潜在问题仍然存在。而正确的文件打包应该自动发生。 如果您可以运行'bitbake -e clblas'并发布输出(例如到pastebin),我们可能能够更好地诊断为什么默认情况下它不起作用。 - Alexander Kanavin
4
如果有人能够解释一下这个解决方案是如何工作的,那将会很有帮助。 - Roy

17

如果你正在使用新版本的Yocto,这将会有所帮助:

FILES:${PN} ="name of the dirs is not shipping";

在旧版本中,它是FILES_${PN}


那正是我的情况,说得好!谢谢 - undefined

1
问题在于构建过程中未正确考虑multilib,查看clBLAS中的cmake文件,它使用CMake变量来构建multilib路径SUFFIX_LIB,而yocto配方将其设置为空here,但它没有编码multilib路径的yocto逻辑。一个潜在的解决方法如下所示:
--- clblas_git.bb.org   2019-12-07 12:41:56.784649031 -0800
+++ clblas_git.bb       2019-12-07 12:42:25.317982206 -0800
@@ -16,7 +16,7 @@ S = "${WORKDIR}/git/src"

inherit cmake pythonnative

-EXTRA_OECMAKE += "-DSUFFIX_LIB= -DUSE_SYSTEM_GTEST=ON -DBUILD_TEST=OFF -DPREBUILT_CLT_PATH=${WORKDIR}/clt"
+EXTRA_OECMAKE += "-DSUFFIX_LIB=${@d.getVar('baselib', True).replace('lib', '')} -DUSE_SYSTEM_GTEST=ON -DBUILD_TEST=OFF -DPREBUILT_CLT_PATH=${WORKDIR}/clt"

DEPENDS += "virtual/opencl"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接