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 |
+} |