git: db440cb7a19d - main - math/arpack-ng: Flavorize on MPI implementation

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sun, 08 Mar 2026 19:33:22 UTC
The branch main has been updated by yuri:

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

commit db440cb7a19d2e088f7d643656338ca0de8ce66d
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-03-08 19:27:41 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-03-08 19:33:20 +0000

    math/arpack-ng: Flavorize on MPI implementation
    
    Positives are that now *-mpich, *-openmpi, *-nompi
    packages would be all available.
    
    Negative is that they conflict with each other.
    The files need to have the unique suffix.
    
    All flavors are equal, there is no obvious default
    among them, so suffixes were added to all of them
    to make it clear which implementation is installed.
    
    PR:             293569
    Requested by:   Steve Kargl <kargl@FreeBSD.org>
---
 cad/calculix-ccx/Makefile |  4 +--
 math/armadillo/Makefile   |  3 ++-
 math/arpack++/Makefile    |  4 +--
 math/arpack-ng/Makefile   | 64 ++++++++++++++++++++++++++++++++++++++++++-----
 math/arpack-ng/pkg-plist  |  5 ----
 math/deal.ii/Makefile     |  6 ++---
 math/dune-fem/Makefile    |  4 +--
 math/dune-pdelab/Makefile |  4 +--
 math/dune-vtk/Makefile    |  4 +--
 math/freefem++/Makefile   |  4 +--
 math/igraph/Makefile      |  3 ++-
 math/octave/Makefile      |  4 +--
 math/py-igraph/Makefile   |  3 ++-
 math/scilab/Makefile      |  4 +--
 science/dftbplus/Makefile |  4 +--
 science/elmerfem/Makefile |  4 +--
 science/mbdyn/Makefile    |  4 +--
 science/octopus/Makefile  |  4 +--
 18 files changed, 91 insertions(+), 41 deletions(-)

diff --git a/cad/calculix-ccx/Makefile b/cad/calculix-ccx/Makefile
index 34987fdb43a0..e0d3c5b5c77a 100644
--- a/cad/calculix-ccx/Makefile
+++ b/cad/calculix-ccx/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	ccx
 DISTVERSION=	2.22
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	cad
 MASTER_SITES=	http://www.dhondt.de/
 PKGNAMEPREFIX=	CalculiX-
@@ -15,7 +15,7 @@ WWW=		http://www.calculix.de/
 LICENSE=	GPLv2
 LICENSE_FILE=	${WRKSRC}/gpl-2.0.txt
 
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libspooles.so:math/spooles
 
 USES=		blaslapack fortran gmake perl5 tar:bzip2
diff --git a/math/armadillo/Makefile b/math/armadillo/Makefile
index 9e396d3ff985..e67003e794c2 100644
--- a/math/armadillo/Makefile
+++ b/math/armadillo/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	armadillo
 PORTVERSION=	15.2.3
+PORTREVISION=	1
 CATEGORIES=	math
 MASTER_SITES=	SF/arma
 
@@ -11,7 +12,7 @@ WWW=		https://arma.sourceforge.net/ \
 LICENSE=	APACHE20
 LICENSE_FILE=	${WRKSRC}/LICENSE.txt
 
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libsuperlu.so:math/superlu
 
 USES=		blaslapack:openblas cmake:testing compiler:c++11-lang pkgconfig tar:xz
diff --git a/math/arpack++/Makefile b/math/arpack++/Makefile
index 3c216ceddc83..ee5954aad657 100644
--- a/math/arpack++/Makefile
+++ b/math/arpack++/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	arpack++
 PORTVERSION=	2.4.0
-PORTREVISION=	13
+PORTREVISION=	14
 CATEGORIES=	math
 
 MAINTAINER=	ports@FreeBSD.org
@@ -10,7 +10,7 @@ WWW=		https://www.ime.unicamp.br/~chico/arpack++/
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libsuperlu.so:math/superlu \
 		libcholmod.so:math/suitesparse-cholmod \
 		libumfpack.so:math/suitesparse-umfpack
diff --git a/math/arpack-ng/Makefile b/math/arpack-ng/Makefile
index 6c6ae2ea1cc0..630623ccba10 100644
--- a/math/arpack-ng/Makefile
+++ b/math/arpack-ng/Makefile
@@ -1,28 +1,71 @@
 PORTNAME=	arpack-ng
 DISTVERSION=	3.9.1
