From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:56488) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jRLRa-0008Fa-Kf for guix-patches@gnu.org; Wed, 22 Apr 2020 15:54:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jRLRa-0008RS-0a for guix-patches@gnu.org; Wed, 22 Apr 2020 15:54:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:41808) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jRLRZ-0008Qm-Km for guix-patches@gnu.org; Wed, 22 Apr 2020 15:54:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jRLRZ-0006d8-Ib for guix-patches@gnu.org; Wed, 22 Apr 2020 15:54:01 -0400 Subject: [bug#40492] [PATCH] gnu: Add meshlab Resent-Message-ID: From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <_UXapokzwPRYl41j0bjkPGSDUNXahWNWsEn72py7ch7Rd6DBsxW9B8rw8wTbmzj1O2HfWXz7XLbEdWCYQsFCa5DgMlGn0CKVPr779J2PFuo=@elenq.tech> <87a733v3hh.fsf@gnu.org> Date: Wed, 22 Apr 2020 21:52:56 +0200 In-Reply-To: (Ekaitz Zarraga's message of "Wed, 22 Apr 2020 18:40:31 +0000") Message-ID: <87wo67ti07.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ekaitz Zarraga Cc: "40492@debbugs.gnu.org" <40492@debbugs.gnu.org> Egun on, :-) Ekaitz Zarraga skribis: > Thanks for the detailed answer. I'll check the formatting errors. > About the RUNPATH checks, I isolated one of the errors and I don't know w= hat to change. > > This is the error of the file libsamplefilter.so during the runpath check: > > /gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib/m= eshlab/plugins/libsamplefilter.so: error: depends on 'libmeshlab-common.so'= , which cannot be found in RUNPATH ("/gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3= ih133-meshlab-Meshlab-2020.04/lib" "/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nh= y4pj-glibc-2.29/lib" "/gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0= -lib/lib" "/gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib" "= /gnu/store/qbq794vbw5scpxvnzlnyvdkqfr9163rk-qtscript-5.12.7/lib" "/gnu/stor= e/2k1bsh663bilxndca4gx4zrdp7m63fjb-qtxmlpatterns-5.12.7/lib" "/gnu/store/2m= f0clz9w64diy0kz11qcs4q5wg9hc6z-mesa-19.3.4/lib" "/gnu/store/2plcy91lypnbbys= b18ymnhaw3zwk8pg1-gcc-7.4.0-lib/lib/gcc/x86_64-unknown-linux-gnu/7.4.0/../.= ./..") > /gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib/m= eshlab/plugins/libsamplefilterdyn.so: error: depends on 'libmeshlab-common.= so', which cannot be found in RUNPATH ("/gnu/store/lcpp0gpispfqw8zna2mjrr6c= wj3ih133-meshlab-Meshlab-2020.04/lib" "/gnu/store/ahqgl4h89xqj695lgqvsaf6zh= 2nhy4pj-glibc-2.29/lib" "/gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.= 4.0-lib/lib" "/gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib= " "/gnu/store/qbq794vbw5scpxvnzlnyvdkqfr9163rk-qtscript-5.12.7/lib" "/gnu/s= tore/2k1bsh663bilxndca4gx4zrdp7m63fjb-qtxmlpatterns-5.12.7/lib" "/gnu/store= /2mf0clz9w64diy0kz11qcs4q5wg9hc6z-mesa-19.3.4/lib" "/gnu/store/2plcy91lypnb= bysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib/lib/gcc/x86_64-unknown-linux-gnu/7.4.0/.= ./../..") > validating RUNPATH of 2 binaries in "/gnu/store/lcpp0gpispfqw8zna2mjrr6cw= j3ih133-meshlab-Meshlab-2020.04/bin"... > > But the first element in the RUNPATH is the place where the library is. T= his is the library's path: > > /gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib/m= eshlab/libmeshlab-common.so > > > This is the linking of the libsamplefilter.so file: > > [ 98%] Linking CXX shared module ../../distrib/plugins/libsamplefilter.so > cd /tmp/guix-build-meshlab-Meshlab-2020.04.drv-0/source/build/sampleplugi= ns/samplefilter && /gnu/store/iz9500ssxcqlyr74hg1jq10ycrh42yq1-cmake-minima= l-3.15.1/bin/cmake -E cmake_link_script CMakeFiles/samplefilter.dir/link.tx= t --verbose=3D1 > /gnu/store/x3jx25cd3q363mr7nbgzrhrv1vza6cf7-gcc-7.4.0/bin/c++ -fPIC -O2 -= g -DNDEBUG -Wl,--no-undefined -shared -o ../../distrib/plugins/libsamplef= ilter.so CMakeFiles/samplefilter.dir/samplefilter_autogen/mocs_compilation.= cpp.o CMakeFiles/samplefilter.dir/samplefilter.cpp.o -Wl,-rpath,/tmp/guix-b= uild-meshlab-Meshlab-2020.04.drv-0/source/build/common:::::: ../../common/l= ibmeshlab-common.so /gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12= .7/lib/libQt5OpenGL.so.5.12.7 /gnu/store/qbq794vbw5scpxvnzlnyvdkqfr9163rk-q= tscript-5.12.7/lib/libQt5Script.so.5.12.7 /gnu/store/n6ji2fxg1cn6abd2bn2jd1= 4pglyblysr-qtbase-5.12.7/lib/libQt5Widgets.so.5.12.7 /gnu/store/n6ji2fxg1cn= 6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib/libQt5Gui.so.5.12.7 /gnu/store/n6ji= 2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib/libQt5Xml.so.5.12.7 /gnu/sto= re/2k1bsh663bilxndca4gx4zrdp7m63fjb-qtxmlpatterns-5.12.7/lib/libQt5XmlPatte= rns.so.5.12.7 /gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib= /libQt5Network.so.5.12.7 /gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase= -5.12.7/lib/libQt5Core.so.5.12.7 ../../libexternal-glew.a /gnu/store/2mf0cl= z9w64diy0kz11qcs4q5wg9hc6z-mesa-19.3.4/lib/libGL.so > > The -rpath and -Wl are set to /tmp/guix-build-meshlab-Meshlab-2020.04.drv= -0/source/build/common > but it should be set to the directory it showed previously, right? Not really, I think CMake initially sets the RUNPATH to the build tree, as shown above, that=E2=80=99s OK. I think it changes it upon =E2=80=9Cmak= e install=E2=80=9D. > If I need to change that, what do I have to do? One way to fix it would be to arrange to pass =E2=80=98-Wl,-rpath,'$ORIGIN'= =E2=80=99 on the link command line of the plugins. Another solution would be to add a post-install phase to move libmeshlab-common.so* to $output/lib, which seems more conventional, though perhaps upstream had good reasons not to do that. HTH! Ludo=E2=80=99.