Yocto - Files/directories 已安装但未在任何包裹中发货
Yocto - Files/directories were installed but not shipped in any package
我正在使用 Yocto 安装 clBLAS 库(https://github.com/clMathLibraries/clBLAS) using the recipe 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
文件夹中?
将以下行添加到您的 clblas_git.bb
FILES_${PN} += "${libdir}/*"
FILES_${PN}-dev = "${libdir}/* ${includedir}"
好的解释你会明白的
问题是在构建过程中没有正确考虑 multilib,查看 clBLAS 中的 cmake 文件,它使用 CMake 变量构建 multilib 路径 SUFFIX_LIB and yocto recipe is setting it to be empty 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"
我正在使用 Yocto 安装 clBLAS 库(https://github.com/clMathLibraries/clBLAS) using the recipe 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
文件夹中?
将以下行添加到您的 clblas_git.bb
FILES_${PN} += "${libdir}/*"
FILES_${PN}-dev = "${libdir}/* ${includedir}"
好的解释你会明白的
问题是在构建过程中没有正确考虑 multilib,查看 clBLAS 中的 cmake 文件,它使用 CMake 变量构建 multilib 路径 SUFFIX_LIB and yocto recipe is setting it to be empty 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"