-PORTREVISION=	5
+PORTREVISION=	6
 CATEGORIES=	math
 
 MAINTAINER=	yuri@FreeBSD.org
 COMMENT=	Revised Argand library for solving large-scale eigenvalue problems
-WWW=		https://forge.scilab.org/index.php/p/arpack-ng/
+WWW=		https://github.com/opencollab/arpack-ng
 
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-LIB_DEPENDS=	libmpich.so:net/mpich # MPI is incremental: it adds the libparpack.so lib, it is a candidate for a sub-package
+FLAVORS=	mpich openmpi nompi
+FLAVOR?=	${FLAVORS:[1]}
+mpich_PKGNAMESUFFIX=	-mpich
+openmpi_PKGNAMESUFFIX=	-openmpi
+nompi_PKGNAMESUFFIX=	-nompi
+
+USES=		autoreconf eigen:3 fortran libtool localbase pkgconfig
+USE_LDCONFIG=	yes
 
-USES=		autoreconf fortran libtool localbase pkgconfig
 USE_GITHUB=	yes
 GH_ACCOUNT=	opencollab
+
 GNU_CONFIGURE=	yes
 CONFIGURE_ARGS=	--with-blas="${BLASLIB}" \
 		--with-lapack="${LAPACKLIB}" \
-		--enable-mpi \
 		--disable-static \
 		--enable-icb
+
+.if ${FLAVOR} == mpich
+USES+=			mpi:mpich
+CONFIGURE_ARGS+=	--enable-mpi \
+			--with-mpi=${MPI_PREFIX} \
+			--with-mpi-lib="${MPI_LIBS}" \
+			--with-mpi-include="${MPI_INCLUDES}" # these are not respected, see https://github.com/opencollab/arpack-ng/issues/479
+CFLAGS+=		${MPI_CFLAGS}
+FFLAGS+=		${MPI_CFLAGS}
+FCFLAGS+=		${MPI_CFLAGS}
+LDFLAGS+=		${MPI_LIBS}
+PATH=			"${MPI_HOME}/bin::/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/bin"
+PLIST_FILES=		include/arpack/parpack.h \
+			include/arpack/parpack.hpp \
+			lib/libparpack.so \
+			lib/libparpack.so.2 \
+			lib/libparpack.so.2.1.0
+.endif
+
+.if ${FLAVOR} == openmpi
+USES+=			mpi:openmpi
+CONFIGURE_ARGS+=	--enable-mpi \
+			--with-mpi=${MPI_PREFIX} \
+			--with-mpi-lib="${MPI_LIBS}" \
+			--with-mpi-include="${MPI_INCLUDES}" # these are not respected, see https://github.com/opencollab/arpack-ng/issues/479
+CFLAGS+=		${MPI_CFLAGS}
+FFLAGS+=		${MPI_CFLAGS}
+FCFLAGS+=		${MPI_CFLAGS}
+LDFLAGS+=		${MPI_LIBS}
+PATH=			"${MPI_HOME}/bin::/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/bin"
+PLIST_FILES=		include/arpack/parpack.h \
+			include/arpack/parpack.hpp \
+			lib/libparpack.so \
+			lib/libparpack.so.2 \
+			lib/libparpack.so.2.1.0
+CONFLICTS_BUILD=	mpich
+.endif
+
 TEST_TARGET=	check
-USE_LDCONFIG=	yes
 
 PIE_UNSAFE=	yes
 
@@ -54,4 +97,13 @@ post-install-EXAMPLES-on:
 	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
 	cd ${WRKSRC}/EXAMPLES && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}
 
+# tests as of 3.9.1:
+# TOTAL: 8
+# PASS:  8
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+
 .include <bsd.port.mk>
diff --git a/math/arpack-ng/pkg-plist b/math/arpack-ng/pkg-plist
index 4e566a75cdbe..6026c6062419 100644
--- a/math/arpack-ng/pkg-plist
+++ b/math/arpack-ng/pkg-plist
@@ -6,8 +6,6 @@ include/arpack/debug.h
 include/arpack/debugF90.h
 include/arpack/debug_c.h
 include/arpack/debug_c.hpp
