git: bb5d336a9dd0 - main - math/parmetis: switch to PETSc fork

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Sun, 20 Apr 2025 13:05:18 UTC
The branch main has been updated by thierry:

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

commit bb5d336a9dd0557ba3f7f679384e10d4d3c1ef09
Author:     Thierry Thomas <thierry@FreeBSD.org>
AuthorDate: 2025-04-20 12:51:49 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2025-04-20 13:03:36 +0000

    math/parmetis: switch to PETSc fork
    
    Upstream disapeared, and 2 forks are available, KarypisLab on GitHub and
    the PETSc one. ATM PETSc seems more active.
    
    Don’t install one more libmetis but depend on the regular one, and thus
    don’t install the libraries under $PREFIX/lib/parmetis.
    
    Note: manual.pdf is no more available.
---
 math/parmetis/Makefile                   | 69 +++++++++++++++-----------------
 math/parmetis/distinfo                   |  6 +--
 math/parmetis/files/patch-CMakeLists.txt | 15 +++++--
 math/parmetis/pkg-descr                  |  2 +
 math/parmetis/pkg-plist                  | 10 ++---
 5 files changed, 53 insertions(+), 49 deletions(-)

diff --git a/math/parmetis/Makefile b/math/parmetis/Makefile
index 387717439c10..ed345f9a1d04 100644
--- a/math/parmetis/Makefile
+++ b/math/parmetis/Makefile
@@ -1,28 +1,28 @@
 PORTNAME=	ParMetis
-PORTVERSION=	4.0.3
-PORTREVISION=	8
+DISTVERSION=	4.0.3-p10
 CATEGORIES=	math parallel
-MASTER_SITES=	http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/
-DISTNAME=	${PORTNAME:tl}-${PORTVERSION}
+MASTER_SITES=	https://bitbucket.org/petsc/pkg-parmetis/get/
+DISTNAME=	${LGCOMMIT}
+DIST_SUBDIR=	Metis
 
 MAINTAINER=	ports@FreeBSD.org
 COMMENT=	Package for parallel (MPI) unstructured graph partitioning
-WWW=		http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview
+WWW=		https://bitbucket.org/petsc/pkg-parmetis
 
 LICENSE=	METIS
 LICENSE_NAME=	University of Minnesota METIS License
 LICENSE_FILE=	${WRKSRC}/LICENSE.txt
 LICENSE_PERMS=	auto-accept
 
-BROKEN=		Unfetchable
-DEPRECATED=	Fails to fetch, unmaintained for years in tree
-EXPIRATION_DATE=2025-02-28
+BUILD_DEPENDS=	${NONEXISTENT}:math/metis:configure
+LIB_DEPENDS=	libmetis.so:math/metis
 
-USES=		cmake:insource,noninja gmake
-USE_LDCONFIG=	${PREFIX}/lib/parmetis
+USES=		cmake:insource,noninja gmake tar:bzip2
+CONFIGURE_ENV=	MPI_HOME="${MPI_HOME}"
+USE_LDCONFIG=	yes
 
-OPTIONS_DEFINE=	OPENMPI DOCS STATIC
-OPENMPI_DESC=	Use openmpi instead of mpich
+OPTIONS_DEFINE=	OPENMPI STATIC
+OPENMPI_DESC=	Use OpenMPI instead of MPICH
 OPTIONS_SUB=	yes
 
 OPENMPI_USES=			mpi:openmpi
@@ -31,53 +31,50 @@ OPENMPI_USES_OFF=		mpi
 STATIC_DESC=			Do not build and install shared library
 STATIC_VARS_OFF=		SH_FLAG="shared=1"
 
+SHCOMMIT=	53c9341b6c1b
+LGCOMMIT=	${SHCOMMIT}a876c97567cb52ddfc87c159dc36
+
+WRKSRC=		${WRKDIR}/petsc-pkg-parmetis-${SHCOMMIT}
+METIS_WRKSRC=	${MAKE} -C ${PORTSDIR}/math/metis -VWRKSRC
+
 CFLAGS+=	-fPIC
 
 .include <bsd.port.options.mk>
 
