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.
This commit is contained in:
Thierry Thomas 2025-04-20 14:51:49 +02:00
parent 9753aee9f0
commit bb5d336a9d
5 changed files with 53 additions and 49 deletions

View file

@ -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>

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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