-include/arpack/parpack.h
-include/arpack/parpack.hpp
 include/arpack/stat.h
 include/arpack/statF90.h
 include/arpack/stat_c.h
@@ -15,8 +13,5 @@ include/arpack/stat_c.hpp
 lib/libarpack.so
 lib/libarpack.so.2
 lib/libarpack.so.2.1.0
-lib/libparpack.so
-lib/libparpack.so.2
-lib/libparpack.so.2.1.0
 libdata/pkgconfig/arpack.pc
 libdata/pkgconfig/parpack.pc
diff --git a/math/deal.ii/Makefile b/math/deal.ii/Makefile
index 1023331319ba..0dc9900cd712 100644
--- a/math/deal.ii/Makefile
+++ b/math/deal.ii/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	deal.II
 DISTVERSION=	9.6.2
-PORTREVISION=	13
+PORTREVISION=	14
 CATEGORIES=	math
 MASTER_SITES=	https://github.com/dealii/dealii/releases/download/v${DISTVERSION}/
 DISTNAME=	dealii-${DISTVERSION}
@@ -54,8 +54,8 @@ ADOLC_BROKEN=		requires the development version: see https://github.com/dealii/d
 ARPACK_DESC=		Compile with Arpack and PArpack (only with MPI, LAPACK)
 ARPACK_CMAKE_BOOL=	DEAL_II_WITH_ARPACK
 ARPACK_CMAKE_ON=	-DARPACK_LINKER_FLAGS:STRING="${LDFLAGS}"
-ARPACK_BUILD_DEPENDS=	arpack-ng>0:math/arpack-ng
-ARPACK_RUN_DEPENDS=	arpack-ng>0:math/arpack-ng # itself doesn't link to arpack, but makes depending project link to it
+ARPACK_BUILD_DEPENDS=	arpack-ng@mpich>0:math/arpack-ng@mpich
+ARPACK_RUN_DEPENDS=	arpack-ng@mpich>0:math/arpack-ng@mpich # itself doesn't link to arpack, but makes depending project link to it
 ARPACK_IMPLIES=		LAPACK
 
 GSL_DESC=		Compile with gsl
diff --git a/math/dune-fem/Makefile b/math/dune-fem/Makefile
index e04b8e5d07c6..01a9bc37ea1b 100644
--- a/math/dune-fem/Makefile
+++ b/math/dune-fem/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	dune-fem
 DISTVERSION=	2.8.0.5
-PORTREVISION=	29
+PORTREVISION=	30
 CATEGORIES=	math
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -17,7 +17,7 @@ BUILD_DEPENDS=	arpack++>0:math/arpack++ \
 		vc>0:devel/vc \
 		openmpi4>0:net/openmpi4
 LIB_DEPENDS=	libpsurface.so:math/psurface \
-		libarpack.so:math/arpack-ng \
+		libarpack.so:math/arpack-ng@mpich \
 		libdunealugrid.so:math/dune-alugrid \
 		libdunecommon.so:math/dune-common \
 		libdunegeometry.so:math/dune-geometry \
diff --git a/math/dune-pdelab/Makefile b/math/dune-pdelab/Makefile
index da798a4dc5fb..df34e5f7fcfe 100644
--- a/math/dune-pdelab/Makefile
+++ b/math/dune-pdelab/Makefile
@@ -1,7 +1,7 @@
 PORTNAME=	dune-pdelab
 DISTVERSIONPREFIX=	v
 DISTVERSION=	2.7.0.20210824
-PORTREVISION=	30
+PORTREVISION=	31
 CATEGORIES=	math
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -21,7 +21,7 @@ DUNE_DEPENDS=	dune-common>0:math/dune-common \
 BUILD_DEPENDS=	${DUNE_DEPENDS} \
 		suitesparse>0:math/suitesparse \
 		openmpi4>0:net/openmpi4
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libdunealugrid.so:math/dune-alugrid \
 		libduneuggrid.so:math/dune-uggrid \
 		libgmp.so:math/gmp \
diff --git a/math/dune-vtk/Makefile b/math/dune-vtk/Makefile
index 6c5bc55a6a7a..e2074be02d9e 100644
--- a/math/dune-vtk/Makefile
+++ b/math/dune-vtk/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	dune-vtk
 DISTVERSION=	2.8.0
