gnu: Add mmg.

* gnu/packages/graphics.scm (mmg): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Paul A. Patience 2022-07-24 12:02:47 +00:00 committed by Ludovic Courtès
parent b08439809f
commit 1cf6cb9503
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

@ -2182,6 +2182,109 @@ Features include:
")
(license license:gpl3+)))
(define-public mmg
(package
(name "mmg")
(version "5.6.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/MmgTools/mmg")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "173biz5skbwg27i5w6layg7mydjzv3rmi1ywhra4rx9rjf5c0cc5"))))
(build-system cmake-build-system)
(outputs '("out" "lib" "doc"))
(arguments
(list #:configure-flags
#~(list (string-append "-DCMAKE_INSTALL_PREFIX=" #$output:lib)
(string-append "-DCMAKE_INSTALL_RPATH=" #$output:lib "/lib")
;; The build doesn't honor -DCMAKE_INSTALL_BINDIR, hence
;; the adjust-bindir phase.
;;(string-append "-DCMAKE_INSTALL_BINDIR=" #$output "/bin")
"-DBUILD_SHARED_LIBS=ON"
"-DBUILD_TESTING=ON"
;; The longer tests are for continuous integration and
;; depend on input data which must be downloaded.
"-DONLY_VERY_SHORT_TESTS=ON"
;; TODO: Add Elas (from
;; https://github.com/ISCDtoolbox/LinearElasticity).
"-DUSE_ELAS=OFF"
;; TODO: Figure out how to add VTK to inputs without
;; causing linking errors in ASLI of the form:
;;
;; ld: /gnu/store/…-vtk-9.0.1/lib/libvtkWrappingPythonCore-9.0.so.1:
;; undefined reference to `PyUnicode_InternFromString'
;;
;; Also, adding VTK to inputs requires adding these as well:
;;
;; double-conversion eigen expat freetype gl2ps glew hdf5
;; jsoncpp libjpeg-turbo libpng libtheora libtiff libx11
;; libxml2 lz4 netcdf proj python sqlite zlib
"-DUSE_VTK=OFF")
#:phases
#~(modify-phases %standard-phases
(add-after 'build 'build-doc
(lambda _
;; Fontconfig wants to write to a cache directory.
(setenv "HOME" "/tmp")
(invoke "make" "doc")))
(add-after 'install 'install-doc
(lambda _
(copy-recursively
"../source/doc/man" (string-append #$output
"/share/man/man1"))
(copy-recursively
"doc" (string-append #$output:doc "/share/doc/"
#$name "-" #$version))))
(add-after 'install 'adjust-bindir
(lambda _
(let ((src (string-append #$output:lib "/bin"))
(dst (string-append #$output "/bin")))
(copy-recursively src dst)
(delete-file-recursively src))))
;; Suffixing program names with build information, i.e.,
;; optimization flags and whether debug symbols were generated,
;; is unusual and fragilizes scripts calling these programs.
(add-after 'adjust-bindir 'fix-program-names
(lambda _
(with-directory-excursion (string-append #$output "/bin")
(rename-file "mmg2d_O3d" "mmg2d")
(rename-file "mmg3d_O3d" "mmg3d")
(rename-file "mmgs_O3d" "mmgs")))))))
(native-inputs
;; For the documentation
(list doxygen graphviz
;; TODO: Fix failing LaTeX invocation (which results in equations
;; being inserted literally into PNGs rather than being typeset).
;;texlive-tiny
))
(inputs
(list scotch))
(home-page "http://www.mmgtools.org/")
(synopsis "Surface and volume remeshers")
(description "Mmg is a collection of applications and libraries for
bidimensional and tridimensional surface and volume remeshing. It consists
of:
@itemize
@item the @code{mmg2d} application and library: mesh generation from a set of
edges, adaptation and optimization of a bidimensional triangulation and
isovalue discretization;
@item the @code{mmgs} application and library: adaptation and optimization of
a surface triangulation and isovalue discretization;
@item the @code{mmg3d} application and library: adaptation and optimization of
a tetrahedral mesh, isovalue discretization and Lagrangian movement;
@item the @code{mmg} library gathering the @code{mmg2d}, @code{mmgs} and
@code{mmg3d} libraries.
@end itemize")
(license license:lgpl3+)))
(define-public f3d
;; There have been many improvements since the last tagged version (1.2.1,
;; released in December 2021), including support for the Alembic file