commit:     9280e069ddb743ca233d2091b7ccb5a74e3c1841
Author:     Marek Szuba <marecki <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 16 10:08:57 2021 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Fri Jul 16 11:43:26 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9280e069

sci-libs/metis: support USE="doc double-precision examples int64"

USE flags: all of these were implemented (incorrectly in case of the two
type switchers, I might add) for the METIS version bundled in
sci-libs/parmetis yet not here.

Signed-off-by: Marek Szuba <marecki <AT> gentoo.org>

 sci-libs/metis/metadata.xml          |  6 ++-
 sci-libs/metis/metis-5.1.0-r5.ebuild | 79 ++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+), 1 deletion(-)

diff --git a/sci-libs/metis/metadata.xml b/sci-libs/metis/metadata.xml
index 142ea93c83a..cfc70289ed3 100644
--- a/sci-libs/metis/metadata.xml
+++ b/sci-libs/metis/metadata.xml
@@ -11,5 +11,9 @@
   orderings for sparse matrices. The algorithms implemented in METIS are
   based on the multilevel recursive-bisection, multilevel k-way, and
   multi-constraint partitioning schemes.
-</longdescription>
+  </longdescription>
+  <use>
+    <flag name="double-precision">Use double- rather than single-precision 
floating-point representation</flag>
+    <flag name="int64">Use 64- rather than 32-bit integer representation 
(needed for &gt; 2^31 vertices)</flag>
+  </use>
 </pkgmetadata>

diff --git a/sci-libs/metis/metis-5.1.0-r5.ebuild 
b/sci-libs/metis/metis-5.1.0-r5.ebuild
new file mode 100644
index 00000000000..f10620aef76
--- /dev/null
+++ b/sci-libs/metis/metis-5.1.0-r5.ebuild
@@ -0,0 +1,79 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake
+
+DESCRIPTION="A package for unstructured serial graph partitioning"
+HOMEPAGE="https://www-users.cs.umn.edu/~karypis/metis/metis/";
+SRC_URI="http://glaros.dtc.umn.edu/gkhome/fetch/sw/${PN}/${P}.tar.gz";
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86 
~amd64-linux ~x86-linux"
+IUSE="doc double-precision examples int64 openmp"
+
+RDEPEND="!sci-libs/parmetis"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-shared-GKlib.patch
+       "${FILESDIR}"/${P}-multilib.patch
+       "${FILESDIR}"/${P}-remove-GKlib-O3.patch
+)
+
+src_prepare() {
+       if use int64; then
+               sed -i -e '/^#define IDXTYPEWIDTH/s/32/64/' include/metis.h || 
die
+       fi
+
+       if use double-precision; then
+               sed -i -e '/^#define REALTYPEWIDTH/s/32/64/' include/metis.h || 
die
+       fi
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DGKLIB_PATH="${S}"/GKlib
+               -DSHARED=yes
+               -DOPENMP=$(usex openmp)
+       )
+       cmake_src_configure
+}
+
+src_test() {
+       cd graphs || die
+       local PATH="${BUILD_DIR}"/programs/:${PATH}
+
+       ndmetis mdual.graph || die
+       mpmetis metis.mesh 2 || die
+       gpmetis test.mgraph 4 || die
+       gpmetis copter2.graph 4 || die
+       graphchk 4elt.graph || die
+}
+
+src_install() {
+       cmake_src_install
+       use doc && dodoc manual/manual.pdf
+       if use examples; then
+               docinto examples
+               dodoc -r programs graphs
+       fi
+
+       cat >> "${T}"/metis.pc <<- EOF || die
+               prefix=${EPREFIX}/usr
+               exec_prefix=\${prefix}
+               libdir=\${exec_prefix}/$(get_libdir)
+               includedir=\${prefix}/include
+
+               Name: METIS
+               Description: Software for partioning unstructured graphes and 
meshes
+               Version: ${PV}
+               Cflags: -I\${includedir}/metis
+               Libs: -L\${libdir} -lmetis
+       EOF
+       insinto /usr/$(get_libdir)/pkgconfig
+       doins "${T}"/metis.pc
+}

Reply via email to