-PORTREVISION=	28
+PORTREVISION=	29
 CATEGORIES=	math
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -16,7 +16,7 @@ BUILD_DEPENDS=	${HPP_DEPENDS} \
 		dune-functions>0:math/dune-functions \
 		suitesparse>0:math/suitesparse \
 		openmpi4>0:net/openmpi4
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libdunealugrid.so:math/dune-alugrid \
 		libdunecommon.so:math/dune-common \
 		libdunegeometry.so:math/dune-geometry \
diff --git a/math/freefem++/Makefile b/math/freefem++/Makefile
index 928ae503d7f0..cd7e2f833b2e 100644
--- a/math/freefem++/Makefile
+++ b/math/freefem++/Makefile
@@ -1,7 +1,7 @@
 PORTNAME=	freefem++
 DISTVERSIONPREFIX=	v
 DISTVERSION=	4.14
-PORTREVISION=	11
+PORTREVISION=	12
 CATEGORIES=	math science
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -23,7 +23,7 @@ LIB_DEPENDS=	libhdf5.so:science/hdf5		\
 		libcholmod.so:math/suitesparse-cholmod \
 		libcolamd.so:math/suitesparse-colamd \
 		libumfpack.so:math/suitesparse-umfpack	\
-		libarpack.so:math/arpack-ng	\
+		libarpack.so:math/arpack-ng@mpich	\
 		libfftw3.so:math/fftw3		\
 		libgsl.so:math/gsl		\
 		libipopt.so:math/ipopt		\
diff --git a/math/igraph/Makefile b/math/igraph/Makefile
index e03c1c38a9a3..4c5dc682e4d7 100644
--- a/math/igraph/Makefile
+++ b/math/igraph/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	igraph
 DISTVERSION=	1.0.1
+PORTREVISION=	1
 CATEGORIES=	math
 
 MAINTAINER=	wen@FreeBSD.org
@@ -10,7 +11,7 @@ LICENSE=	GPLv2
 LICENSE_FILE=	${WRKSRC}/COPYING
 
 BUILD_DEPENDS=	${LOCALBASE}/bin/flex:textproc/flex
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libcxsparse.so:math/suitesparse-cxsparse \
 		libglpk.so:math/glpk \
 		libgmp.so:math/gmp \
diff --git a/math/octave/Makefile b/math/octave/Makefile
index 9600faa835ab..18ceab63c834 100644
--- a/math/octave/Makefile
+++ b/math/octave/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	octave
 PORTVERSION=	${OCTAVE_VERSION}
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	math java
 MASTER_SITES=	GNU
 
@@ -20,7 +20,7 @@ RUN_DEPENDS=	${LOCALBASE}/bin/makeinfo:print/texinfo \
 		gnuplot:math/gnuplot \
 		gsed:textproc/gsed
 LIB_DEPENDS=	libamd.so:math/suitesparse-amd \
-		libarpack.so:math/arpack-ng \
+		libarpack.so:math/arpack-ng@mpich \
 		libcamd.so:math/suitesparse-camd \
 		libccolamd.so:math/suitesparse-ccolamd \
 		libcholmod.so:math/suitesparse-cholmod \
diff --git a/math/py-igraph/Makefile b/math/py-igraph/Makefile
index 59e9aed6bfd8..3428bd41c294 100644
--- a/math/py-igraph/Makefile
+++ b/math/py-igraph/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	igraph
 DISTVERSION=	0.11.9
+PORTREVISION=	1
 CATEGORIES=	math python
 MASTER_SITES=	PYPI
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -13,7 +14,7 @@ LICENSE=	GPLv2
 
 BUILD_DEPENDS=	cmake:devel/cmake-core \
 		${LOCALBASE}/bin/flex:textproc/flex
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libblas.so:math/blas \
 		libglpk.so:math/glpk \
 		libgmp.so:math/gmp \
diff --git a/math/scilab/Makefile b/math/scilab/Makefile
index 01af6df8fa9b..de130c37890c 100644
--- a/math/scilab/Makefile
+++ b/math/scilab/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	scilab
 DISTVERSION=	6.1.1
-PORTREVISION=	26
+PORTREVISION=	27
 CATEGORIES=	math cad java
 MASTER_SITES=	https://www.scilab.org/download/${DISTVERSION}/
 DISTFILES=	${DISTNAME}-src${EXTRACT_SUFX}
