Subject: Re: [bug#73934] [v2] Add CloudCompare 2.13

From: Mattia Bunel <[email-masked]>
Date: Fri, 28 Feb 2025 15:26:49 +0100

Hello,

Thanks for your corrections to these two patches, and for integrating
the ~libe57format~ package.

For the ~cloudcompare~ package, I was also surprised by the joint use
of qt6 and qt5. I've just checked, it's an error on my part, the package
does compile with ~qtlocation-5~ input. I am attaching a corrected
version of this package.

As for the rest, I agree with you. It be better to replace the
submodules and external dependencies integrated in the sources. But I
don't really know how to do that. I did find some examples in other
packages, but it seems necessary to patch the ~cmake~ files, which I don't
really know how to do.

From 179250234c0fa4fbb62b879d7601cb351f0bd41b Mon Sep 17 00:00:00 2001
Message-ID: <1792[email-masked]>
From: Mattia Bunel <[email-masked]>
Date: Wed, 5 Feb 2025 20:01:36 +0100
Subject: [PATCH] gnu: Add cloudcompare.

* gnu/packages/geo.scm (cloudcompare): New variable.
---
 gnu/packages/geo.scm | 96 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)

diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 54f96fef2b..379ff0025e 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -4001,3 +4001,99 @@ (define-public libe57format
 attributes associated with 3D point data (color and intensity),
 and 2D images (photos taken using a 3D imaging system).")
     (license license:boost1.0)))
