gnu: Add paraview.
* gnu/packages/graphics.scm (paraview): New variable. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
This commit is contained in:
		
							parent
							
								
									612a3f8716
								
							
						
					
					
						commit
						fc5dc3e047
					
				
					 1 changed files with 277 additions and 0 deletions
				
			
		|  | @ -21,6 +21,7 @@ | |||
| ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru> | ||||
| ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> | ||||
| ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl> | ||||
| ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -60,6 +61,8 @@ | |||
|   #:use-module (gnu packages documentation) | ||||
|   #:use-module (gnu packages flex) | ||||
|   #:use-module (gnu packages fontutils) | ||||
|   #:use-module (gnu packages game-development) | ||||
|   #:use-module (gnu packages gcc) | ||||
|   #:use-module (gnu packages geo) | ||||
|   #:use-module (gnu packages ghostscript) | ||||
|   #:use-module (gnu packages gimp) | ||||
|  | @ -75,16 +78,21 @@ | |||
|   #:use-module (gnu packages imagemagick) | ||||
|   #:use-module (gnu packages linux) | ||||
|   #:use-module (gnu packages maths) | ||||
|   #:use-module (gnu packages mpi) | ||||
|   #:use-module (gnu packages pdf) | ||||
|   #:use-module (gnu packages perl) | ||||
|   #:use-module (gnu packages photo) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages pretty-print) | ||||
|   #:use-module (gnu packages protobuf) | ||||
|   #:use-module (gnu packages python) | ||||
|   #:use-module (gnu packages python-check) | ||||
|   #:use-module (gnu packages python-science) | ||||
|   #:use-module (gnu packages python-xyz) | ||||
|   #:use-module (gnu packages qt) | ||||
|   #:use-module (gnu packages sdl) | ||||
|   #:use-module (gnu packages serialization) | ||||
|   #:use-module (gnu packages sphinx) | ||||
|   #:use-module (gnu packages sqlite) | ||||
|   #:use-module (gnu packages tbb) | ||||
|   #:use-module (gnu packages textutils) | ||||
|  | @ -958,6 +966,275 @@ 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 paraview | ||||
|   (package | ||||
|     (name "paraview") | ||||
|     (version "5.11.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|        (uri (git-reference | ||||
|              (url "https://gitlab.kitware.com/paraview/paraview.git") | ||||
|              (commit (string-append "v" version)) | ||||
|              (recursive? #t))) | ||||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 "0qifzsbgg8f7zvg5a4934nql6nv5b6sm1f59bylyc6v5bqd0myas")) | ||||
|        (modules '((guix build utils))) | ||||
|        (snippet | ||||
|         ;; TODO: Also remove unused bundled libraries and plugins? | ||||
|         #~(begin | ||||
|             ;; Remove bundled ParaView libraries which are available in Guix | ||||
|             ;; or undesired. | ||||
|             (for-each (lambda (dir) | ||||
|                         (delete-file-recursively | ||||
|                          (string-append "ThirdParty/" dir "/vtk" | ||||
|                                         (string-downcase dir)))) | ||||
|                       '(;;"CosmoHaloFinder" | ||||
|                         ;;"IceT" | ||||
|                         "NvPipe"        ; Don't want NvPipe support | ||||
|                         ;;"QtTesting" | ||||
|                         ;;"cinema" | ||||
|                         ;;"cinemasci" | ||||
|                         "protobuf")) | ||||
|             ;; Remove undesired ParaView plugins. | ||||
|             (delete-file-recursively "Plugins/pvNVIDIAIndeX") | ||||
|             ;; Remove bundled VTK libraries which are available in Guix. | ||||
|             (for-each (lambda (dir) | ||||
|                         (delete-file-recursively | ||||
|                          (string-append "VTK/ThirdParty/" dir "/vtk" dir))) | ||||
|                       '(;;"cgns" | ||||
|                         "cli11" | ||||
|                         ;;"diy2" | ||||
|                         "doubleconversion" | ||||
|                         "eigen" | ||||
|                         ;;"exodusII" | ||||
|                         "expat" | ||||
|                         ;;"exprtk" | ||||
|                         ;;"fides" | ||||
|                         "fmt" | ||||
|                         "freetype" | ||||
|                         "gl2ps" | ||||
|                         "glew" | ||||
|                         ;;"h5part" | ||||
|                         "hdf5" | ||||
|                         ;;"ioss" | ||||
|                         "jpeg" | ||||
|                         "jsoncpp" | ||||
|                         ;;"kissfft" | ||||
|                         ;;"libharu" ; Requires some PRs applied to 2.3.0 | ||||
|                         "libproj" | ||||
|                         "libxml2" | ||||
|                         ;;"loguru" | ||||
|                         "lz4" | ||||
|                         "lzma" | ||||
|                         "mpi4py" | ||||
|                         "netcdf" | ||||
|                         ;;"nlohmannjson" ; ParFlow build fails even with bundled | ||||
|                         "ogg" | ||||
|                         ;;"pegtl" | ||||
|                         "png" | ||||
|                         "pugixml" | ||||
|                         "sqlite" | ||||
|                         "theora" | ||||
|                         "tiff" | ||||
|                         "utf8" | ||||
|                         ;;"verdict" | ||||
|                         ;;"vpic" | ||||
|                         ;;"vtkm" | ||||
|                         ;;"xdmf2" | ||||
|                         ;;"xdmf3" | ||||
|                         ;;"zfp" | ||||
|                         "zlib")))))) | ||||
|     (build-system qt-build-system) | ||||
|     (arguments | ||||
|      (list | ||||
|       #:build-type "Release"            ; 542 MiB in release mode | ||||
|       #:tests? #f                       ; Downloads test data | ||||
|       #:configure-flags | ||||
|       #~(let ((doc (string-append #$output "/share/doc/" #$name "-" #$version))) | ||||
|           (list | ||||
|            (string-append "-DCMAKE_INSTALL_DOCDIR=" doc) ; For paraview.qch | ||||
| 
 | ||||
|            ;; ParaView build options | ||||
|            "-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=ON" | ||||
|            (string-append "-DPARAVIEW_GENERATED_DOCUMENTATION_OUTPUT_DIRECTORY=" doc) | ||||
| 
 | ||||
|            ;; ParaView capability options | ||||
|            ;;"-DPARAVIEW_USE_EXTERNAL_VTK=ON" ; Unsupported by ParaView | ||||
|            "-DPARAVIEW_USE_MPI=ON" | ||||
|            "-DPARAVIEW_USE_PYTHON=ON" | ||||
|            "-DPARAVIEW_USE_QTWEBENGINE=ON" | ||||
| 
 | ||||
|            ;; ParaView features | ||||
|            ;; | ||||
|            ;; Enable those that are disabled by default. | ||||
|            ;; Commented means the dependencies are missing from Guix | ||||
|            ;; (or are otherwise described). | ||||
|            ;;"-DPARAVIEW_ENABLE_ADIOS2=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_COSMOTOOLS=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_CATALYST=ON" | ||||
|            "-DPARAVIEW_ENABLE_FFMPEG=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_FIDES=ON" | ||||
|            "-DPARAVIEW_ENABLE_GDAL=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_LAS=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_LOOKINGGLASS=ON" ; Downloads dependency | ||||
|            ;;"-DPARAVIEW_ENABLE_MOMENTINVARIANTS=ON" ; Downloads dependency | ||||
|            "-DPARAVIEW_ENABLE_MOTIONFX=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_OPENTURNS=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_OPENVDB=ON" ; Dependency not found | ||||
|            ;;"-DPARAVIEW_ENABLE_PDAL=ON" | ||||
|            ;;"-DPARAVIEW_ENABLE_RAYTRACING=ON" | ||||
|            "-DPARAVIEW_ENABLE_VISITBRIDGE=ON" | ||||
|            "-DPARAVIEW_ENABLE_XDMF3=ON" | ||||
| 
 | ||||
|            ;; ParaView miscellaneous options | ||||
|            ;; | ||||
|            ;; Without -DPARAVIEW_DATA_EXCLUDE_FROM_ALL=OFF, test data is | ||||
|            ;; downloaded even with tests disabled. | ||||
|            "-DPARAVIEW_VERSIONED_INSTALL=OFF" | ||||
|            "-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=OFF" | ||||
| 
 | ||||
|            ;; ParaView plugins | ||||
|            ;; | ||||
|            ;; Enable those that are disabled by default. | ||||
|            ;; Commented means the dependencies are missing from Guix | ||||
|            ;; (or are otherwise described). | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON" | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON" | ||||
|            "-DPARAVIEW_PLUGIN_ENABLE_CAVEInteraction=ON" | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON" | ||||
|            "-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON" | ||||
|            "-DPARAVIEW_PLUGIN_ENABLE_GmshIO=ON" | ||||
|            "-DPARAVIEW_PLUGIN_ENABLE_InSituExodus=ON" | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_LookingGlass=ON" | ||||
|            "-DPARAVIEW_PLUGIN_ENABLE_NetCDFTimeAnnotationPlugin=ON" | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON" ; Build fails | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_PythonQtPlugin=ON" | ||||
|            "-DPARAVIEW_PLUGIN_ENABLE_SpaceMouseInteractor=ON" | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_VDFReaderPlugin=ON" | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_XRInterface=ON" ; Build fails | ||||
|            ;;"-DPARAVIEW_PLUGIN_ENABLE_zSpace=ON" | ||||
| 
 | ||||
|            ;; VTK options | ||||
|            "-DVTK_SMP_IMPLEMENTATION_TYPE=TBB" | ||||
|            "-DVTKm_ENABLE_MPI=ON" | ||||
| 
 | ||||
|            ;; External libraries for ParaView and VTK | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_ParaView_protobuf=ON" | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_VTK_cli11=ON" | ||||
|            "-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_fmt=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_jsoncpp=ON" | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_VTK_libproj=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_mpi4py=ON" | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON" | ||||
|            ;;"-DVTK_MODULE_USE_EXTERNAL_VTK_nlohmannjson=ON" | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_VTK_ogg=ON" | ||||
|            ;;"-DVTK_MODULE_USE_EXTERNAL_VTK_pegtl=ON" | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON" | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_VTK_pugixml=ON" | ||||
|            "-DVTK_MODULE_USE_EXTERNAL_VTK_sqlite=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")) | ||||
|       #:phases | ||||
|       #~(modify-phases %standard-phases | ||||
|           (add-after 'set-paths 'hide-gfortran | ||||
|             (lambda _ | ||||
|               (setenv "CPLUS_INCLUDE_PATH" | ||||
|                       (string-join | ||||
|                        (delete (string-append #$(this-package-native-input "gfortran") | ||||
|                                               "/include/c++") | ||||
|                                (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) | ||||
|                        ":")))) | ||||
|           (replace 'install-license-files | ||||
|             (lambda _ | ||||
|               (let ((src (string-append #$output "/share/licenses/ParaView")) | ||||
|                     (dst (string-append #$output "/share/doc/" | ||||
|                                         #$name "-" #$version "/licenses"))) | ||||
|                 (copy-recursively src dst) | ||||
|                 (delete-file-recursively (dirname src)))))))) | ||||
|     (native-inputs | ||||
|      (list gfortran | ||||
|            ;; For the documentation | ||||
|            doxygen | ||||
|            graphviz | ||||
|            perl | ||||
|            python-sphinx)) | ||||
|     (inputs | ||||
|      (list boost | ||||
|            cli11 | ||||
|            curl | ||||
|            double-conversion | ||||
|            eigen | ||||
|            expat | ||||
|            ffmpeg | ||||
|            fmt | ||||
|            freetype | ||||
|            gdal | ||||
|            gl2ps | ||||
|            glew | ||||
|            gmsh | ||||
|            hdf5 | ||||
|            ;;json-modern-cxx              ;For ParFlow; build fails | ||||
|            jsoncpp | ||||
|            libjpeg-turbo | ||||
|            libogg | ||||
|            libpng | ||||
|            libtheora | ||||
|            libtiff | ||||
|            libxcursor | ||||
|            libxml2 | ||||
|            libxt | ||||
|            lz4 | ||||
|            lzip | ||||
|            mesa | ||||
|            netcdf | ||||
|            openmpi | ||||
|            ;;openvdb                      ;For OpenVDB; dependency not found | ||||
|            ;;openvr                       ;For XRInterface; build fails | ||||
|            ;;pegtl                        ;For VTK; build fails | ||||
|            proj | ||||
|            protobuf | ||||
|            pugixml | ||||
|            python-cftime | ||||
|            python-matplotlib | ||||
|            python-mpi4py | ||||
|            python-numpy | ||||
|            python-wrapper | ||||
|            qtbase-5 | ||||
|            qtdeclarative-5 | ||||
|            qtmultimedia-5 | ||||
|            qtsvg-5 | ||||
|            qttools-5 | ||||
|            qtwebchannel-5 | ||||
|            qtwebengine-5 | ||||
|            qtx11extras | ||||
|            qtxmlpatterns | ||||
|            sdl2 | ||||
|            sqlite | ||||
|            tbb | ||||
|            utfcpp | ||||
|            zlib)) | ||||
|     (home-page "https://www.paraview.org/") | ||||
|     (synopsis "VTK-based, parallel data analyzer and visualizer") | ||||
|     (description "ParaView is a VTK-based, parallel data analyzer and | ||||
| visualizer which allows exploring data interactively in 3D or | ||||
| programmatically.") | ||||
|     (license license:bsd-3))) | ||||
| 
 | ||||
| (define-public vxl | ||||
|   (package | ||||
|     (name "vxl") | ||||
|  |  | |||
		Reference in a new issue