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

From: Ekaitz Zarraga <[email-masked]>
Date: Fri, 12 Jun 2020 21:46:23 +0000

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Friday, June 12, 2020 9:45 PM, Ludovic Courtès <[email-masked]> wrote:

> Hi,
>
> Ekaitz Zarraga [email-masked] skribis:
>
> > I did my best here and there's some extra CMake configuration step error, I talked with meshlab's developers about this and I'm unable to make it work with system qhull.
> > I don't know why.
> > I don't know enough about CMake (I don't know anything about CMake tbh) to make it work myself.
> > This is the issue upstream.
> > https://github.com/cnr-isti-vclab/meshlab/issues/678
> > With the QHull provided by Meshlab it works well with all the libs we packaged, does it make sense to leave just qhull for the moment?
>
> Yeah, let’s do that, with a FIXME comment referencing the above issue.
>
> Thanks for the update!
>
> Ludo’.

There it goes.

>From 2779f50ad71b4458272aaa9223df96e3a77f60e4 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <[email-masked]>
Date: Fri, 12 Jun 2020 23:41:18 +0200
Subject: [PATCH] gnu: Add meshlab.

* gnu/packages/engineering.scm (meshlab): New variable.
---
 gnu/packages/engineering.scm | 61 ++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 9d9c67b861..b243974dcc 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -105,6 +105,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages openkinect)
   #:use-module (gnu packages xorg))

 (define-public librecad
@@ -2619,3 +2620,63 @@ accessible through a simple API")
 model files.  Its main goal is to simplify the creation of 3DS import and
 export filters.")
     (license license:lgpl2.1+)))
+
+(define-public meshlab
+  (let ((version "2020.05"))
+    (package
+      (name "meshlab")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cnr-isti-vclab/meshlab")
+                      (commit (string-append "Meshlab-" version))
+                      (recursive? #t)))
+                (sha256
+                 (base32 "00sim20ka9vjwljixdj4cqd285j21mpaq05ari7nqq2w8yyglp5m"))))
+      (build-system cmake-build-system)
+      (native-inputs
+       `(("qtbase" ,qtbase)
+         ("qtscript" ,qtscript)
+         ("qtxmlpatterns" ,qtxmlpatterns)
+         ("mesa" ,mesa)
+         ("glu" ,glu)
+         ("glew" ,glew)
+         ("muparser" ,muparser)
+         ("gmp" ,gmp)
+         ("eigen" ,eigen)
+         ("libfreenect" ,libfreenect)
+         ("lib3ds" ,lib3ds)
+         ("openctm" ,openctm)
+         ;; Compilation fails with system qhull
+         ;; https://github.com/cnr-isti-vclab/meshlab/issues/678
+         ;; ("qhull" ,qhull)
+         ))
+      (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))))))
+      (synopsis "3D triangular mesh processing and editing software")
+      (home-page "https://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+))))
--
2.26.2