+
+(define-public cloudcompare
+  (package
+    (name "cloudcompare")
+    (version "2.13.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/CloudCompare/CloudCompare")
+             (commit "v2.13.2")
+             (recursive? #t)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0wck05zbfkw7cg8h6fjiinjzrsk55858qg0k2m5rmr9dfdzjbzbb"))))
+    (inputs (list qtbase-5
+                  qtsvg-5
+                  qtlocation-5
+                  qttools-5
+                  gdal
+                  laszip
+                  xerces-c
+                  libe57format
+                  zlib))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list
+                           ;; Options
+                           "-DOPTION_BUILD_CCVIEWER=NO"
+                           "-DBUILD_TESTING=ON"
+                           "-DOPTION_USE_SHAPE_LIB=YES"
+                           "-DOPTION_USE_DXF_LIB=YES"
+                           "-DOPTION_USE_GDAL=YES"
+                           ;; Shaders
+                           ;; At least a shader is needed
+                           "-DPLUGIN_GL_QEDL=YES"
+                           "-DPLUGIN_GL_QSSAO=YES"
+                           ;; IO
+                           "-DPLUGIN_IO_QCORE=YES"
+                           "-DPLUGIN_IO_QADDITIONAL=NO"
+                           "-DPLUGIN_IO_QCSV_MATRIX=NO"
+                           ;; No guix package for DRACO
+                           "-DPLUGIN_IO_QDRACO=NO"
+                           "-DPLUGIN_IO_QE57=YES"
+                           ;; No guix package for FBX
+                           "-DPLUGIN_IO_QFBX=NO"
+                           ;; laszip will replace PDAL in CloudCompare 2.13
+                           "-DPLUGIN_IO_QLAS=YES"
+                           "-DPLUGIN_IO_QPDAL=NO"
+                           "-DPLUGIN_IO_QPHOTOSCAN=YES"
+                           ;; No guix package for Riegl RDBlib
+                           "-DPLUGIN_IO_QRDB=NO"
+                           "-DPLUGIN_IO_QSTEP=NO"
+                           ;; Plugins
+                           "-DPLUGIN_STANDARD_QANIMATION=YES"
+                           "-DQANIMATION_WITH_FFMPEG_SUPPORT=NO"
+                           "-DPLUGIN_STANDARD_QBROOM=YES"
+                           ;; Compilation error
+                           "-DPLUGIN_STANDARD_QCANUPO=YES"
+                           "-DPLUGIN_STANDARD_QCLOUDLAYERS=YES"
+                           "-DPLUGIN_STANDARD_QCOLORIMETRIC_SEGMENTER=YES"
+                           "-DPLUGIN_STANDARD_QCOMPASS=YES"
+                           ;; Only for Windows at the moment
+                           "-DPLUGIN_STANDARD_QCORK=NO"
+                           "-DPLUGIN_STANDARD_QCSF=YES"
+                           "-DPLUGIN_STANDARD_QFACETS=YES"
+                           ;; Error with eigen
+                           "-DPLUGIN_STANDARD_QHOUGH_NORMALS=NO"
+                           "-DPLUGIN_STANDARD_QHPR=YES"
+                           ;; Need qtWebSocket engine
+                           "-DPLUGIN_STANDARD_QJSONRPC=NO"
+                           "-DPLUGIN_STANDARD_QM3C2=YES"
+                           ;; Need PCL lib
+                           "-DPLUGIN_STANDARD_MASONRY_QAUTO_SEG=NO"
+                           "-DPLUGIN_STANDARD_MASONRY_QMANUAL_SEG=NO"
+                           "-DPLUGIN_STANDARD_QPCL=NO"
+                           ;; Need CGAL
+                           "-DPLUGIN_STANDARD_QMESH_BOOLEAN=NO"
+                           "-DPLUGIN_STANDARD_QMPLANE=YES"
+                           "-DPLUGIN_STANDARD_QPCV=NO"
+                           "-DPLUGIN_STANDARD_QPOISSON_RECON=YES"
+                           "-DPLUGIN_STANDARD_QRANSAC_SD=YES"
+                           "-DPLUGIN_STANDARD_QSRA=YES")
+      #:build-type "Release"
+      #:tests? #f))
+    (home-page "https://cloudcompare.org/")
+    (synopsis "Point cloud processing software")
+    (description
+     "CloudCompare is a 3D point cloud (and triangular mesh) processing
+software.  It was originally designed to perform comparison between two
+3D point clouds (such as the ones obtained with a laser scanner) or between
+a point cloud and a triangular mesh.  It relies on an octree structure that
+is highly optimized for this particular use-case.  It is also meant to deal
+with huge point clouds.")
+    (license license:gpl2+)))

base-commit: a76708a872e65230931f3c5c3b079d0a39d5cb84
-- 
2.48.1

Mattia

Andreas Enge <[email-masked]> writes:

> Hello Mattia,
>
> apologies for the exceptionally long delay in treating your patches,
> which are very nice and well prepared.
>
> I have slightly adapted libe57format. For the license, I kept only
> boost1.0, as this is given in the licence file and also in a few headers
> I checked. I have tried to make the tests work - it is possible to add
> the external test data in a separate origin, but even then there are
> complaints about googletest not working. So I have updated the
> explanations, removed the googletest native input and kept the tests
> disabled.
>
> This one is pushed.
>
> For cloudcompare, please find a v2 attached. The git tag did not
> correspond to the version, and the licence is gpl2+ ("or later").
>
> I wonder whether the recursive git download is the way to go, or whether
> it does not pull bundled libraries that we had better unbundle? A few of
> the submodules contain "extern" in their name. For instance, it looks as
> if there is a second copy of libe57format that is downloaded.
>
> I also wonder whether the mixture of qt@5 and qt@6 packages is a good
> idea.
>
> In any case, the package compiles, and the binary starts.
>
> What do you think?
>
> Andreas
>
> From 5a42727e4625470406a47650e525a1667f9b7514 Mon Sep 17 00:00:00 2001
> Message-ID: <[email-masked]>
> From: Mattia Bunel <[email-masked]>
> Date: Wed, 5 Feb 2025 20:01:36 +0100
> Subject: [PATCH] gnu: Add cloudcompare.
>
> * gnu/packages/geo.scm (cloudcompare): New variable.
>
> Change-Id: If7ec6bc74ade4df662e5e66eda13979efa53161b
> Signed-off-by: Andreas Enge <[email-masked]>
> ---
>  gnu/packages/geo.scm | 96 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 96 insertions(+)
>
> diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
> index 368ea01ca17..0dd5ca921cc 100644
> --- a/gnu/packages/geo.scm
> +++ b/gnu/packages/geo.scm
> @@ -3725,3 +3725,99 @@ (define-public libe57format
>  attributes associated with 3D point data (color and intensity),
>  and 2D images (photos taken using a 3D imaging system).")
>      (license license:boost1.0)))
> +
> +(define-public cloudcompare
> +  (package
> +    (name "cloudcompare")
> +    (version "2.13.2")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/CloudCompare/CloudCompare")
> +             (commit "v2.13.2")
> +             (recursive? #t)))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32 "0wck05zbfkw7cg8h6fjiinjzrsk55858qg0k2m5rmr9dfdzjbzbb"))))
> +    (inputs (list qtbase-5
> +                  qtsvg-5
> +                  qtlocation
> +                  qttools-5
> +                  gdal
> +                  laszip
> +                  xerces-c
> +                  libe57format
> +                  zlib))
> +    (build-system cmake-build-system)
> +    (arguments
> +     (list
> +      #:configure-flags #~(list
> +                           ;; Options
> +                           "-DOPTION_BUILD_CCVIEWER=NO"
> +                           "-DBUILD_TESTING=ON"
> +                           "-DOPTION_USE_SHAPE_LIB=YES"
> +                           "-DOPTION_USE_DXF_LIB=YES"
> +                           "-DOPTION_USE_GDAL=YES"
> +                           ;; Shaders
> +                           ;; At least a shader is needed
> +                           "-DPLUGIN_GL_QEDL=YES"
> +                           "-DPLUGIN_GL_QSSAO=YES"
> +                           ;; IO
> +                           "-DPLUGIN_IO_QCORE=YES"
> +                           "-DPLUGIN_IO_QADDITIONAL=NO"
> +                           "-DPLUGIN_IO_QCSV_MATRIX=NO"
> +                           ;; No guix package for DRACO
> +                           "-DPLUGIN_IO_QDRACO=NO"
> +                           "-DPLUGIN_IO_QE57=YES"
> +                           ;; No guix package for FBX
> +                           "-DPLUGIN_IO_QFBX=NO"
> +                           ;; laszip will replace PDAL in CloudCompare 2.13
> +                           "-DPLUGIN_IO_QLAS=YES"
> +                           "-DPLUGIN_IO_QPDAL=NO"
> +                           "-DPLUGIN_IO_QPHOTOSCAN=YES"
> +                           ;; No guix package for Riegl RDBlib
> +                           "-DPLUGIN_IO_QRDB=NO"
> +                           "-DPLUGIN_IO_QSTEP=NO"
> +                           ;; Plugins
> +                           "-DPLUGIN_STANDARD_QANIMATION=YES"
> +                           "-DQANIMATION_WITH_FFMPEG_SUPPORT=NO"
> +                           "-DPLUGIN_STANDARD_QBROOM=YES"
> +                           ;; Compilation error
> +                           "-DPLUGIN_STANDARD_QCANUPO=YES"
> +                           "-DPLUGIN_STANDARD_QCLOUDLAYERS=YES"
> +                           "-DPLUGIN_STANDARD_QCOLORIMETRIC_SEGMENTER=YES"
> +                           "-DPLUGIN_STANDARD_QCOMPASS=YES"
> +                           ;; Only for Windows at the moment
> +                           "-DPLUGIN_STANDARD_QCORK=NO"
> +                           "-DPLUGIN_STANDARD_QCSF=YES"
> +                           "-DPLUGIN_STANDARD_QFACETS=YES"
> +                           ;; Error with eigen
> +                           "-DPLUGIN_STANDARD_QHOUGH_NORMALS=NO"
> +                           "-DPLUGIN_STANDARD_QHPR=YES"
> +                           ;; Need qtWebSocket engine
> +                           "-DPLUGIN_STANDARD_QJSONRPC=NO"
> +                           "-DPLUGIN_STANDARD_QM3C2=YES"
> +                           ;; Need PCL lib
> +                           "-DPLUGIN_STANDARD_MASONRY_QAUTO_SEG=NO"
> +                           "-DPLUGIN_STANDARD_MASONRY_QMANUAL_SEG=NO"
> +                           "-DPLUGIN_STANDARD_QPCL=NO"
> +                           ;; Need CGAL
> +                           "-DPLUGIN_STANDARD_QMESH_BOOLEAN=NO"
> +                           "-DPLUGIN_STANDARD_QMPLANE=YES"
> +                           "-DPLUGIN_STANDARD_QPCV=NO"
> +                           "-DPLUGIN_STANDARD_QPOISSON_RECON=YES"
> +                           "-DPLUGIN_STANDARD_QRANSAC_SD=YES"
> +                           "-DPLUGIN_STANDARD_QSRA=YES")
> +      #:build-type "Release"
> +      #:tests? #f))
> +    (home-page "https://cloudcompare.org/")
> +    (synopsis "Point cloud processing software")
> +    (description
> +     "CloudCompare is a 3D point cloud (and triangular mesh) processing
> +software.  It was originally designed to perform comparison between two
> +3D point clouds (such as the ones obtained with a laser scanner) or between
> +a point cloud and a triangular mesh.  It relies on an octree structure that
> +is highly optimized for this particular use-case.  It is also meant to deal
> +with huge point clouds.")
> +    (license license:gpl2+)))
>
> base-commit: cc2b236e3777c0f7c758805289f42b3932668c57
> prerequisite-patch-id: 0289950ff5d75c0e49094995eef252869b9b875f
> -- 
> 2.48.1
>

-- 
Mattia Bunel
UMR Géographie-cités, Plateforme géomatique ;  EHESS
https://mbunel.xyz/