@@ -17,7 +17,7 @@ LICENSE_FILE_BSD3CLAUSE=	${WRKSRC}/COPYING-BSD
 LIB_DEPENDS=	libpcre.so:devel/pcre \
 		libcurl.so:ftp/curl \
 		libhdf5.so:science/hdf5 \
-		libarpack.so:math/arpack-ng \
+		libarpack.so:math/arpack-ng@mpich \
 		libfftw3.so:math/fftw3 \
 		libmatio.so:math/matio \
 		libamd.so:math/suitesparse-amd \
diff --git a/science/dftbplus/Makefile b/science/dftbplus/Makefile
index 3a409e022613..f97174af05a4 100644
--- a/science/dftbplus/Makefile
+++ b/science/dftbplus/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	dftbplus
 DISTVERSION=	24.1
-PORTREVISION=	6
+PORTREVISION=	7
 CATEGORIES=	science
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -45,7 +45,7 @@ OPTIONS_SUB=		yes
 
 ARPACK_DESC=		Build with ARPACK for large eigenvalue problems
 ARPACK_CMAKE_BOOL=	WITH_ARPACK
-ARPACK_LIB_DEPENDS=	libarpack.so:math/arpack-ng
+ARPACK_LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich
 ARPACK_PREVENTS=	MPIX # ARPACK is only used in a single-core application
 
 CHIMES_DESC=		Build with ChIMES
diff --git a/science/elmerfem/Makefile b/science/elmerfem/Makefile
index dd95c15940be..ecc20d9461ec 100644
--- a/science/elmerfem/Makefile
+++ b/science/elmerfem/Makefile
@@ -1,7 +1,7 @@
 PORTNAME=	elmerfem
 DISTVERSIONPREFIX=	release-
 DISTVERSION=	26.1
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	science
 
 MAINTAINER=	thierry@FreeBSD.org
@@ -13,7 +13,7 @@ LICENSE=	GPLv2
 LIB_DEPENDS=	libhdf5.so:science/hdf5 \
 		libmetis.so:math/metis \
 		libnetcdf.so:science/netcdf \
-		libparpack.so:math/arpack-ng \
+		libparpack.so:math/arpack-ng@mpich \
 		libcholmod.so:math/suitesparse-cholmod \
 	        libumfpack.so:math/suitesparse-umfpack
 
diff --git a/science/mbdyn/Makefile b/science/mbdyn/Makefile
index 4ac211eda4e6..30660544cc89 100644
--- a/science/mbdyn/Makefile
+++ b/science/mbdyn/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	mbdyn
 DISTVERSION=	1.7.3
-PORTREVISION=	19
+PORTREVISION=	20
 CATEGORIES=	science
 MASTER_SITES=	https://www.mbdyn.org/userfiles/downloads/
 
@@ -15,7 +15,7 @@ BROKEN_powerpc=		does not compile on powerpc
 
 BUILD_DEPENDS=	libatomic_ops>0:devel/libatomic_ops
 LIB_DEPENDS=	libltdl.so:devel/libltdl \
-		libarpack.so:math/arpack-ng \
+		libarpack.so:math/arpack-ng@mpich \
 		libumfpack.so:math/suitesparse-umfpack
 
 USES=		compiler:c++11-lib fortran gmake libtool:build localbase
diff --git a/science/octopus/Makefile b/science/octopus/Makefile
index 22441bbe7d82..d77e6e61612f 100644
--- a/science/octopus/Makefile
+++ b/science/octopus/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	octopus
 DISTVERSION=	16.0
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	science # chemistry
 MASTER_SITES=	https://octopus-code.org/download/${DISTVERSION}/
 
@@ -13,7 +13,7 @@ LICENSE=	GPLv2
 BROKEN_aarch64=	fails to build: Cannot find an intrinsic module named 'ieee_arithmetic'
 
 BUILD_DEPENDS=	bash:shells/bash
-LIB_DEPENDS=	libarpack.so:math/arpack-ng \
+LIB_DEPENDS=	libarpack.so:math/arpack-ng@mpich \
 		libblas.so:math/blas \
 		libfftw3.so:math/fftw3 \
 		libfontconfig.so:x11-fonts/fontconfig \