Gentoo Archives: gentoo-commits

From: Marek Szuba <marecki@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sci-libs/parmetis/files/, sci-libs/parmetis/
Date: Fri, 16 Jul 2021 11:43:47
Message-Id: 1626435805.fab9308cfb8c6c168b169803c9d8d04d3696dc64.marecki@gentoo
1 commit: fab9308cfb8c6c168b169803c9d8d04d3696dc64
2 Author: Marek Szuba <marecki <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jul 16 10:00:02 2021 +0000
4 Commit: Marek Szuba <marecki <AT> gentoo <DOT> org>
5 CommitDate: Fri Jul 16 11:43:25 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fab9308c
7
8 sci-libs/parmetis: major refactoring
9
10 1. Update to EAPI 7 and cmake.eclass
11 2. Unbundle sci-libs/metis
12 3. Remove IUSE=mpi - with METIS unbundled, settings USE=-mpi effectively
13 turns this package into a metapackage
14 4. Add USE=fortran requirement to virtual/mpi - without it,
15 libparmetis.so ends up with unresolved symbol MPI_Comm_f2c
16 5. CMakeFiles are now modified by patches rather than sed - the changes
17 are entirely static so there is no need for the latter
18
19 Signed-off-by: Marek Szuba <marecki <AT> gentoo.org>
20
21 .../files/parmetis-4.0.3-01-cmake-paths.patch | 37 +++++++++++
22 .../files/parmetis-4.0.3-02-unbundle-metis.patch | 10 +++
23 sci-libs/parmetis/parmetis-4.0.3-r2.ebuild | 76 ++++++++++++++++++++++
24 3 files changed, 123 insertions(+)
25
26 diff --git a/sci-libs/parmetis/files/parmetis-4.0.3-01-cmake-paths.patch b/sci-libs/parmetis/files/parmetis-4.0.3-01-cmake-paths.patch
27 new file mode 100644
28 index 00000000000..cdff3c0ea49
29 --- /dev/null
30 +++ b/sci-libs/parmetis/files/parmetis-4.0.3-01-cmake-paths.patch
31 @@ -0,0 +1,37 @@
32 +--- a/CMakeLists.txt
33 ++++ b/CMakeLists.txt
34 +@@ -1,6 +1,8 @@
35 + cmake_minimum_required(VERSION 2.8)
36 + project(ParMETIS)
37 +
38 ++include(GNUInstallDirs)
39 ++
40 + set(GKLIB_PATH METIS/GKlib CACHE PATH "path to GKlib")
41 + set(METIS_PATH METIS CACHE PATH "path to METIS")
42 +
43 +@@ -36,7 +38,6 @@
44 + add_subdirectory(${METIS_PATH}/libmetis ${CMAKE_BINARY_DIR}/libmetis)
45 + add_subdirectory(include)
46 + add_subdirectory(libparmetis)
47 +-add_subdirectory(programs)
48 +
49 + # This is for testing during development and is not being distributed
50 + #add_subdirectory(test)
51 +--- a/include/CMakeLists.txt
52 ++++ b/include/CMakeLists.txt
53 +@@ -1 +1 @@
54 +-install(FILES parmetis.h DESTINATION include)
55 +\ No newline at end of file
56 ++install(FILES parmetis.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
57 +--- a/libparmetis/CMakeLists.txt
58 ++++ b/libparmetis/CMakeLists.txt
59 +@@ -9,6 +9,6 @@
60 + set_target_properties(parmetis PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}")
61 +
62 + install(TARGETS parmetis
63 +- LIBRARY DESTINATION lib
64 +- RUNTIME DESTINATION lib
65 +- ARCHIVE DESTINATION lib)
66 ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
67 ++ RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
68 ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
69
70 diff --git a/sci-libs/parmetis/files/parmetis-4.0.3-02-unbundle-metis.patch b/sci-libs/parmetis/files/parmetis-4.0.3-02-unbundle-metis.patch
71 new file mode 100644
72 index 00000000000..f4e04eb48a9
73 --- /dev/null
74 +++ b/sci-libs/parmetis/files/parmetis-4.0.3-02-unbundle-metis.patch
75 @@ -0,0 +1,10 @@
76 +--- a/CMakeLists.txt
77 ++++ b/CMakeLists.txt
78 +@@ -35,7 +35,6 @@
79 + include_directories(${METIS_PATH}/include)
80 +
81 + # List of directories that cmake will look for CMakeLists.txt
82 +-add_subdirectory(${METIS_PATH}/libmetis ${CMAKE_BINARY_DIR}/libmetis)
83 + add_subdirectory(include)
84 + add_subdirectory(libparmetis)
85 +
86
87 diff --git a/sci-libs/parmetis/parmetis-4.0.3-r2.ebuild b/sci-libs/parmetis/parmetis-4.0.3-r2.ebuild
88 new file mode 100644
89 index 00000000000..6d9599fec41
90 --- /dev/null
91 +++ b/sci-libs/parmetis/parmetis-4.0.3-r2.ebuild
92 @@ -0,0 +1,76 @@
93 +# Copyright 1999-2021 Gentoo Authors
94 +# Distributed under the terms of the GNU General Public License v2
95 +
96 +EAPI=7
97 +
98 +inherit cmake toolchain-funcs
99 +
100 +DESCRIPTION="Parallel (MPI) unstructured graph partitioning library"
101 +HOMEPAGE="https://www-users.cs.umn.edu/~karypis/metis/parmetis/"
102 +SRC_URI="http://glaros.dtc.umn.edu/gkhome/fetch/sw/${PN}/${P}.tar.gz"
103 +
104 +LICENSE="all-rights-reserved"
105 +SLOT="0"
106 +KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
107 +IUSE="doc examples openmp pcre"
108 +RESTRICT="mirror bindist"
109 +
110 +DEPEND=">=sci-libs/metis-5.1.0-r5
111 + virtual/mpi[fortran]
112 + pcre? ( dev-libs/libpcre:= )"
113 +RDEPEND="${DEPEND}
114 + !<sci-libs/metis-5.1.0-r5"
115 +
116 +PATCHES=(
117 + "${FILESDIR}"/${PN}-4.0.3-01-cmake-paths.patch
118 + "${FILESDIR}"/${PN}-4.0.3-02-unbundle-metis.patch
119 +)
120 +
121 +pkg_setup() {
122 + if [[ ${MERGE_TYPE} != binary ]]; then
123 + use openmp && tc-check-openmp
124 + fi
125 +}
126 +
127 +src_prepare() {
128 + export CC=mpicc CXX=mpicxx
129 + cmake_src_prepare
130 +}
131 +
132 +src_configure() {
133 + local mycmakeargs=(
134 + -DGKLIB_PATH="${S}/metis/GKlib"
135 + -DGKRAND=ON
136 + -DMETIS_PATH="${EPREFIX}/usr"
137 + -DOPENMP=$(usex openmp)
138 + -DPCRE=$(usex pcre)
139 + -DSHARED=ON
140 + )
141 + cmake_src_configure
142 +}
143 +
144 +src_install() {
145 + cmake_src_install
146 +
147 + dodoc Changelog
148 + use doc && dodoc manual/manual.pdf
149 + if use examples; then
150 + docinto examples
151 + dodoc -r Graphs programs
152 + fi
153 +
154 + cat > ${PN}.pc <<-EOF
155 + prefix=${EPREFIX}/usr
156 + libdir=\${prefix}/$(get_libdir)
157 + includedir=\${prefix}/include
158 + Name: ${PN}
159 + Description: ${DESCRIPTION}
160 + Version: ${PV}
161 + URL: ${HOMEPAGE}
162 + Libs: -L\${libdir} -l${PN}
163 + Cflags: -I\${includedir}/${PN}
164 + Requires: metis
165 + EOF
166 + insinto /usr/$(get_libdir)/pkgconfig
167 + doins ${PN}.pc
168 +}