+.if ((${ARCH}=="amd64") || (${ARCH}=="aarch64") || (${ARCH}=="ppc64"))
+CFLAGS+=	-DMETIS_USE_LONGINDEX
+.endif
+
 pre-configure:
-	@${REINPLACE_CMD} -e \
+	@${MKDIR} ${WRKSRC}/metis
+	${CP} -Rp "`${METIS_WRKSRC}`"/* ${WRKSRC}/metis
+	${REINPLACE_CMD} -e \
 		's|BUILDDIR =.*|BUILDDIR = build| ; \
 		 s|make -C|$$(MAKE) -C| ; \
 		 s|$$(MAKEFLAGS)||' ${WRKSRC}/Makefile
-	@${REINPLACE_CMD} -e \
+	${REINPLACE_CMD} -e \
 		's|"-O3"|""|' ${WRKSRC}/metis/GKlib/GKlibSystem.cmake
-.if ((${ARCH}=="amd64") || (${ARCH}=="aarch64") || (${ARCH}=="ppc64"))
-	@${REINPLACE_CMD} -e \
-		's|IDXTYPEWIDTH 32|IDXTYPEWIDTH 64|' \
-		${WRKSRC}/metis/include/metis.h
-.endif
-	@${REINPLACE_CMD} -e \
+	${REINPLACE_CMD} -e \
 		'/target_link_libraries(.* parmetis)/s/\(parmetis\)/& -lexecinfo/' \
 		${WRKSRC}/programs/CMakeLists.txt
 
 do-configure:
-	@cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \
 		${MAKEFILE} config prefix="${PREFIX}" cc="${MPICC}" cxx="${MPICXX}" ${SH_FLAG}
 
 do-install:
-	@${MKDIR} ${STAGEDIR}${PREFIX}/include/parmetis \
-		${STAGEDIR}${PREFIX}/lib/parmetis \
-		${STAGEDIR}${DOCSDIR}
+	@${MKDIR} ${STAGEDIR}${PREFIX}/include/parmetis
 	${INSTALL_DATA} ${WRKSRC}/include/parmetis.h \
 		${WRKSRC}/metis/include/metis.h \
 		${STAGEDIR}${PREFIX}/include/parmetis
 .if ${PORT_OPTIONS:MSTATIC}
-	${INSTALL_DATA} ${WRKSRC}/build/libmetis/libmetis.a \
-		${STAGEDIR}${PREFIX}/lib/parmetis
 	${INSTALL_DATA} ${WRKSRC}/build/libparmetis/libparmetis.a \
-		${STAGEDIR}${PREFIX}/lib/parmetis
+		${STAGEDIR}${PREFIX}/lib
 .else
-	${INSTALL_DATA} ${WRKSRC}/build/libmetis/libmetis.so \
-		${STAGEDIR}${PREFIX}/lib/parmetis/libmetis.so.2
 	${INSTALL_LIB} ${WRKSRC}/build/libparmetis/libparmetis.so \
-		${STAGEDIR}${PREFIX}/lib/parmetis/libparmetis.so.2
-	cd ${STAGEDIR}${PREFIX}/lib/parmetis &&	\
-		${LN} -sf libmetis.so.2 ${STAGEDIR}${PREFIX}/lib/parmetis/libmetis.so && \
-		${LN} -sf libparmetis.so.2 ${STAGEDIR}${PREFIX}/lib/parmetis/libparmetis.so
-	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/parmetis/libmetis.so.2
+		${STAGEDIR}${PREFIX}/lib/libparmetis.so.2
+	cd ${STAGEDIR}${PREFIX}/lib &&	\
+		${LN} -sf libparmetis.so.2 ${STAGEDIR}${PREFIX}/lib/libparmetis.so
 .endif
-	${MKDIR} ${STAGEDIR}${DOCSDIR}
-	${INSTALL_DATA} ${WRKSRC}/manual/manual.pdf ${STAGEDIR}${DOCSDIR}
 
 .include <bsd.port.mk>
diff --git a/math/parmetis/distinfo b/math/parmetis/distinfo
index af89bf13cf63..ff4e351167ca 100644
--- a/math/parmetis/distinfo
+++ b/math/parmetis/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1496443330
-SHA256 (parmetis-4.0.3.tar.gz) = f2d9a231b7cf97f1fee6e8c9663113ebf6c240d407d3c118c55b3633d6be6e5f
-SIZE (parmetis-4.0.3.tar.gz) = 5567670
+TIMESTAMP = 1744994910
+SHA256 (Metis/53c9341b6c1ba876c97567cb52ddfc87c159dc36.tar.bz2) = 6dd7cf7eedb8fe4cd88caa42d471aac69001606277f869b75a4e060b38e95a54
+SIZE (Metis/53c9341b6c1ba876c97567cb52ddfc87c159dc36.tar.bz2) = 111121
diff --git a/math/parmetis/files/patch-CMakeLists.txt b/math/parmetis/files/patch-CMakeLists.txt
index fbdbe348b487..48831758cb76 100644
--- a/math/parmetis/files/patch-CMakeLists.txt
+++ b/math/parmetis/files/patch-CMakeLists.txt
@@ -1,13 +1,22 @@
---- CMakeLists.txt.orig	2013-03-30 16:24:50 UTC
+--- CMakeLists.txt.orig	2025-03-31 19:32:32 UTC
 +++ CMakeLists.txt
-@@ -19,8 +19,10 @@ execute_process(COMMAND ${CMAKE_COMMAND}
+@@ -21,9 +21,11 @@ if(SHARED)
  # Prepare libraries.
  if(SHARED)
    set(ParMETIS_LIBRARY_TYPE SHARED)
 +  set(METIS_LIBRARY_TYPE SHARED)
+   set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
  else()
    set(ParMETIS_LIBRARY_TYPE STATIC)
 +  set(METIS_LIBRARY_TYPE STATIC)
  endif()
  
- include(${GKLIB_PATH}/GKlibSystem.cmake)
+ # List of paths that the compiler will search for header files.
+@@ -36,6 +38,7 @@ include_directories(${CMAKE_INSTALL_PREFIX}/include)
+ 
+ # List of paths that the compiler will search for library files.
+ # i.e., the -L equivalent
++link_directories(${MPI_LINK_FLAGS})
+ link_directories(${METIS_PATH}/lib)
+ link_directories(${CMAKE_INSTALL_PREFIX}/lib)
+ 
diff --git a/math/parmetis/pkg-descr b/math/parmetis/pkg-descr
index 8c4ec46332f7..adfaa891f428 100644
--- a/math/parmetis/pkg-descr
+++ b/math/parmetis/pkg-descr
@@ -7,3 +7,5 @@ numerical simulations. The algorithms implemented in ParMETIS are
 based on the parallel multilevel k-way graph-partitioning algorithms
 described in [KK95d], [KK96], [KK97], and the adaptive repartitioning
 algorithms described in [SKK97a], [SKK97b], [SK+98], and [SKK98].
+
+See also: https://github.com/KarypisLab/ParMETIS
diff --git a/math/parmetis/pkg-plist b/math/parmetis/pkg-plist
index a7b45f0eadc1..6c4468ed1301 100644
--- a/math/parmetis/pkg-plist
+++ b/math/parmetis/pkg-plist
@@ -1,9 +1,5 @@
 include/parmetis/metis.h
 include/parmetis/parmetis.h
-%%STATIC%%lib/parmetis/libmetis.a
-%%NO_STATIC%%lib/parmetis/libmetis.so
-%%NO_STATIC%%lib/parmetis/libmetis.so.2
-%%STATIC%%lib/parmetis/libparmetis.a
-%%NO_STATIC%%lib/parmetis/libparmetis.so
-%%NO_STATIC%%lib/parmetis/libparmetis.so.2
-%%DOCSDIR%%/manual.pdf
+%%STATIC%%lib/libparmetis.a
+%%NO_STATIC%%lib/libparmetis.so
+%%NO_STATIC%%lib/libparmetis.so.2