Subject: Re: [bug#40492] [PATCH] gnu: Add meshlab

From: Ekaitz Zarraga <[email-masked]>
Date: Wed, 22 Apr 2020 18:40:31 +0000

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, April 22, 2020 7:23 PM, Ludovic Courtès <[email-masked]> wrote:

> Hi,
>
> Ekaitz Zarraga [email-masked] skribis:
>
> > I wrote a package to add meshlab but I'm not sure if I did it right:
> >
> > -   It doesn't have tests so I removed the testing.
>
> Please add a short comment in the code saying this so that people
> touching the package in the future will know.
>
> > -   It fails to check RUNPATH, but I don't really know why so I disabled
> >     it at the moment. It fails while searching for meshlab core libraries
> >     but the search path is correct (it misses a /meshlab at the end).
> >
>
> Could you show the error message? It may be that the build system fails
> to pass the right -Wl,-rpath or even the right -L/-l flags at link time.
>
> > > From d9020d7e64020dc7eea1bd46af184856d568ca7d Mon Sep 17 00:00:00 2001
> > > From: Ekaitz Zarraga [email-masked]
> > > Date: Tue, 7 Apr 2020 18:56:06 +0200
> > > Subject: [PATCH] gnu: Add meshlab
> >
> > gnu/packages/engineering.scm | 39 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 39 insertions(+)
>
> Bonus points if you can provide a commit log that follows our
> conventions. :-) See
> https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html and
> ‘git log’ for examples.
>
> > +(define-public meshlab
> >
> > -   (let ((commit-ref "Meshlab-2020.04"))
> > -   (package
> > -        (name "meshlab")
> >
> >
> > -        (version commit-ref)
> >
> >
>
> The version field should be “2020.04”. You can construct the commit
> from that:
>
> (string-append "Meshlab-" version)
>
> > -        (synopsis
> >
> >
> > -          "The open source system for processing and editing 3D triangular meshes.")
> >
> >
> > -        (home-page "http://www.meshlab.net/")
> >
> >
> > -        (description "MeshLab is an open source, portable, and extensible system
> >
> >
>
> Two comments:
>
> 1.  Everything in Guix is free software, you can remove the “open
>     source” mention.
>
> 2.  Please make sure to run ‘guix lint’ and check the guidelines at
>     https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html.
>
>
> Could you send an updated patch?
>
> Thanks in advance!
>
> Ludo’.

Hi Ludo,

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 what to change.

This is the error of the file libsamplefilter.so during the runpath check:

/gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib/meshlab/plugins/libsamplefilter.so: error: depends on 'libmeshlab-common.so', which cannot be found in RUNPATH ("/gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib" "/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-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/store/2k1bsh663bilxndca4gx4zrdp7m63fjb-qtxmlpatterns-5.12.7/lib" "/gnu/store/2mf0clz9w64diy0kz11qcs4q5wg9hc6z-mesa-19.3.4/lib" "/gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib/lib/gcc/x86_64-unknown-linux-gnu/7.4.0/../../..")
/gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib/meshlab/plugins/libsamplefilterdyn.so: error: depends on 'libmeshlab-common.so', which cannot be found in RUNPATH ("/gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib" "/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-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/store/2k1bsh663bilxndca4gx4zrdp7m63fjb-qtxmlpatterns-5.12.7/lib" "/gnu/store/2mf0clz9w64diy0kz11qcs4q5wg9hc6z-mesa-19.3.4/lib" "/gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib/lib/gcc/x86_64-unknown-linux-gnu/7.4.0/../../..")
validating RUNPATH of 2 binaries in "/gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/bin"...

But the first element in the RUNPATH is the place where the library is. This is the library's path:

/gnu/store/lcpp0gpispfqw8zna2mjrr6cwj3ih133-meshlab-Meshlab-2020.04/lib/meshlab/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/sampleplugins/samplefilter && /gnu/store/iz9500ssxcqlyr74hg1jq10ycrh42yq1-cmake-minimal-3.15.1/bin/cmake -E cmake_link_script CMakeFiles/samplefilter.dir/link.txt --verbose=1
/gnu/store/x3jx25cd3q363mr7nbgzrhrv1vza6cf7-gcc-7.4.0/bin/c++ -fPIC -O2 -g -DNDEBUG  -Wl,--no-undefined -shared  -o ../../distrib/plugins/libsamplefilter.so CMakeFiles/samplefilter.dir/samplefilter_autogen/mocs_compilation.cpp.o CMakeFiles/samplefilter.dir/samplefilter.cpp.o -Wl,-rpath,/tmp/guix-build-meshlab-Meshlab-2020.04.drv-0/source/build/common:::::: ../../common/libmeshlab-common.so /gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib/libQt5OpenGL.so.5.12.7 /gnu/store/qbq794vbw5scpxvnzlnyvdkqfr9163rk-qtscript-5.12.7/lib/libQt5Script.so.5.12.7 /gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib/libQt5Widgets.so.5.12.7 /gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib/libQt5Gui.so.5.12.7 /gnu/store/n6ji2fxg1cn6abd2bn2jd14pglyblysr-qtbase-5.12.7/lib/libQt5Xml.so.5.12.7 /gnu/store/2k1bsh663bilxndca4gx4zrdp7m63fjb-qtxmlpatterns-5.12.7/lib/libQt5XmlPatterns.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/2mf0clz9w64diy0kz11qcs4q5wg9hc6z-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?

If I need to change that, what do I have to do?

Sorry for the inconvenience, but I'm a little bit lost on this.

Thank you,

Ekaitz