Dear Maintainer,
I just tried to have a look and might found something.
As far as I see ldd searches the shared objects based on the RPATH in
the executable:
benutzer@debian:~$ ldd /usr/bin/CloudCompare | grep "not found"
libQCC_IO_LIB.so => not found
libQCC_DB_LIB.so => not found
libCC_CORE_LIB.so => not found
benutzer@debian:~$ chrpath /usr/bin/CloudCompare
/usr/bin/CloudCompare: RUNPATH=lib/x86_64-linux-gnu/cloudcompare
I tried to find a similar situation in another binary and found paplay:
benutzer@debian:~$ chrpath -l /usr/bin/paplay
/usr/bin/paplay: RUNPATH=/usr/lib/x86_64-linux-gnu/pulseaudio
So I guess this relative path in CloudCompare seems to be the issue.
This seems to be set when installed to the packaging directory [1]:
-- Installing: /<<PKGBUILDDIR>>/debian/cloudcompare/usr/bin/CloudCompare
-- Set runtime path of
"/<<PKGBUILDDIR>>/debian/cloudcompare/usr/bin/CloudCompare" to
"lib/x86_64-linux-gnu/cloudcompare"
-- Installing:
/<<PKGBUILDDIR>>/debian/cloudcompare/usr/share/cloudcompare/CHANGELOG.md
I found this file in which CMAKE_INSTALL_RPATH gets set:
./CMakeLists.txt:34: set(CMAKE_INSTALL_RPATH
"${CMAKE_INSTALL_LIBDIR}/cloudcompare")
As far as I see CMAKE_INSTALL_LIBDIR is given by dh_auto_configure
and therefore may be meant to be a relative path.
Therefore I searched other examples of setting CMAKE_INSTALL_RPATH
and found that a package built with following change at least
shows no longer an error in ldd.
+++ cloudcompare-2.10.1/CMakeLists.txt
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_LIBDIR}/cloudcompare")
+ set(CMAKE_INSTALL_RPATH
"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/cloudcompare")
Kind regards,
Bernhard
[1]
https://buildd.debian.org/status/fetch.php?pkg=cloudcompare&arch=amd64&ver=2.10.1-1&stamp=1547783795&raw=0
Description: Modify CMAKE_INSTALL_RPATH to have an absolute path
Author: Bernhard Ãbelacker <[email protected]>
Bug: https://github.com/CloudCompare/CloudCompare/issues/861
Bug-Debian: https://bugs.debian.org/928986
Forwarded: no
Last-Update: 2019-05-15
--- cloudcompare-2.10.1.orig/CMakeLists.txt
+++ cloudcompare-2.10.1/CMakeLists.txt
@@ -31,7 +31,7 @@ if( UNIX AND NOT APPLE )
if( NOT CMAKE_INSTALL_LIBDIR )
set( CMAKE_INSTALL_LIBDIR ${CMAKE_INSTALL_PREFIX}/lib CACHE PATH "CloudCompare lib dir" )
endif( NOT CMAKE_INSTALL_LIBDIR )
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_LIBDIR}/cloudcompare")
+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/cloudcompare")
endif()
# CCViewer