Subject: [bug#57679] [RFC PATCH] gnu: Add paraview.

From: Ricardo Wurmus <[email-masked]>
Date: Wed, 02 Nov 2022 17:50:14 +0100

Attached is an earlier version of Paraview (5.9.1) that has been
submitted by Ontje (in Cc).

@Ludo: there doesn’t seem to be a way to unbundle VTK, because Paraview
is closely tied to VTK, reuses its build system to some extent, and is
better understood as an *extension* to VTK than a client application
using VTK merely as a library.  Upstream also commented that unbundling
VTK is not a priority and would have to be supported by the community.

About the icons: when I run /gnu/store/7x3dxk0kl0rc1sw673z51cfran7q6hf1-paraview-5.9.1/bin/paraview I
don’t see most icons.  Even when I install it into a profile that has
adwaita-icon-theme and run it from the profile in a new shell session
the icons are not displayed.

According to strace the icons are found (after searching in all the
wrong places — probably an opportunity for performance improvement), but
they are not displayed.

This is the same problem as https://issues.guix.gnu.org/29905.  The
problem disappears when QT_PLUGIN_PATH is set.  I tested this by
installing qtsvg@5 in my profile alongside paraview-5.9.  The icons
show up.

So I suggest wrapping the executables in QT_PLUGIN_PATH just as we did
for krita and itk-snap.

-- 
Ricardo

>From 2b067d0263210a6ac293cda9bdde906a871667ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ontje=20L=C3=BCnsdorf?= <[email-masked]>
Date: Wed, 2 Nov 2022 17:35:51 +0100
Subject: [PATCH] gnu: Add paraview 5.9.1.

* gnu/packages/image-processing.scm (paraview-5.9): New variable.

Co-authored-by: Ricardo Wurmus <[email-masked]>
---
 gnu/packages/image-processing.scm | 93 +++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 778f6c8538..84494b770a 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -54,6 +54,7 @@ (define-module (gnu packages image-processing)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
@@ -86,6 +87,7 @@ (define-module (gnu packages image-processing)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tbb)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
@@ -868,6 +870,97 @@ (define-public nip2
 recalculates.")
     (license license:gpl2+)))
 
+;; This package bundles and extends VTK.  It also reuses the VTK build system
+;; to some degree.  Sadly, it does not seem to be possible to build with an
+;; external VTK, despite the CMake option PARAVIEW_USE_EXTERNAL_VTK.
+(define-public paraview-5.9
+  (package
+    (name "paraview")
+    (version "5.9.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.paraview.org/files/v"
+                           (version-major+minor version)
+                           "/ParaView-v" version ".tar.xz"))
+       (sha256
+        (base32 "13aczmfshzia324h9r2m675yyrklz2308rf98n444ppmzfv6qj0d"))))
+    (build-system cmake-build-system)
+    (propagated-inputs
+     (list mesa qtbase-5 qtsvg-5 glew))
+    (inputs
+     (list ;; XXX: We can't simply #:use-module due to a cycle somewhere.
+           (module-ref
+            (resolve-interface '(gnu packages engineering))
+            'cgns)
+           cli11
+           double-conversion
+           eigen
+           expat
+           ffmpeg
+           freetype
+           gdal
+           gl2ps
+           hdf5
+           jsoncpp
+           libharu
+           libjpeg-turbo
+           libpng
+           libtheora
+           libtiff
+           libxml2
+           lz4
+           netcdf
+           protobuf
+           pugixml
+           python
+           qttools-5
+           qtxmlpatterns
+           utfcpp
+           zlib))
+    (arguments
+     (list
+      #:build-type "Release"        ;Build without debug symbols to save space
+      #:configure-flags
+      '(list "-DPARAVIEW_BUILD_WITH_EXTERNAL=ON"
+             "-DPARAVIEW_BUILD_SHARED_LIBS=ON"
+             "-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF"
+             "-DPARAVIEW_USE_PYTHON=ON"
+             "-DPARAVIEW_ENABLE_FFMPEG=ON"
+             "-DPARAVIEW_ENABLE_GDAL=ON"
+             "-DPARAVIEW_ENABLE_WEB=OFF"
+
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_glew=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_lz4=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_lzma=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_theora=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_utf8=ON"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON"
+
+             "-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=OFF"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_cgns=OFF"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_exprtk=OFF"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_fmt=OFF"
+             "-DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF")))
+    (home-page "https://www.paraview.org/")
+    (synopsis "Data analysis and visualization application")
+    (description "ParaView is a data analysis and visualization application.
+Users can quickly build visualizations to analyze their data using qualitative
+and quantitative techniques.  The data exploration can be done interactively
+in 3D or programmatically using ParaView’s batch processing capabilities.")
+    (license license:bsd-3)))
+
 (define-public vxl
   (package
     (name "vxl")
-- 
2.36.1