forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Package-Manager: Portage-2.3.76, Repoman-2.3.16 Signed-off-by: Alexey Shvetsov <[email protected]>
- Loading branch information
Showing
3 changed files
with
317 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,8 @@ | ||
DIST gromacs-2018.7.tar.gz 29912662 BLAKE2B 0714b28ec2443f3201275fc2fa6db1202a059161362134d4de03a900a3a67fe9d31ba8c058d5ee971198fecd69379fcd389f03d25c61f50b8460c43ba5c564d5 SHA512 fbc3b847b70b1396f412b8f4a1b977268651f8d53a222dcf6349fe563ff6319e096484209a24351e382bc9162a949b3900591f5b469c32dd9effeb894f03c172 | ||
DIST gromacs-2019.2.tar.gz 33437869 BLAKE2B bebe4942688dace148856d4491b687b8e0fd2c86d7fbd9eecdb46824d316a0fc3854464ecafa79d8db92327ee8467be204b050c11f1e71132184efd812c3bf09 SHA512 da7ff24e8485774e22d1c2464fbe64675c3305ef0e21a3d17e363201031952e5d4a9b81f572d5284fb6f2596ed99daf62fe78d653387d9d714274f46bc750183 | ||
DIST gromacs-2019.3.tar.gz 33441419 BLAKE2B 79319dd23982c65c7c4d8e5f633cef0c7fd99a38a4e0cc9030a3ffb0fdfc07a4fbfbcfa942896f23a143b747e044fae645498a3e6992497d1f1a7d966f80b2b0 SHA512 de9f54d095b45ea7efd1043f83a40f6c778a6e3e2067a01f48d1ce843d68d226061933ca28a3edb635b795a8ddd5ef9deb8ed1114aa3235bc8039db8ff7d0218 | ||
DIST gromacs-2019.4.tar.gz 33444527 BLAKE2B 5a01ed0e38faade037de701b72e8d52fd5a947a23228f0b5170a170dc963b00068a6b6880dd9a3f6f2a73140a3787952741dcbcc862bc357a8be8bf5640faa16 SHA512 adc6dea187b7f3a3c13fcd39445ae45248d46d56b0102fda47b1850b83ff1fb77a3fec99d4a4124b01ed04646dab6ab67749eae1bec36d1ba6f2205855cd29f8 | ||
DIST regressiontests-2018.7.tar.gz 67856738 BLAKE2B 955ae8b5e74f90fec704cf41fbd00bd8c09d754f950551fe0adfcd407db6fdb4491a3815149ea37d36c747316c79d462e823b9f6b26f2376bf90d87aad95731b SHA512 c2ff390750bd99faebcd8d5dd8ad6dbf2b00113ed888bddddf985dbf95d7f347093adb67f3c396547b3e2990de330fddb7efe83ded91a72cf97c82a1dac7e826 | ||
DIST regressiontests-2019.2.tar.gz 67643003 BLAKE2B 4178de5d62f194a81f97e442c10f123dc59c5e63f2078f7f07135709f3f6e530e0d237bf40264b285c084519d5ace75dfcbcddc16dc740c4f17233dc33542e45 SHA512 c1f25bc770d3f0a873c887d5563c1cd88179e81211b70ce6f5015696e6fa0b6931a8da7a449f2b223f3105b9e2e7eca67248e96fbfc2a7fd5fb360ba616f22ff | ||
DIST regressiontests-2019.3.tar.gz 67640462 BLAKE2B ed6c176a144e0407be66585be5d6090c31c047498bc5f48f59685108de91f2f9ddb2d22b291a15e6ffa1db848aae19b94a79c8c3d34b1067680f759a179953dd SHA512 822e905fb488ce308eb9324d93f78106da5252c773c7941d49c6162e73bdff109aeca1f0d57216c6dd6536a4c41d80013fa1cee2f5206b0c4160a3e5b4a31315 | ||
DIST regressiontests-2019.4.tar.gz 67639728 BLAKE2B aba912863669a4a6a6a74e385f9b0974d0c0aa30d3aea7834d77c8bb3f4f59effcbe10a480e74e7aa31fe32d64ba6628d67703ca1894839ce7ddfc8da93902dc SHA512 45de03d368da4e6e5c647f3fea61d64defe6d1cbc1c4219eeac2db27559e3cea7f15f9acb3e56ab934b44ca3ae4ce199b4e4969f704776bb9f0b23f1a34ff56d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,312 @@ | ||
# Copyright 1999-2019 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=7 | ||
|
||
CMAKE_MAKEFILE_GENERATOR="ninja" | ||
|
||
PYTHON_COMPAT=( python2_7 ) | ||
|
||
inherit bash-completion-r1 cmake-utils cuda eutils multilib python-single-r1 readme.gentoo-r1 toolchain-funcs xdg-utils | ||
|
||
if [[ $PV = *9999* ]]; then | ||
EGIT_REPO_URI="git://git.gromacs.org/gromacs.git | ||
https://gerrit.gromacs.org/gromacs.git | ||
https://github.com/gromacs/gromacs.git | ||
https://repo.or.cz/r/gromacs.git" | ||
[[ $PV = 9999 ]] && EGIT_BRANCH="master" || EGIT_BRANCH="release-${PV:0:4}" | ||
inherit git-r3 | ||
else | ||
SRC_URI="ftp://ftp.gromacs.org/pub/${PN}/${PN}-${PV/_/-}.tar.gz | ||
test? ( http://gerrit.gromacs.org/download/regressiontests-${PV/_/-}.tar.gz )" | ||
KEYWORDS="~amd64 ~arm ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos" | ||
fi | ||
|
||
ACCE_IUSE="cpu_flags_x86_sse2 cpu_flags_x86_sse4_1 cpu_flags_x86_fma4 cpu_flags_x86_avx cpu_flags_x86_avx2" | ||
|
||
DESCRIPTION="The ultimate molecular dynamics simulation package" | ||
HOMEPAGE="http://www.gromacs.org/" | ||
|
||
# see COPYING for details | ||
# https://repo.or.cz/w/gromacs.git/blob/HEAD:/COPYING | ||
# base, vmd plugins, fftpack from numpy, blas/lapck from netlib, memtestG80 library, mpi_thread lib | ||
LICENSE="LGPL-2.1 UoI-NCSA !mkl? ( !fftw? ( BSD ) !blas? ( BSD ) !lapack? ( BSD ) ) cuda? ( LGPL-3 ) threads? ( BSD )" | ||
SLOT="0/${PV}" | ||
IUSE="X blas cuda +doc -double-precision +fftw +gmxapi +hwloc lapack +lmfit mkl mpi +offensive opencl openmp +single-precision test +threads +tng ${ACCE_IUSE}" | ||
|
||
CDEPEND=" | ||
X? ( | ||
x11-libs/libX11 | ||
x11-libs/libSM | ||
x11-libs/libICE | ||
) | ||
blas? ( virtual/blas ) | ||
cuda? ( >=dev-util/nvidia-cuda-toolkit-6.5.14 ) | ||
opencl? ( virtual/opencl ) | ||
fftw? ( sci-libs/fftw:3.0 ) | ||
hwloc? ( sys-apps/hwloc ) | ||
lapack? ( virtual/lapack ) | ||
lmfit? ( sci-libs/lmfit ) | ||
mkl? ( sci-libs/mkl ) | ||
mpi? ( virtual/mpi ) | ||
${PYTHON_DEPS} | ||
" | ||
BDEPEND="${CDEPEND} | ||
virtual/pkgconfig | ||
doc? ( | ||
app-doc/doxygen | ||
dev-python/sphinx[${PYTHON_USEDEP}] | ||
media-gfx/mscgen | ||
media-gfx/graphviz | ||
dev-texlive/texlive-latex | ||
dev-texlive/texlive-latexextra | ||
media-gfx/imagemagick | ||
)" | ||
RDEPEND="${CDEPEND}" | ||
|
||
REQUIRED_USE=" | ||
|| ( single-precision double-precision ) | ||
cuda? ( single-precision ) | ||
cuda? ( !opencl ) | ||
mkl? ( !blas !fftw !lapack ) | ||
${PYTHON_REQUIRED_USE}" | ||
|
||
DOCS=( AUTHORS README ) | ||
|
||
if [[ ${PV} != *9999 ]]; then | ||
S="${WORKDIR}/${PN}-${PV/_/-}" | ||
fi | ||
|
||
pkg_pretend() { | ||
[[ $(gcc-version) == "4.1" ]] && die "gcc 4.1 is not supported by gromacs" | ||
use openmp && ! tc-has-openmp && \ | ||
die "Please switch to an openmp compatible compiler" | ||
} | ||
|
||
src_unpack() { | ||
if [[ ${PV} != *9999 ]]; then | ||
default | ||
else | ||
git-r3_src_unpack | ||
if use test; then | ||
EGIT_REPO_URI="git://git.gromacs.org/regressiontests.git" \ | ||
EGIT_BRANCH="${EGIT_BRANCH}" \ | ||
EGIT_CHECKOUT_DIR="${WORKDIR}/regressiontests"\ | ||
git-r3_src_unpack | ||
fi | ||
fi | ||
} | ||
|
||
src_prepare() { | ||
#notes/todos | ||
# -on apple: there is framework support | ||
|
||
xdg_environment_reset #591952 | ||
|
||
cmake-utils_src_prepare | ||
|
||
use cuda && cuda_src_prepare | ||
|
||
GMX_DIRS="" | ||
use single-precision && GMX_DIRS+=" float" | ||
use double-precision && GMX_DIRS+=" double" | ||
|
||
if use test; then | ||
for x in ${GMX_DIRS}; do | ||
mkdir -p "${WORKDIR}/${P}_${x}" || die | ||
cp -al "${WORKDIR}/regressiontests"* "${WORKDIR}/${P}_${x}/tests" || die | ||
done | ||
fi | ||
|
||
DOC_CONTENTS="Gromacs can use sci-chemistry/vmd to read additional file formats" | ||
|
||
# try to create policy for imagemagik | ||
mkdir -p ${HOME}/.config/ImageMagick | ||
cat >> ${HOME}/.config/ImageMagick/policy.xml <<- EOF | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE policymap [ | ||
<!ELEMENT policymap (policy)+> | ||
!ATTLIST policymap xmlns CDATA #FIXED ''> | ||
<!ELEMENT policy EMPTY> | ||
<!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED | ||
name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED | ||
stealth NMTOKEN #IMPLIED value CDATA #IMPLIED> | ||
]> | ||
<policymap> | ||
<policy domain="coder" rights="read | write" pattern="PS" /> | ||
<policy domain="coder" rights="read | write" pattern="PS2" /> | ||
<policy domain="coder" rights="read | write" pattern="PS3" /> | ||
<policy domain="coder" rights="read | write" pattern="EPS" /> | ||
<policy domain="coder" rights="read | write" pattern="PDF" /> | ||
<policy domain="coder" rights="read | write" pattern="XPS" /> | ||
</policymap> | ||
EOF | ||
} | ||
|
||
src_configure() { | ||
local mycmakeargs_pre=( ) extra fft_opts=( ) | ||
|
||
#go from slowest to fastest acceleration | ||
local acce="None" | ||
use cpu_flags_x86_sse2 && acce="SSE2" | ||
use cpu_flags_x86_sse4_1 && acce="SSE4.1" | ||
use cpu_flags_x86_fma4 && acce="AVX_128_FMA" | ||
use cpu_flags_x86_avx && acce="AVX_256" | ||
use cpu_flags_x86_avx2 && acce="AVX2_256" | ||
|
||
#to create man pages, build tree binaries are executed (bug #398437) | ||
[[ ${CHOST} = *-darwin* ]] && \ | ||
extra+=" -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF" | ||
|
||
if use fftw; then | ||
fft_opts=( -DGMX_FFT_LIBRARY=fftw3 ) | ||
elif use mkl && has_version "=sci-libs/mkl-10*"; then | ||
fft_opts=( -DGMX_FFT_LIBRARY=mkl | ||
-DMKL_INCLUDE_DIR="${MKLROOT}/include" | ||
-DMKL_LIBRARIES="$(echo /opt/intel/mkl/10.0.5.025/lib/*/libmkl.so);$(echo /opt/intel/mkl/10.0.5.025/lib/*/libiomp*.so)" | ||
) | ||
elif use mkl; then | ||
local bits=$(get_libdir) | ||
fft_opts=( -DGMX_FFT_LIBRARY=mkl | ||
-DMKL_INCLUDE_DIR="$(echo /opt/intel/*/mkl/include)" | ||
-DMKL_LIBRARIES="$(echo /opt/intel/*/mkl/lib/*${bits/lib}/libmkl_rt.so)" | ||
) | ||
else | ||
fft_opts=( -DGMX_FFT_LIBRARY=fftpack ) | ||
fi | ||
|
||
if use lmfit; then | ||
local lmfit_opts=( -DGMX_USE_LMFIT=EXTERNAL ) | ||
else | ||
local lmfit_opts=( -DGMX_USE_LMFIT=INTERNAL ) | ||
fi | ||
|
||
mycmakeargs_pre+=( | ||
"${fft_opts[@]}" | ||
"${lmfit_opts[@]}" | ||
-DGMX_X11=$(usex X) | ||
-DGMX_EXTERNAL_BLAS=$(usex blas) | ||
-DGMX_EXTERNAL_LAPACK=$(usex lapack) | ||
-DGMX_OPENMP=$(usex openmp) | ||
-DGMX_COOL_QUOTES=$(usex offensive) | ||
-DGMX_USE_TNG=$(usex tng) | ||
-DGMX_BUILD_MANUAL=$(usex doc) | ||
-DGMX_HWLOC=$(usex hwloc) | ||
-DGMX_DEFAULT_SUFFIX=off | ||
-DGMX_SIMD="$acce" | ||
-DGMX_VMD_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/vmd/plugins/*/molfile/" | ||
-DBUILD_TESTING=$(usex test) | ||
-DGMX_BUILD_UNITTESTS=$(usex test) | ||
-DPYTHON_EXECUTABLE="${EPREFIX}/usr/bin/${EPYTHON}" | ||
${extra} | ||
) | ||
|
||
for x in ${GMX_DIRS}; do | ||
einfo "Configuring for ${x} precision" | ||
local suffix="" | ||
#if we build single and double - double is suffixed | ||
use double-precision && use single-precision && \ | ||
[[ ${x} = "double" ]] && suffix="_d" | ||
local p | ||
[[ ${x} = "double" ]] && p="-DGMX_DOUBLE=ON" || p="-DGMX_DOUBLE=OFF" | ||
local cuda=( "-DGMX_GPU=OFF" ) | ||
[[ ${x} = "float" ]] && use cuda && \ | ||
cuda=( "-DGMX_GPU=ON" ) | ||
local opencl=( "-DGMX_USE_OPENCL=OFF" ) | ||
use opencl && opencl=( "-DGMX_USE_OPENCL=ON" ) cuda=( "-DGMX_GPU=ON" ) | ||
mycmakeargs=( | ||
${mycmakeargs_pre[@]} ${p} | ||
-DGMX_MPI=OFF | ||
-DGMX_THREAD_MPI=$(usex threads) | ||
-DGMXAPI=$(usex gmxapi) | ||
"${opencl[@]}" | ||
"${cuda[@]}" | ||
"$(use test && echo -DREGRESSIONTEST_PATH="${WORKDIR}/${P}_${x}/tests")" | ||
-DGMX_BINARY_SUFFIX="${suffix}" | ||
-DGMX_LIBS_SUFFIX="${suffix}" | ||
) | ||
BUILD_DIR="${WORKDIR}/${P}_${x}" cmake-utils_src_configure | ||
[[ ${CHOST} != *-darwin* ]] || \ | ||
sed -i '/SET(CMAKE_INSTALL_NAME_DIR/s/^/#/' "${WORKDIR}/${P}_${x}/gentoo_rules.cmake" || die | ||
use mpi || continue | ||
einfo "Configuring for ${x} precision with mpi" | ||
mycmakeargs=( | ||
${mycmakeargs_pre[@]} ${p} | ||
-DGMX_THREAD_MPI=OFF | ||
-DGMX_MPI=ON | ||
-DGMX_OPENMM=OFF | ||
-DGMXAPI=OFF | ||
"${opencl[@]}" | ||
"${cuda[@]}" | ||
-DGMX_BUILD_MDRUN_ONLY=ON | ||
-DBUILD_SHARED_LIBS=OFF | ||
-DGMX_BUILD_MANUAL=OFF | ||
-DGMX_BINARY_SUFFIX="_mpi${suffix}" | ||
-DGMX_LIBS_SUFFIX="_mpi${suffix}" | ||
) | ||
BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" CC="mpicc" cmake-utils_src_configure | ||
[[ ${CHOST} != *-darwin* ]] || \ | ||
sed -i '/SET(CMAKE_INSTALL_NAME_DIR/s/^/#/' "${WORKDIR}/${P}_${x}_mpi/gentoo_rules.cmake" || die | ||
done | ||
} | ||
|
||
src_compile() { | ||
for x in ${GMX_DIRS}; do | ||
einfo "Compiling for ${x} precision" | ||
BUILD_DIR="${WORKDIR}/${P}_${x}"\ | ||
cmake-utils_src_compile | ||
# not 100% necessary for rel ebuilds as available from website | ||
if use doc; then | ||
BUILD_DIR="${WORKDIR}/${P}_${x}"\ | ||
cmake-utils_src_compile manual | ||
fi | ||
use mpi || continue | ||
einfo "Compiling for ${x} precision with mpi" | ||
BUILD_DIR="${WORKDIR}/${P}_${x}_mpi"\ | ||
cmake-utils_src_compile | ||
done | ||
} | ||
|
||
src_test() { | ||
for x in ${GMX_DIRS}; do | ||
BUILD_DIR="${WORKDIR}/${P}_${x}"\ | ||
cmake-utils_src_make check | ||
done | ||
} | ||
|
||
src_install() { | ||
for x in ${GMX_DIRS}; do | ||
BUILD_DIR="${WORKDIR}/${P}_${x}" \ | ||
cmake-utils_src_install | ||
if use doc; then | ||
newdoc "${WORKDIR}/${P}_${x}"/docs/manual/gromacs.pdf "${PN}-manual-${PV}.pdf" | ||
fi | ||
use mpi || continue | ||
BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" \ | ||
cmake-utils_src_install | ||
done | ||
|
||
if use tng; then | ||
insinto /usr/include/tng | ||
doins src/external/tng_io/include/tng/*h | ||
fi | ||
# drop unneeded stuff | ||
rm "${ED}"usr/bin/GMXRC* || die | ||
for x in "${ED}"usr/bin/gmx-completion-*.bash ; do | ||
local n=${x##*/gmx-completion-} | ||
n="${n%.bash}" | ||
cat "${ED}"usr/bin/gmx-completion.bash "$x" > "${T}/${n}" || die | ||
newbashcomp "${T}"/"${n}" "${n}" | ||
done | ||
rm "${ED}"usr/bin/gmx-completion*.bash || die | ||
readme.gentoo_create_doc | ||
} | ||
|
||
pkg_postinst() { | ||
einfo | ||
einfo "Please read and cite:" | ||
einfo "Gromacs 4, J. Chem. Theory Comput. 4, 435 (2008). " | ||
einfo "https://dx.doi.org/10.1021/ct700301q" | ||
einfo | ||
readme.gentoo_print_elog | ||
} |