git: 09d882192d28 - main - science/pastix: adding PaStiX, a sparse direct solver

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Sat, 23 Apr 2022 16:42:09 UTC
The branch main has been updated by thierry:

URL: https://cgit.FreeBSD.org/ports/commit/?id=09d882192d28914c254493309c1224c09c94b67b

commit 09d882192d28914c254493309c1224c09c94b67b
Author:     Thierry Thomas <thierry@FreeBSD.org>
AuthorDate: 2022-04-23 16:23:45 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2022-04-23 16:41:10 +0000

    science/pastix: adding PaStiX, a sparse direct solver
    
    Requested by:   pfg
---
 science/Makefile                                   |   1 +
 science/pastix/Makefile                            |  49 ++++++
 science/pastix/distinfo                            |   7 +
 ..._cmake_modules_find_LibrariesAbsolutePath.cmake |  18 +++
 science/pastix/pkg-descr                           |   9 ++
 science/pastix/pkg-plist                           | 173 +++++++++++++++++++++
 6 files changed, 257 insertions(+)

diff --git a/science/Makefile b/science/Makefile
index 27aa2234236c..19c165fea154 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -231,6 +231,7 @@
     SUBDIR += packmol
     SUBDIR += pagmo2
     SUBDIR += paje
+    SUBDIR += pastix
     SUBDIR += pcmsolver
     SUBDIR += phonopy
     SUBDIR += plumed
