diff mbox series

[bug#40492] gnu: Add meshlab

Message ID 87blneynu0.fsf@gnu.org
State Accepted
Headers show
Series [bug#40492] gnu: Add meshlab | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job

Commit Message

Ludovic Courtès April 26, 2020, 8:49 p.m. UTC
Saluton!

Ekaitz Zarraga <ekaitz@elenq.tech> skribis:

> From 814e44cb90b1427a9af5d6a66392c5a39910e8fd Mon Sep 17 00:00:00 2001
> From: Ekaitz Zarraga <ekaitz@elenq.tech>
> Date: Tue, 7 Apr 2020 18:56:06 +0200
> Subject: [PATCH] gnu: Add meshlab.
>
>     * gnu/packages/engineering.scm (meshlab): New variable.

Great!  I added a copyright line for you, fixed up indentation (see the
bit in the manual for how to do that automatically), and added a
comment—patch attached.

It built for me, but then I realized I had missed something: the
external/ sub-directory contains lots of bundled copies of external
tools, and indeed, the ‘configure’ phase shows:

--8<---------------cut here---------------start------------->8---
-- Could NOT find Lib3ds (missing: LIB3DS_INCLUDE_DIR LIB3DS_LIBRARY) 
-- Could NOT find GMP (missing: GMP_INCLUDE_DIR GMP_LIBRARY) 
-- Could NOT find muparser (missing: MUPARSER_INCLUDE_DIR MUPARSER_LIBRARY) 
-- Could NOT find OpenCTM (missing: OPENCTM_INCLUDE_DIR OPENCTM_LIBRARY) 
-- Could NOT find Qhull (missing: QHULL_qhull_LIBRARY QHULL_qhull_INCLUDE_DIR qhull) 
-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
-- - jhead - using bundled source
-- - glew - using bundled source
-- - Eigen - using bundled source
-- - newuoa - using bundled source
-- - levmar - using bundled source
-- - lib3ds - using bundled source
-- - muparser - using bundled source
-- - OpenCTM - using bundled source
-- - structure-synth - using bundled source
-- - qhull - using bundled source
--8<---------------cut here---------------end--------------->8---

Some of these are already packaged, so it should be a matter of adding
them to ‘inputs’.  For the remaining ones, it would be extra packaging
work to do.

The goal is to address all of these, but if we can address the majority
of these, perhaps we can commit a first version of the package with a
FIXME stating what remains to be done, if you prefer.

Thanks, and apologies for overlooking it before!

Ludo’.

Comments

Ekaitz Zarraga April 26, 2020, 9 p.m. UTC | #1
On Sunday, April 26, 2020 10:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:

> Saluton!
>
> Ekaitz Zarraga ekaitz@elenq.tech skribis:
>
> > From 814e44cb90b1427a9af5d6a66392c5a39910e8fd Mon Sep 17 00:00:00 2001
> > From: Ekaitz Zarraga ekaitz@elenq.tech
> > Date: Tue, 7 Apr 2020 18:56:06 +0200
> > Subject: [PATCH] gnu: Add meshlab.
> >
> >     * gnu/packages/engineering.scm (meshlab): New variable.
> >
>
> Great! I added a copyright line for you, fixed up indentation (see the
> bit in the manual for how to do that automatically), and added a
> comment—patch attached.
>
> It built for me, but then I realized I had missed something: the
> external/ sub-directory contains lots of bundled copies of external
> tools, and indeed, the ‘configure’ phase shows:
>
> --8<---------------cut here---------------start------------->8---
> -- Could NOT find Lib3ds (missing: LIB3DS_INCLUDE_DIR LIB3DS_LIBRARY)
> -- Could NOT find GMP (missing: GMP_INCLUDE_DIR GMP_LIBRARY)
> -- Could NOT find muparser (missing: MUPARSER_INCLUDE_DIR MUPARSER_LIBRARY)
> -- Could NOT find OpenCTM (missing: OPENCTM_INCLUDE_DIR OPENCTM_LIBRARY)
> -- Could NOT find Qhull (missing: QHULL_qhull_LIBRARY QHULL_qhull_INCLUDE_DIR qhull)
> -- Found OpenMP_C: -fopenmp (found version "4.5")
> -- Found OpenMP_CXX: -fopenmp (found version "4.5")
> -- Found OpenMP: TRUE (found version "4.5")
> -- - jhead - using bundled source
> -- - glew - using bundled source
> -- - Eigen - using bundled source
> -- - newuoa - using bundled source
> -- - levmar - using bundled source
> -- - lib3ds - using bundled source
> -- - muparser - using bundled source
> -- - OpenCTM - using bundled source
> -- - structure-synth - using bundled source
> -- - qhull - using bundled source
> --8<---------------cut here---------------end--------------->8---
>
> Some of these are already packaged, so it should be a matter of adding
> them to ‘inputs’. For the remaining ones, it would be extra packaging
> work to do.
>
> The goal is to address all of these, but if we can address the majority
> of these, perhaps we can commit a first version of the package with a
> FIXME stating what remains to be done, if you prefer.
>
> Thanks, and apologies for overlooking it before!
>
> Ludo’.

Hi,

No worries, I'll try to take a look to those.

We can push it with the Fixme and I'll go adding those during these days when I'm free.

Thanks!

PS: Should I push those to the same file under engineering? or should I create a new file for meshlab and add all its dependencies there too?
Ludovic Courtès April 27, 2020, 8:03 a.m. UTC | #2
Saluton,

Ekaitz Zarraga <ekaitz@elenq.tech> skribis:

> PS: Should I push those to the same file under engineering? or should I create a new file for meshlab and add all its dependencies there too?

You can add the new packages in the file where it makes most sense,
which may or may not be engineering.scm.

Thanks for looking into it!

Ludo’.
Ludovic Courtès May 8, 2020, 2:30 p.m. UTC | #3
Saluton,

Did you have a change to look into this?

Thanks,
Ludo'.

Ekaitz Zarraga <ekaitz@elenq.tech> skribis:

> On Sunday, April 26, 2020 10:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> Saluton!
>>
>> Ekaitz Zarraga ekaitz@elenq.tech skribis:
>>
>> > From 814e44cb90b1427a9af5d6a66392c5a39910e8fd Mon Sep 17 00:00:00 2001
>> > From: Ekaitz Zarraga ekaitz@elenq.tech
>> > Date: Tue, 7 Apr 2020 18:56:06 +0200
>> > Subject: [PATCH] gnu: Add meshlab.
>> >
>> >     * gnu/packages/engineering.scm (meshlab): New variable.
>> >
>>
>> Great! I added a copyright line for you, fixed up indentation (see the
>> bit in the manual for how to do that automatically), and added a
>> comment—patch attached.
>>
>> It built for me, but then I realized I had missed something: the
>> external/ sub-directory contains lots of bundled copies of external
>> tools, and indeed, the ‘configure’ phase shows:
>>
>> --8<---------------cut here---------------start------------->8---
>> -- Could NOT find Lib3ds (missing: LIB3DS_INCLUDE_DIR LIB3DS_LIBRARY)
>> -- Could NOT find GMP (missing: GMP_INCLUDE_DIR GMP_LIBRARY)
>> -- Could NOT find muparser (missing: MUPARSER_INCLUDE_DIR MUPARSER_LIBRARY)
>> -- Could NOT find OpenCTM (missing: OPENCTM_INCLUDE_DIR OPENCTM_LIBRARY)
>> -- Could NOT find Qhull (missing: QHULL_qhull_LIBRARY QHULL_qhull_INCLUDE_DIR qhull)
>> -- Found OpenMP_C: -fopenmp (found version "4.5")
>> -- Found OpenMP_CXX: -fopenmp (found version "4.5")
>> -- Found OpenMP: TRUE (found version "4.5")
>> -- - jhead - using bundled source
>> -- - glew - using bundled source
>> -- - Eigen - using bundled source
>> -- - newuoa - using bundled source
>> -- - levmar - using bundled source
>> -- - lib3ds - using bundled source
>> -- - muparser - using bundled source
>> -- - OpenCTM - using bundled source
>> -- - structure-synth - using bundled source
>> -- - qhull - using bundled source
>> --8<---------------cut here---------------end--------------->8---
>>
>> Some of these are already packaged, so it should be a matter of adding
>> them to ‘inputs’. For the remaining ones, it would be extra packaging
>> work to do.
>>
>> The goal is to address all of these, but if we can address the majority
>> of these, perhaps we can commit a first version of the package with a
>> FIXME stating what remains to be done, if you prefer.
>>
>> Thanks, and apologies for overlooking it before!
>>
>> Ludo’.
>
> Hi,
>
> No worries, I'll try to take a look to those.
>
> We can push it with the Fixme and I'll go adding those during these days when I'm free.
>
> Thanks!
>
> PS: Should I push those to the same file under engineering? or should I create a new file for meshlab and add all its dependencies there too?
Ludovic Courtès May 8, 2020, 2:30 p.m. UTC | #4
Saluton,

Did you have a change to look into this?

Thanks,
Ludo'.

Ekaitz Zarraga <ekaitz@elenq.tech> skribis:

> On Sunday, April 26, 2020 10:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> Saluton!
>>
>> Ekaitz Zarraga ekaitz@elenq.tech skribis:
>>
>> > From 814e44cb90b1427a9af5d6a66392c5a39910e8fd Mon Sep 17 00:00:00 2001
>> > From: Ekaitz Zarraga ekaitz@elenq.tech
>> > Date: Tue, 7 Apr 2020 18:56:06 +0200
>> > Subject: [PATCH] gnu: Add meshlab.
>> >
>> >     * gnu/packages/engineering.scm (meshlab): New variable.
>> >
>>
>> Great! I added a copyright line for you, fixed up indentation (see the
>> bit in the manual for how to do that automatically), and added a
>> comment—patch attached.
>>
>> It built for me, but then I realized I had missed something: the
>> external/ sub-directory contains lots of bundled copies of external
>> tools, and indeed, the ‘configure’ phase shows:
>>
>> --8<---------------cut here---------------start------------->8---
>> -- Could NOT find Lib3ds (missing: LIB3DS_INCLUDE_DIR LIB3DS_LIBRARY)
>> -- Could NOT find GMP (missing: GMP_INCLUDE_DIR GMP_LIBRARY)
>> -- Could NOT find muparser (missing: MUPARSER_INCLUDE_DIR MUPARSER_LIBRARY)
>> -- Could NOT find OpenCTM (missing: OPENCTM_INCLUDE_DIR OPENCTM_LIBRARY)
>> -- Could NOT find Qhull (missing: QHULL_qhull_LIBRARY QHULL_qhull_INCLUDE_DIR qhull)
>> -- Found OpenMP_C: -fopenmp (found version "4.5")
>> -- Found OpenMP_CXX: -fopenmp (found version "4.5")
>> -- Found OpenMP: TRUE (found version "4.5")
>> -- - jhead - using bundled source
>> -- - glew - using bundled source
>> -- - Eigen - using bundled source
>> -- - newuoa - using bundled source
>> -- - levmar - using bundled source
>> -- - lib3ds - using bundled source
>> -- - muparser - using bundled source
>> -- - OpenCTM - using bundled source
>> -- - structure-synth - using bundled source
>> -- - qhull - using bundled source
>> --8<---------------cut here---------------end--------------->8---
>>
>> Some of these are already packaged, so it should be a matter of adding
>> them to ‘inputs’. For the remaining ones, it would be extra packaging
>> work to do.
>>
>> The goal is to address all of these, but if we can address the majority
>> of these, perhaps we can commit a first version of the package with a
>> FIXME stating what remains to be done, if you prefer.
>>
>> Thanks, and apologies for overlooking it before!
>>
>> Ludo’.
>
> Hi,
>
> No worries, I'll try to take a look to those.
>
> We can push it with the Fixme and I'll go adding those during these days when I'm free.
>
> Thanks!
>
> PS: Should I push those to the same file under engineering? or should I create a new file for meshlab and add all its dependencies there too?
Ekaitz Zarraga May 8, 2020, 2:47 p.m. UTC | #5
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Friday, May 8, 2020 4:30 PM, Ludovic Courtès <ludo@gnu.org> wrote:

> Saluton,
>
> Did you have a change to look into this?
>
> Thanks,
> Ludo'.
>

Not yet :(

I'll try to get some free time these days but I've been busy.
Is it possible to add it like it is with embedded libraries temporarily until we separate all of them?
Ekaitz Zarraga May 10, 2020, 9:29 p.m. UTC | #6
Hi,

> Not yet :(
>
> I'll try to get some free time these days but I've been busy.
> Is it possible to add it like it is with embedded libraries temporarily until we separate all of them?


I'm working on it. I managed to add some system provided libraries but I'm having issues with qhull and I'm trying to fix them upstream.

First step, I filed an issue in meshlab: https://github.com/cnr-isti-vclab/meshlab/issues/678

Second step will be to fix the issue.

Next I need to figure out what to do with the rest of the libraries. Should we package all of them? Some of them don't look interesting by themselves, maybe it's better to keep them bundled.

I also have a question:
Most of the libraries that are bundled in meshlab have very old versions (qhull's version is from 2003). How does Guix handle breaking changes in libraries?
If meshlab doesn't support newer libraries, what do we need to do?

I'll manage to correct qhull's issue and submit a new patch.

Thanks!
Ludovic Courtès May 11, 2020, 12:44 p.m. UTC | #7
Egun on!

Ekaitz Zarraga <ekaitz@elenq.tech> skribis:

> I'm working on it. I managed to add some system provided libraries but I'm having issues with qhull and I'm trying to fix them upstream.
>
> First step, I filed an issue in meshlab: https://github.com/cnr-isti-vclab/meshlab/issues/678

Great!

> Second step will be to fix the issue.
>
> Next I need to figure out what to do with the rest of the libraries. Should we package all of them? Some of them don't look interesting by themselves, maybe it's better to keep them bundled.

Ideally, yes.  Now, if some of these libraries have no other users, we
can make an exception.

> I also have a question:
> Most of the libraries that are bundled in meshlab have very old versions (qhull's version is from 2003). How does Guix handle breaking changes in libraries?
> If meshlab doesn't support newer libraries, what do we need to do?

We could still unbundle for example qhull and, if needed, package that
older version that Meshlab need.  In parallel, we can report the issue
to the Meshlab developers so that future versions can use the current
qhull.

I realize this is quite some work, so you’re welcome to improve things
incrementally.  If you don’t manage to deal with all the bundled
libraries, then you can still send an updated patch and we’ll see where
we are and perhaps push the version you arrived at.

Thank you!

Ludo’.
Ekaitz Zarraga May 11, 2020, 2:10 p.m. UTC | #8
Kaixo,


On Monday, May 11, 2020 2:44 PM, Ludovic Courtès <ludo@gnu.org> wrote:

> Egun on!
>
> > Second step will be to fix the issue.
> > Next I need to figure out what to do with the rest of the libraries. Should we package all of them? Some of them don't look interesting by themselves, maybe it's better to keep them bundled.
>
> Ideally, yes. Now, if some of these libraries have no other users, we
> can make an exception.

Understood.
Weird stuff like openkinect is not going to be used anywhere else, right? :D

> > I also have a question:
> > Most of the libraries that are bundled in meshlab have very old versions (qhull's version is from 2003). How does Guix handle breaking changes in libraries?
> > If meshlab doesn't support newer libraries, what do we need to do?
>
> We could still unbundle for example qhull and, if needed, package that
> older version that Meshlab need. In parallel, we can report the issue
> to the Meshlab developers so that future versions can use the current
> qhull.

Ok!

> I realize this is quite some work, so you’re welcome to improve things
> incrementally. If you don’t manage to deal with all the bundled
> libraries, then you can still send an updated patch and we’ll see where
> we are and perhaps push the version you arrived at.

I attach what I currently have. It's a working package with most recent version of Meshlab (overwrites older patch) with some of the libraries unbundled. It has some extra comments about bundled libs that may be better to remove if it's released, but I'll leave that to your opinion.

I'll keep doing this because it's important for me. Meshlab is a very powerful tool and we almost have it!

ty,

Ekaitz
diff mbox series

Patch

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 2fc2ecdd88..ee90e3b429 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -16,6 +16,7 @@ 
 ;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2520,43 +2521,43 @@  official SDK.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/cnr-isti-vclab/meshlab")
-                       (commit (string-append "Meshlab-" version))
-                       (recursive? #t)))
+                      (url "https://github.com/cnr-isti-vclab/meshlab")
+                      (commit (string-append "Meshlab-" version))
+                      (recursive? #t)))
+                (file-name (git-file-name name version))
                 (sha256
-                  (base32 "1vx9jcsnnxvzi90pcxpp7p72cqg3cm6jiivdmrxkzhr2fiz3pfvr"))))
+                 (base32 "1vx9jcsnnxvzi90pcxpp7p72cqg3cm6jiivdmrxkzhr2fiz3pfvr"))))
       (build-system cmake-build-system)
       (native-inputs
-        `(("qtbase" ,qtbase)
-          ("qtscript" ,qtscript)
-          ("qtxmlpatterns" ,qtxmlpatterns)
-          ("mesa", mesa)
-          ("glu", glu)))
+       `(("qtbase" ,qtbase)
+         ("qtscript" ,qtscript)
+         ("qtxmlpatterns" ,qtxmlpatterns)
+         ("mesa", mesa)
+         ("glu", glu)))
       (arguments
-        `(#:tests? #f ; Has no tests
-          #:phases
-          (modify-phases
-            %standard-phases
-              (add-after
-                'unpack 'go-to-source-dir
-                (lambda _ (chdir "src") #t))
-              (add-after
-                'install 'move-files
-                (lambda* (#:key outputs #:allow-other-keys)
-                         (let ((lib (string-append (assoc-ref outputs "out")
-                                                   "/lib")))
-                           (rename-file
-                             (string-append lib "/meshlab/libmeshlab-common.so")
-                             (string-append lib "/libmeshlab-common.so"))
-                           #t))))))
+       `(#:tests? #f                              ;has no tests
+         #:phases
+         (modify-phases
+             %standard-phases
+           (add-after 'unpack 'go-to-source-dir
+             (lambda _ (chdir "src") #t))
+           (add-after 'install 'move-files
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; The RUNPATH on plugins is set to OUT/lib.  Move
+               ;; libmeshlab-common.so there so it can be found.
+               (let ((lib (string-append (assoc-ref outputs "out")
+                                         "/lib")))
+                 (rename-file
+                  (string-append lib "/meshlab/libmeshlab-common.so")
+                  (string-append lib "/libmeshlab-common.so"))
+                 #t))))))
       (synopsis "3D triangular mesh processing and editing software")
-                (home-page "http://www.meshlab.net/")
-                (description "MeshLab is a system for the processing and
-editing of unstructured large 3D triangular meshes.  It is aimed to help the
-processing of the typical not-so-small unstructured models arising in 3D
-scanning, providing a set of tools for editing, cleaning, healing, inspecting,
-rendering and converting this kind of meshes.  These tools include MeshLab
-proper, a versatile program with a graphical user interface, and meshlabserver,
-a program that can perform mesh processing tasks in batch mode, without a
-GUI.")
-                (license license:gpl3+))))
+      (home-page "http://www.meshlab.net/")
+      (description "MeshLab is a system for the processing and editing of
+unstructured large 3D triangular meshes.  It is aimed to help the processing
+of the typical not-so-small unstructured models arising in 3D scanning,
+providing a set of tools for editing, cleaning, healing, inspecting, rendering
+and converting this kind of meshes.  These tools include MeshLab proper, a
+versatile program with a graphical user interface, and meshlabserver, a
+program that can perform mesh processing tasks in batch mode, without a GUI.")
+      (license license:gpl3+))))