Gentoo Archives: gentoo-commits

From: Alexey Shvetsov <alexxy@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sci-chemistry/gromacs/
Date: Wed, 04 Mar 2020 18:08:04
Message-Id: 1583345266.58f6aab7ff4bf98e1257af6d60f9344c13a357c0.alexxy@gentoo
1 commit: 58f6aab7ff4bf98e1257af6d60f9344c13a357c0
2 Author: Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
3 AuthorDate: Wed Mar 4 18:07:46 2020 +0000
4 Commit: Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
5 CommitDate: Wed Mar 4 18:07:46 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=58f6aab7
7
8 sci-chemistry/gromacs: Version bump
9
10 Package-Manager: Portage-2.3.88, Repoman-2.3.20
11 Signed-off-by: Alexey Shvetsov <alexxy <AT> gentoo.org>
12
13 sci-chemistry/gromacs/Manifest | 2 +
14 sci-chemistry/gromacs/gromacs-2020.1.ebuild | 337 ++++++++++++++++++++++++++++
15 2 files changed, 339 insertions(+)
16
17 diff --git a/sci-chemistry/gromacs/Manifest b/sci-chemistry/gromacs/Manifest
18 index ac07e91a6c4..7cb4e19f224 100644
19 --- a/sci-chemistry/gromacs/Manifest
20 +++ b/sci-chemistry/gromacs/Manifest
21 @@ -1,8 +1,10 @@
22 DIST gromacs-2018.8.tar.gz 29913703 BLAKE2B 8780032305928067fbfe1559efe9eedc4d47e27ab2f6ab54d6dba39edfcbeefbee4673d8910009048a850620b5a08ba8feb622db652c439cfa50a149ec5f0015 SHA512 6717895942f2ab7b54019511ed2aebadadde8e96d3c4b7414bb9168ffe418432d2dee330192e199f7b9d2f665c71f5d4f1ef0911aa7243d525a2ca182ef5b122
23 DIST gromacs-2019.5.tar.gz 33445791 BLAKE2B 1e2e2764b0c8774c878abf4f32c2fa7ddd9b46f464cf1256deb48335433d92ef1b315f5534cdec9f766ae928a71361b5a4dd4a4def638269eb260ff98dbbe8bb SHA512 fdd177e4dfd29629b72bfbb4d61ff7bcdb37279f534883a9df8fd57569212fe1e9f8b8c9cec347fcc607539f31412d604d11ee3c0eb797251960435962b1bec6
24 DIST gromacs-2019.6.tar.gz 33446147 BLAKE2B adc21fb6b841b06d499607f8c0166a673645ef5af0b40bd823d0fff5ea24397e6301c5e1e0070986ae1ce1deba8a42052b66da148b071c1e21f2fe3908fee275 SHA512 7c227a9539e5775d5d128ae9e872a24181d79cdcd2852b86453597987e8d7332ecec371da65d089f6e610c54aafbccc8824ce298743383dd6240719ebee692a8
25 +DIST gromacs-2020.1.tar.gz 29153989 BLAKE2B b1c0313da945c57c74040c2bcd50495b238b0e131cc4ebecd74ae0d01465b47d732ea456a52a2f9d998cd37e2bfdb93d52bd15177328c4b7a14e6b1d8bc00117 SHA512 130394ec70e5d75ea451e9fa77c4ea2dd4adb0c51cc7663ac8579972bab7a0b75d9143d0eebb21802fc93305deca8831393a8cb3f51b6d01f9477f3dadece037
26 DIST gromacs-2020.tar.gz 28928068 BLAKE2B 72d4ff8f6b383284e61df9d3b2b53c51300f6961d4c19810670c8ee9ba2f1864d2a325e2774093b9338db785cb91a94461bf93f16cdf4caf0f690298a672d51c SHA512 15f0d58cd8d217eab39ef8e3535dec34127708797eaf6575fb340292cbee2303cd25deb84b3d4417a787076f4ae7be9e4958ec3a347a3aa9aed52ef337a4587c
27 DIST regressiontests-2018.8.tar.gz 67855469 BLAKE2B 34c9b339f6229f483afbb5192ee6ba8b8f72d5c26907a853af9c53dfece0d88739e48f6b44b78d1c010f988f9385d077285300522164f533a5861e9dda879275 SHA512 3642389d27bd1942cd0f091c940ae97b197b94856a387fe581dc516b0d4169480f16551d4ba357f9282b3337d605c286d51dd38112ac87c826dda634904836bb
28 DIST regressiontests-2019.5.tar.gz 67643634 BLAKE2B c4d9535d9a8a650869d67544ad5f367324f45e55325bb5074ece9b010f232f2f0dd97c9af97924d3f2368ed63015ca7330baff1cc681310e1439ec330b70ee8d SHA512 7c0917b76e7db35ab4e3271d523d268e0e2d858091e68ead863bfe6d1e56b381e30fdbf44f479f6e065c029e2eb27cfa0dbaa1b243f185144321aaf5084c55ce
29 DIST regressiontests-2019.6.tar.gz 67643195 BLAKE2B 1e054e24b187946f7ea28090d4f20cf8e1d79a26253f57ba07d130e0773d8541b8a1552a38023d31a68ce8bc62d8e0af1d98609234bb3e7d3e6d567307ebb386 SHA512 eacf1c55b982515a305c29459fe80a7cd558a8481e5689962aa956148af542568b1d1ce59c6784ecb0afd4768c2b664afa21e12af2d89ae2b06b1ba61ad72036
30 +DIST regressiontests-2020.1.tar.gz 48541809 BLAKE2B 0fec2f0fb7fad0ad48bb790d7df6487e2c1931a0a2134795bf7da4a9087f0f2a3743288fc4ec057fa6b22412c2d8f312cfa3af38be8c5bea51d7a06afb5ac9f0 SHA512 664d29ce39629ed218de65179ce4a73e479d73d30bc96f5ae57624d7e4447298c6122dc09e7873b8cad458eaee0530866411fab20e009e46bf39b133e0de47e8
31 DIST regressiontests-2020.tar.gz 48536146 BLAKE2B 9511db78b5d6a5ea431fdb73782f28dde4b94655139886c0ad519888ef3e435fe81807f158d66c1a4284cb88fe730f62d039ac23549f17d0ce5984764ef35f10 SHA512 5a35aaf6fe2f3b146c7045e9c967dc1c8bf754748cc1f2a7300193ae3f206a9f5058329380ae7b03b181410303bcd434584571e6161a75f99e52bd48f8ba1821
32
33 diff --git a/sci-chemistry/gromacs/gromacs-2020.1.ebuild b/sci-chemistry/gromacs/gromacs-2020.1.ebuild
34 new file mode 100644
35 index 00000000000..a2dcda755c8
36 --- /dev/null
37 +++ b/sci-chemistry/gromacs/gromacs-2020.1.ebuild
38 @@ -0,0 +1,337 @@
39 +# Copyright 1999-2020 Gentoo Authors
40 +# Distributed under the terms of the GNU General Public License v2
41 +
42 +EAPI=7
43 +
44 +CMAKE_MAKEFILE_GENERATOR="ninja"
45 +
46 +PYTHON_COMPAT=( python3_{6,7} )
47 +
48 +DISTUTILS_SINGLE_IMPL=1
49 +
50 +inherit bash-completion-r1 cmake-utils cuda distutils-r1 eutils multilib readme.gentoo-r1 toolchain-funcs xdg-utils
51 +
52 +if [[ $PV = *9999* ]]; then
53 + EGIT_REPO_URI="git://git.gromacs.org/gromacs.git
54 + https://gerrit.gromacs.org/gromacs.git
55 + https://github.com/gromacs/gromacs.git
56 + https://repo.or.cz/r/gromacs.git"
57 + [[ $PV = 9999 ]] && EGIT_BRANCH="master" || EGIT_BRANCH="release-${PV:0:4}"
58 + inherit git-r3
59 +else
60 + SRC_URI="ftp://ftp.gromacs.org/pub/${PN}/${PN}-${PV/_/-}.tar.gz
61 + test? ( http://gerrit.gromacs.org/download/regressiontests-${PV/_/-}.tar.gz )"
62 + KEYWORDS="~amd64 ~arm ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos"
63 +fi
64 +
65 +ACCE_IUSE="cpu_flags_x86_sse2 cpu_flags_x86_sse4_1 cpu_flags_x86_fma4 cpu_flags_x86_avx cpu_flags_x86_avx2"
66 +
67 +DESCRIPTION="The ultimate molecular dynamics simulation package"
68 +HOMEPAGE="http://www.gromacs.org/"
69 +
70 +# see COPYING for details
71 +# https://repo.or.cz/w/gromacs.git/blob/HEAD:/COPYING
72 +# base, vmd plugins, fftpack from numpy, blas/lapck from netlib, memtestG80 library, mpi_thread lib
73 +LICENSE="LGPL-2.1 UoI-NCSA !mkl? ( !fftw? ( BSD ) !blas? ( BSD ) !lapack? ( BSD ) ) cuda? ( LGPL-3 ) threads? ( BSD )"
74 +SLOT="0/${PV}"
75 +IUSE="X blas cuda +doc -double-precision +fftw +gmxapi +gmxapi-legacy +hwloc lapack +lmfit mkl mpi +offensive opencl openmp +python +single-precision test +threads +tng ${ACCE_IUSE}"
76 +
77 +CDEPEND="
78 + X? (
79 + x11-libs/libX11
80 + x11-libs/libSM
81 + x11-libs/libICE
82 + )
83 + blas? ( virtual/blas )
84 + cuda? ( >=dev-util/nvidia-cuda-toolkit-6.5.14 )
85 + opencl? ( virtual/opencl )
86 + fftw? ( sci-libs/fftw:3.0 )
87 + hwloc? ( sys-apps/hwloc )
88 + lapack? ( virtual/lapack )
89 + lmfit? ( sci-libs/lmfit )
90 + mkl? ( sci-libs/mkl )
91 + mpi? ( virtual/mpi )
92 + ${PYTHON_DEPS}
93 + !sci-chemistry/gmxapi
94 + "
95 +BDEPEND="${CDEPEND}
96 + virtual/pkgconfig
97 + doc? (
98 + app-doc/doxygen
99 + $(python_gen_cond_dep '
100 + dev-python/sphinx[${PYTHON_MULTI_USEDEP}]
101 + ')
102 + media-gfx/mscgen
103 + media-gfx/graphviz
104 + dev-texlive/texlive-latex
105 + dev-texlive/texlive-latexextra
106 + media-gfx/imagemagick
107 + )"
108 +RDEPEND="${CDEPEND}"
109 +
110 +REQUIRED_USE="
111 + || ( single-precision double-precision )
112 + cuda? ( single-precision )
113 + cuda? ( !opencl )
114 + mkl? ( !blas !fftw !lapack )
115 + ${PYTHON_REQUIRED_USE}"
116 +
117 +DOCS=( AUTHORS README )
118 +
119 +RESTRICT="!test? ( test )"
120 +
121 +if [[ ${PV} != *9999 ]]; then
122 + S="${WORKDIR}/${PN}-${PV/_/-}"
123 +fi
124 +
125 +PATCHES=( "${FILESDIR}/${PN}-2020_beta1-pytest.patch" )
126 +
127 +pkg_pretend() {
128 + [[ $(gcc-version) == "4.1" ]] && die "gcc 4.1 is not supported by gromacs"
129 + use openmp && ! tc-has-openmp && \
130 + die "Please switch to an openmp compatible compiler"
131 +}
132 +
133 +pkg_setup() {
134 + python-single-r1_pkg_setup
135 +}
136 +
137 +src_unpack() {
138 + if [[ ${PV} != *9999 ]]; then
139 + default
140 + else
141 + git-r3_src_unpack
142 + if use test; then
143 + EGIT_REPO_URI="git://git.gromacs.org/regressiontests.git" \
144 + EGIT_BRANCH="${EGIT_BRANCH}" \
145 + EGIT_CHECKOUT_DIR="${WORKDIR}/regressiontests"\
146 + git-r3_src_unpack
147 + fi
148 + fi
149 +}
150 +
151 +src_prepare() {
152 + #notes/todos
153 + # -on apple: there is framework support
154 +
155 + xdg_environment_reset #591952
156 +
157 + cmake-utils_src_prepare
158 +
159 + use cuda && cuda_src_prepare
160 +
161 + GMX_DIRS=""
162 + use single-precision && GMX_DIRS+=" float"
163 + use double-precision && GMX_DIRS+=" double"
164 +
165 + if use test; then
166 + for x in ${GMX_DIRS}; do
167 + mkdir -p "${WORKDIR}/${P}_${x}" || die
168 + cp -al "${WORKDIR}/regressiontests"* "${WORKDIR}/${P}_${x}/tests" || die
169 + done
170 + fi
171 +
172 + DOC_CONTENTS="Gromacs can use sci-chemistry/vmd to read additional file formats"
173 +
174 + # try to create policy for imagemagik
175 + mkdir -p ${HOME}/.config/ImageMagick
176 + cat >> ${HOME}/.config/ImageMagick/policy.xml <<- EOF
177 + <?xml version="1.0" encoding="UTF-8"?>
178 + <!DOCTYPE policymap [
179 + <!ELEMENT policymap (policy)+>
180 + !ATTLIST policymap xmlns CDATA #FIXED ''>
181 + <!ELEMENT policy EMPTY>
182 + <!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED
183 + name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED
184 + stealth NMTOKEN #IMPLIED value CDATA #IMPLIED>
185 + ]>
186 + <policymap>
187 + <policy domain="coder" rights="read | write" pattern="PS" />
188 + <policy domain="coder" rights="read | write" pattern="PS2" />
189 + <policy domain="coder" rights="read | write" pattern="PS3" />
190 + <policy domain="coder" rights="read | write" pattern="EPS" />
191 + <policy domain="coder" rights="read | write" pattern="PDF" />
192 + <policy domain="coder" rights="read | write" pattern="XPS" />
193 + </policymap>
194 + EOF
195 +}
196 +
197 +src_configure() {
198 + local mycmakeargs_pre=( ) extra fft_opts=( )
199 +
200 + #go from slowest to fastest acceleration
201 + local acce="None"
202 + use cpu_flags_x86_sse2 && acce="SSE2"
203 + use cpu_flags_x86_sse4_1 && acce="SSE4.1"
204 + use cpu_flags_x86_fma4 && acce="AVX_128_FMA"
205 + use cpu_flags_x86_avx && acce="AVX_256"
206 + use cpu_flags_x86_avx2 && acce="AVX2_256"
207 +
208 + #to create man pages, build tree binaries are executed (bug #398437)
209 + [[ ${CHOST} = *-darwin* ]] && \
210 + extra+=" -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF"
211 +
212 + if use fftw; then
213 + fft_opts=( -DGMX_FFT_LIBRARY=fftw3 )
214 + elif use mkl && has_version "=sci-libs/mkl-10*"; then
215 + fft_opts=( -DGMX_FFT_LIBRARY=mkl
216 + -DMKL_INCLUDE_DIR="${MKLROOT}/include"
217 + -DMKL_LIBRARIES="$(echo /opt/intel/mkl/10.0.5.025/lib/*/libmkl.so);$(echo /opt/intel/mkl/10.0.5.025/lib/*/libiomp*.so)"
218 + )
219 + elif use mkl; then
220 + local bits=$(get_libdir)
221 + fft_opts=( -DGMX_FFT_LIBRARY=mkl
222 + -DMKL_INCLUDE_DIR="$(echo /opt/intel/*/mkl/include)"
223 + -DMKL_LIBRARIES="$(echo /opt/intel/*/mkl/lib/*${bits/lib}/libmkl_rt.so)"
224 + )
225 + else
226 + fft_opts=( -DGMX_FFT_LIBRARY=fftpack )
227 + fi
228 +
229 + if use lmfit; then
230 + local lmfit_opts=( -DGMX_USE_LMFIT=EXTERNAL )
231 + else
232 + local lmfit_opts=( -DGMX_USE_LMFIT=INTERNAL )
233 + fi
234 +
235 + mycmakeargs_pre+=(
236 + "${fft_opts[@]}"
237 + "${lmfit_opts[@]}"
238 + -DGMX_X11=$(usex X)
239 + -DGMX_EXTERNAL_BLAS=$(usex blas)
240 + -DGMX_EXTERNAL_LAPACK=$(usex lapack)
241 + -DGMX_OPENMP=$(usex openmp)
242 + -DGMX_COOL_QUOTES=$(usex offensive)
243 + -DGMX_USE_TNG=$(usex tng)
244 + -DGMX_BUILD_MANUAL=$(usex doc)
245 + -DGMX_HWLOC=$(usex hwloc)
246 + -DGMX_DEFAULT_SUFFIX=off
247 + -DGMX_SIMD="$acce"
248 + -DGMX_VMD_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/vmd/plugins/*/molfile/"
249 + -DBUILD_TESTING=$(usex test)
250 + -DGMX_BUILD_UNITTESTS=$(usex test)
251 + -DPYTHON_EXECUTABLE="${EPREFIX}/usr/bin/${EPYTHON}"
252 + ${extra}
253 + )
254 +
255 + for x in ${GMX_DIRS}; do
256 + einfo "Configuring for ${x} precision"
257 + local suffix=""
258 + #if we build single and double - double is suffixed
259 + use double-precision && use single-precision && \
260 + [[ ${x} = "double" ]] && suffix="_d"
261 + local p
262 + [[ ${x} = "double" ]] && p="-DGMX_DOUBLE=ON" || p="-DGMX_DOUBLE=OFF"
263 + local cuda=( "-DGMX_GPU=OFF" )
264 + [[ ${x} = "float" ]] && use cuda && \
265 + cuda=( "-DGMX_GPU=ON" )
266 + local opencl=( "-DGMX_USE_OPENCL=OFF" )
267 + use opencl && opencl=( "-DGMX_USE_OPENCL=ON" ) cuda=( "-DGMX_GPU=ON" )
268 + mycmakeargs=(
269 + ${mycmakeargs_pre[@]} ${p}
270 + -DGMX_MPI=OFF
271 + -DGMX_THREAD_MPI=$(usex threads)
272 + -DGMXAPI=$(usex gmxapi)
273 + -DGMX_INSTALL_LEGACY_API=$(usex gmxapi-legacy)
274 + "${opencl[@]}"
275 + "${cuda[@]}"
276 + "$(use test && echo -DREGRESSIONTEST_PATH="${WORKDIR}/${P}_${x}/tests")"
277 + -DGMX_BINARY_SUFFIX="${suffix}"
278 + -DGMX_LIBS_SUFFIX="${suffix}"
279 + -DGMX_PYTHON_PACKAGE=$(usex python)
280 + )
281 + BUILD_DIR="${WORKDIR}/${P}_${x}" cmake-utils_src_configure
282 + [[ ${CHOST} != *-darwin* ]] || \
283 + sed -i '/SET(CMAKE_INSTALL_NAME_DIR/s/^/#/' "${WORKDIR}/${P}_${x}/gentoo_rules.cmake" || die
284 + use mpi || continue
285 + einfo "Configuring for ${x} precision with mpi"
286 + mycmakeargs=(
287 + ${mycmakeargs_pre[@]} ${p}
288 + -DGMX_THREAD_MPI=OFF
289 + -DGMX_MPI=ON
290 + -DGMX_OPENMM=OFF
291 + -DGMXAPI=OFF
292 + "${opencl[@]}"
293 + "${cuda[@]}"
294 + -DGMX_BUILD_MDRUN_ONLY=ON
295 + -DBUILD_SHARED_LIBS=OFF
296 + -DGMX_BUILD_MANUAL=OFF
297 + -DGMX_BINARY_SUFFIX="_mpi${suffix}"
298 + -DGMX_LIBS_SUFFIX="_mpi${suffix}"
299 + )
300 + BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" CC="mpicc" cmake-utils_src_configure
301 + [[ ${CHOST} != *-darwin* ]] || \
302 + sed -i '/SET(CMAKE_INSTALL_NAME_DIR/s/^/#/' "${WORKDIR}/${P}_${x}_mpi/gentoo_rules.cmake" || die
303 + done
304 +}
305 +
306 +src_compile() {
307 + for x in ${GMX_DIRS}; do
308 + einfo "Compiling for ${x} precision"
309 + BUILD_DIR="${WORKDIR}/${P}_${x}"\
310 + cmake-utils_src_compile
311 + if use python; then
312 + BUILD_DIR="${WORKDIR}/${P}_${x}"\
313 + cmake-utils_src_compile python_packaging/all
314 + BUILD_DIR="${WORKDIR}/${P}" \
315 + distutils-r1_src_compile
316 + fi
317 + # not 100% necessary for rel ebuilds as available from website
318 + if use doc; then
319 + BUILD_DIR="${WORKDIR}/${P}_${x}"\
320 + cmake-utils_src_compile manual
321 + fi
322 + use mpi || continue
323 + einfo "Compiling for ${x} precision with mpi"
324 + BUILD_DIR="${WORKDIR}/${P}_${x}_mpi"\
325 + cmake-utils_src_compile
326 + done
327 +}
328 +
329 +src_test() {
330 + for x in ${GMX_DIRS}; do
331 + BUILD_DIR="${WORKDIR}/${P}_${x}"\
332 + cmake-utils_src_make check
333 + done
334 +}
335 +
336 +src_install() {
337 + for x in ${GMX_DIRS}; do
338 + BUILD_DIR="${WORKDIR}/${P}_${x}" \
339 + cmake-utils_src_install
340 + if use python; then
341 + BUILD_DIR="${WORKDIR}/${P}_${x}" \
342 + cmake-utils_src_install python_packaging/install
343 + fi
344 + if use doc; then
345 + newdoc "${WORKDIR}/${P}_${x}"/docs/manual/gromacs.pdf "${PN}-manual-${PV}.pdf"
346 + fi
347 + use mpi || continue
348 + BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" \
349 + cmake-utils_src_install
350 + done
351 +
352 + if use tng; then
353 + insinto /usr/include/tng
354 + doins src/external/tng_io/include/tng/*h
355 + fi
356 + # drop unneeded stuff
357 + rm "${ED}"/usr/bin/GMXRC* || die
358 + for x in "${ED}"/usr/bin/gmx-completion-*.bash ; do
359 + local n=${x##*/gmx-completion-}
360 + n="${n%.bash}"
361 + cat "${ED}"/usr/bin/gmx-completion-gmx.bash "$x" > "${T}/${n}" || die
362 + newbashcomp "${T}"/"${n}" "${n}"
363 + done
364 + rm "${ED}"/usr/bin/gmx-completion*.bash || die
365 + readme.gentoo_create_doc
366 +}
367 +
368 +pkg_postinst() {
369 + einfo
370 + einfo "Please read and cite:"
371 + einfo "Gromacs 4, J. Chem. Theory Comput. 4, 435 (2008). "
372 + einfo "https://dx.doi.org/10.1021/ct700301q"
373 + einfo
374 + readme.gentoo_print_elog
375 +}