diff --git a/science/pastix/Makefile b/science/pastix/Makefile
new file mode 100644
index 000000000000..5f7ff4300b0c
--- /dev/null
+++ b/science/pastix/Makefile
@@ -0,0 +1,49 @@
+# Created by: thierry@pompo.net
+
+PORTNAME=	pastix
+PORTVERSION=	6.2.1
+DISTVERSIONPREFIX=	v
+CATEGORIES=	science
+
+MAINTAINER=	thierry@FreeBSD.org
+COMMENT=	PaStiX: a sparse direct solver
+
+LICENSE=	LGPL3
+
+BUILD_DEPENDS=	bash:shells/bash	\
+		${PYNUMPY}
+LIB_DEPENDS=	libcblas.so:math/cblas	\
+		libmetis.so:math/metis	\
+		libscotch.so:cad/scotch	\
+		liblapacke.so:math/lapacke	\
+		libhwloc.so:devel/hwloc2
+RUN_DEPENDS=	bash:shells/bash	\
+		${PYNUMPY}
+
+USES=		cmake blaslapack:openblas fortran pkgconfig python
+
+USE_GITLAB=	yes
+GL_SITE=	https://gitlab.inria.fr/
+GL_ACCOUNT=	solverstack
+GL_PROJECT=	pastix spm:s morse_cmake:m
+GL_COMMIT=	071d5ae165c744ec3e62f5bdd246b12f8fa90662	\
+		ebbd88ff3808c50e04119d0b42faf055c6eada2a:s	\
+		31cd2bbb0d76f2b9fd83011d8f079d97540b0ba8:m
+GL_SUBDIR=	spm:s cmake_modules/morse_cmake:m
+
+CMAKE_ARGS=	-DBUILD_SHARED_LIBS:BOOL=ON	\
+		-DPASTIX_ORDERING_METIS:BOOL=ON
+USE_LDCONFIG=	yes
+TEST_TARGET=	test
+
+OPTIONS_DEFINE=	EXAMPLES
+EX2FIX=		example spm/examples spm/wrappers/fortran90 spm/wrappers/python	\
+		wrappers/fortran90 wrappers/python example/old
+
+pre-configure:
+.for ex in ${EX2FIX}
+	${REINPLACE_CMD} -e 's|DESTINATION examples|DESTINATION ${EXAMPLESDIR}/${ex:C/examples//:C/example//}|'	\
+		${WRKSRC}/${ex}/CMakeLists.txt
+.endfor
+
+.include <bsd.port.mk>
diff --git a/science/pastix/distinfo b/science/pastix/distinfo
new file mode 100644
index 000000000000..f80ef2007e9e
--- /dev/null
+++ b/science/pastix/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1650640815
+SHA256 (solverstack-pastix-071d5ae165c744ec3e62f5bdd246b12f8fa90662_GL0.tar.gz) = c712f41d0dc2881fe9f8d91908b7d7e8a30d496fb60680992dd01a0cf06b288c
+SIZE (solverstack-pastix-071d5ae165c744ec3e62f5bdd246b12f8fa90662_GL0.tar.gz) = 1116421
+SHA256 (solverstack-spm-ebbd88ff3808c50e04119d0b42faf055c6eada2a_GL0.tar.gz) = bf744fc2dca9691f03a25585d7f304d230401a50649d93b9ef2d95b432bf44a6
+SIZE (solverstack-spm-ebbd88ff3808c50e04119d0b42faf055c6eada2a_GL0.tar.gz) = 698306
+SHA256 (solverstack-morse_cmake-31cd2bbb0d76f2b9fd83011d8f079d97540b0ba8_GL0.tar.gz) = b1bc4e97dece9260667409fa238798caf738e30a655a3c53ddf7a94163240329
+SIZE (solverstack-morse_cmake-31cd2bbb0d76f2b9fd83011d8f079d97540b0ba8_GL0.tar.gz) = 77602
diff --git a/science/pastix/files/patch-cmake__modules_morse__cmake_modules_find_LibrariesAbsolutePath.cmake b/science/pastix/files/patch-cmake__modules_morse__cmake_modules_find_LibrariesAbsolutePath.cmake
new file mode 100644
index 000000000000..2a28d0d2cd71
--- /dev/null
+++ b/science/pastix/files/patch-cmake__modules_morse__cmake_modules_find_LibrariesAbsolutePath.cmake
@@ -0,0 +1,18 @@
+--- cmake_modules/morse_cmake/modules/find/LibrariesAbsolutePath.cmake.orig	2021-06-14 12:08:21 UTC
++++ cmake_modules/morse_cmake/modules/find/LibrariesAbsolutePath.cmake
+@@ -55,6 +55,7 @@ macro(LIBRARIES_ABSOLUTE_PATH lib_list hints_paths)
+         endif()
+       endif()
+ 
++      if (NOT ${_library} STREQUAL "-pthread")
+       # try to find the lib
+       find_library(_library_path
+         NAMES ${_library}
+@@ -66,6 +67,7 @@ macro(LIBRARIES_ABSOLUTE_PATH lib_list hints_paths)
+           message(FATAL_ERROR "Dependency of ${lib_list} '${_library}' NOT FOUND")
+       endif()
+       unset(_library_path CACHE)
++      endif()
+     endif()
+   endforeach()
+ endmacro()
diff --git a/science/pastix/pkg-descr b/science/pastix/pkg-descr
new file mode 100644
index 000000000000..8f4702677f92
--- /dev/null
+++ b/science/pastix/pkg-descr
@@ -0,0 +1,9 @@
+PaStiX (Parallel Sparse matriX package) is a scientific library that provides a
+high performance parallel solver for very large sparse linear systems based on
+direct methods. Numerical algorithms are implemented in single or double
+precision (real or complex) using LLt, LDLt and LU with static pivoting (for non
+symmetric matrices having a symmetric pattern). This solver also provides some
+low-rank compression methods to reduce the memory footprint and/or the
+time-to-solution.
+
+WWW: https://solverstack.gitlabpages.inria.fr/pastix/
diff --git a/science/pastix/pkg-plist b/science/pastix/pkg-plist
new file mode 100644
index 000000000000..837d299c6b6d
--- /dev/null
+++ b/science/pastix/pkg-plist
@@ -0,0 +1,173 @@
+bin/pastix_env.sh
+include/pastix.h
+include/pastix/api.h
+include/pastix/cblas.h
+include/pastix/config.h
+include/pastix/datatypes.h
+include/pastix/graph.h
+include/pastix/lapacke.h
+include/pastix/old_api.h
+include/pastix/order.h
+include/pastix_enums.mod
+include/pastixf.mod
+include/spm.h
+include/spm/c_spm.h
+include/spm/config.h
+include/spm/const.h
+include/spm/d_spm.h
+include/spm/datatypes.h
+include/spm/mpi.h
+include/spm/p_spm.h
+include/spm/s_spm.h
+include/spm/z_spm.h
+include/spm_enums.mod
+include/spmf.mod
+lib/cmake/pastix/PASTIXConfig.cmake
+lib/cmake/pastix/PASTIXConfigVersion.cmake
+lib/cmake/pastix/find/FindBLASEXT.cmake
+lib/cmake/pastix/find/FindCBLAS.cmake
+lib/cmake/pastix/find/FindEZTRACE.cmake
+lib/cmake/pastix/find/FindGTG.cmake
+lib/cmake/pastix/find/FindHWLOC.cmake
+lib/cmake/pastix/find/FindHeadersAndLibs.cmake
+lib/cmake/pastix/find/FindLAPACKE.cmake
+lib/cmake/pastix/find/FindLAPACKEXT.cmake
+lib/cmake/pastix/find/FindLITL.cmake
+lib/cmake/pastix/find/FindM.cmake
+lib/cmake/pastix/find/FindMETIS.cmake
+lib/cmake/pastix/find/FindMorseCommon.cmake
+lib/cmake/pastix/find/FindMorseInit.cmake
+lib/cmake/pastix/find/FindPARMETIS.cmake
+lib/cmake/pastix/find/FindPARSEC.cmake
+lib/cmake/pastix/find/FindPTSCOTCH.cmake
+lib/cmake/pastix/find/FindSCOTCH.cmake
+lib/cmake/pastix/find/FindSTARPU.cmake
+lib/cmake/pastix/find/FindTMG.cmake
+lib/cmake/pastix/find/LibrariesAbsolutePath.cmake
+lib/cmake/pastix/find/MORSE-Copyright.txt
+lib/cmake/pastix/find/ParseArguments.cmake
+lib/cmake/pastix/find/PrintFindStatus.cmake
+lib/cmake/pastix/pastixTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/pastix/pastixTargets.cmake
+lib/cmake/pastix/pastix_kernelsTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/pastix/pastix_kernelsTargets.cmake
+lib/cmake/pastix/pastixfTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/pastix/pastixfTargets.cmake
+lib/cmake/spm/SPMConfig.cmake
+lib/cmake/spm/SPMConfigVersion.cmake
+lib/cmake/spm/find/FindCBLAS.cmake
+lib/cmake/spm/find/FindHeadersAndLibs.cmake
+lib/cmake/spm/find/FindLAPACKE.cmake
+lib/cmake/spm/find/FindM.cmake
+lib/cmake/spm/find/FindMorseCommon.cmake
+lib/cmake/spm/find/FindMorseInit.cmake
+lib/cmake/spm/find/FindSCOTCH.cmake
+lib/cmake/spm/find/LibrariesAbsolutePath.cmake
+lib/cmake/spm/find/MORSE-Copyright.txt
+lib/cmake/spm/find/ParseArguments.cmake
+lib/cmake/spm/find/PrintFindStatus.cmake
+lib/cmake/spm/spmTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/spm/spmTargets.cmake
+lib/cmake/spm/spmfTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/spm/spmfTargets.cmake
+lib/julia/PaStiX/Project.toml
+lib/julia/PaStiX/examples/schur.jl
+lib/julia/PaStiX/examples/simple.jl
+lib/julia/PaStiX/examples/step-by-step.jl
+lib/julia/PaStiX/src/PaStiX.jl
+lib/julia/PaStiX/src/pastix_enums.jl
+lib/julia/spm/Project.toml
+lib/julia/spm/examples/spm_driver.jl
+lib/julia/spm/examples/spm_user.jl
+lib/julia/spm/src/spm.jl
+lib/julia/spm/src/spm_enums.jl
+lib/libpastix.so
+lib/libpastix.so.6.2
+lib/libpastix.so.6.2.1
+lib/libpastix_kernels.so
+lib/libpastixf.so
+lib/libpastixf.so.6
+lib/libpastixf.so.6.2.1
+lib/libspm.so
+lib/libspm.so.1
+lib/libspm.so.1.1.0
+lib/libspmf.so
+lib/libspmf.so.1
+lib/libspmf.so.1.1.0
+lib/python/pypastix/__init__.py
+lib/python/pypastix/__pastix__.py
+lib/python/pypastix/enum.py
+lib/python/pypastix/pastix.py
+lib/python/pypastix/solver.py
+lib/python/spm/__init__.py
+lib/python/spm/__spm__.py
+lib/python/spm/enum.py
+lib/python/spm/spm.py
+libdata/pkgconfig/pastix.pc
+libdata/pkgconfig/pastixf.pc
+libdata/pkgconfig/spm.pc
+libdata/pkgconfig/spmf.pc
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Makefile
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/analyze
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/analyze.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bench_facto
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bench_facto.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/compress
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/compress.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/multidof
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/multidof.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/old/old/Makefile
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/old/old/old_simple
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/old/old/old_step-by-step
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/old/old/simple.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/old/old/step-by-step.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/personal
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/personal.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/reentrant
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/reentrant.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/refinement
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/refinement.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/schur
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/schur.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/simple
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/simple.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/simple_dist
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/simple_dist.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/simple_trans
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/simple_trans.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/Makefile
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_drivers
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_drivers.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_lap1
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_lap1.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_lap2
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_lap2.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_mdof1
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_mdof1.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_mdof2
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/example_mdof2.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/wrappers/fortran90/spmf_driver
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/wrappers/fortran90/spmf_driver.F90
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/wrappers/fortran90/spmf_user
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/wrappers/fortran90/spmf_user.F90
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/wrappers/python/spm_driver.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spm/wrappers/python/spm_scipy.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/step-by-step
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/step-by-step.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/flaplacian
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/flaplacian.f90
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fmultidof
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fmultidof.f90
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fmultilap
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fmultilap.f90
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fsimple
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fsimple.f90
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fstep-by-step
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/fstep-by-step.f90
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/test_mt.in
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/fortran90/test_seq.in
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/python/python/schur.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/python/python/schur_obj.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/python/python/simple.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/python/python/simple_obj.py
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wrappers/python/python/step-by-step.py