diff options
author | 2013-03-06 02:02:01 +0000 | |
---|---|---|
committer | 2013-03-06 02:02:01 +0000 | |
commit | 18a365cd7cd593da93cd0353f6ff9c522b31af7b (patch) | |
tree | 513b42b33364f171705dddd5e4c9f25d024c4a47 /sci-chemistry | |
parent | added ~arm (tested by me) (diff) | |
download | gentoo-2-18a365cd7cd593da93cd0353f6ff9c522b31af7b.tar.gz gentoo-2-18a365cd7cd593da93cd0353f6ff9c522b31af7b.tar.bz2 gentoo-2-18a365cd7cd593da93cd0353f6ff9c522b31af7b.zip |
version bump
(Portage version: 2.2.0_alpha165/cvs/Linux x86_64, signed Manifest commit with key C2000586)
Diffstat (limited to 'sci-chemistry')
-rw-r--r-- | sci-chemistry/gromacs/ChangeLog | 9 | ||||
-rw-r--r-- | sci-chemistry/gromacs/files/gromacs-4.6.1-openmm.patch | 151 | ||||
-rw-r--r-- | sci-chemistry/gromacs/gromacs-4.6.1.ebuild (renamed from sci-chemistry/gromacs/gromacs-4.6.ebuild) | 113 | ||||
-rw-r--r-- | sci-chemistry/gromacs/gromacs-4.6_beta3-r1.ebuild | 244 |
4 files changed, 241 insertions, 276 deletions
diff --git a/sci-chemistry/gromacs/ChangeLog b/sci-chemistry/gromacs/ChangeLog index b12fe733590b..aeaf99af3f11 100644 --- a/sci-chemistry/gromacs/ChangeLog +++ b/sci-chemistry/gromacs/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for sci-chemistry/gromacs # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/gromacs/ChangeLog,v 1.120 2013/02/12 04:11:10 ottxor Exp $ +# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/gromacs/ChangeLog,v 1.121 2013/03/06 02:02:01 ottxor Exp $ + +*gromacs-4.6.1 (06 Mar 2013) + + 06 Mar 2013; Christoph Junghans <ottxor@gentoo.org> + +files/gromacs-4.6.1-openmm.patch, +gromacs-4.6.1.ebuild, -gromacs-4.6.ebuild, + -gromacs-4.6_beta3-r1.ebuild: + version bump 12 Feb 2013; Christoph Junghans <ottxor@gentoo.org> gromacs-4.6.ebuild, gromacs-4.6_beta3-r1.ebuild, metadata.xml: diff --git a/sci-chemistry/gromacs/files/gromacs-4.6.1-openmm.patch b/sci-chemistry/gromacs/files/gromacs-4.6.1-openmm.patch new file mode 100644 index 000000000000..dd4214af0513 --- /dev/null +++ b/sci-chemistry/gromacs/files/gromacs-4.6.1-openmm.patch @@ -0,0 +1,151 @@ +From e96c29f92e6cd1dd05945ef80e6a78d55747cf2e Mon Sep 17 00:00:00 2001 +From: Christoph Junghans <junghans@votca.org> +Date: Thu, 17 Jan 2013 20:30:30 -0700 +Subject: [PATCH] fix out of source build for OpenMM + +* introduced in e508a07b6e127fa1cf31d263bcbd33e4040066cb + +Change-Id: I6ad45fd2d5766d1c4a91ef2e0c442ff030fc1296 +--- + CMakeLists.txt | 2 +- + src/contrib/BuildMdrunOpenMM.cmake | 6 +++--- + src/contrib/CMakeLists.txt | 3 --- + src/contrib/mdrun_openmm.c | 12 +++++++----- + src/contrib/openmm_wrapper.cpp | 1 + + src/kernel/CMakeLists.txt | 5 ++++- + 6 files changed, 16 insertions(+), 13 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index df12172..4c11a29 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -153,7 +153,7 @@ mark_as_advanced(GMX_FORCE_CXX) + option(GMX_COOL_QUOTES "Enable Gromacs cool quotes" ON) + mark_as_advanced(GMX_COOL_QUOTES) + +-if(GMX_GPU OR GMX_FORCE_CXX) ++if(GMX_GPU OR GMX_FORCE_CXX OR GMX_OPENMM) + enable_language(CXX) + endif() + set(CMAKE_PREFIX_PATH "" CACHE STRING "Extra locations to search for external libraries and tools (give directory without lib, bin, or include)") +diff --git a/src/contrib/BuildMdrunOpenMM.cmake b/src/contrib/BuildMdrunOpenMM.cmake +index bc954d6..6d04958 100644 +--- a/src/contrib/BuildMdrunOpenMM.cmake ++++ b/src/contrib/BuildMdrunOpenMM.cmake +@@ -39,14 +39,14 @@ link_directories(${OpenMM_LIBRARY_DIR}) + # if the same OpenMM installation is used for running and building + add_definitions( -DOPENMM_PLUGIN_DIR="${OpenMM_PLUGIN_DIR}" ) + file(TO_CMAKE_PATH ${OpenMM_PLUGIN_DIR} _path) +-add_library(openmm_api_wrapper STATIC openmm_wrapper.cpp) ++add_library(openmm_api_wrapper STATIC ${CMAKE_SOURCE_DIR}/src/contrib/openmm_wrapper.cpp) + target_link_libraries(openmm_api_wrapper ${OpenMM_LIBRARIES}) + list(APPEND GMX_EXTRA_LIBRARIES openmm_api_wrapper ${OpenMM_LIBRARIES}) + + list(REMOVE_ITEM MDRUN_SOURCES mdrun.c) + list(APPEND MDRUN_SOURCES +- ${CMAKE_CURRENT_SOURCE_DIR}/src/contrib/md_openmm.c +- ${CMAKE_CURRENT_SOURCE_DIR}/src/contrib/mdrun_openmm.c) ++ ${CMAKE_SOURCE_DIR}/src/contrib/md_openmm.c ++ ${CMAKE_SOURCE_DIR}/src/contrib/mdrun_openmm.c) + + # this is to circumvent the following MSVC error: + # warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs +diff --git a/src/contrib/CMakeLists.txt b/src/contrib/CMakeLists.txt +index 7c5bb83..7725210 100644 +--- a/src/contrib/CMakeLists.txt ++++ b/src/contrib/CMakeLists.txt +@@ -49,7 +49,6 @@ if(GMX_OPENMM) + message(FATAL_ERROR "The OpenMM build is not compatible with the native GPU build") + endif() + +- enable_language(CXX) + set (GMX_BINARY_SUFFIX "-openmm") + set (GMX_LIBS_SUFFIX "_openmm") + +@@ -99,8 +98,6 @@ if(GMX_OPENMM) + if(CMAKE_BUILD_TYPE STREQUAL "DEBUG") + set(CUDA_VERBOSE_BUILD ON) + endif() +- list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/contrib) +- find_package(OpenMM) + + # mark as advanced the unused variables + mark_as_advanced(FORCE GMX_CPU_ACCELERATION GMX_MPI GMX_FFT_LIBRARY +diff --git a/src/contrib/mdrun_openmm.c b/src/contrib/mdrun_openmm.c +index 7771dcd..aeedeb4 100644 +--- a/src/contrib/mdrun_openmm.c ++++ b/src/contrib/mdrun_openmm.c +@@ -153,7 +153,7 @@ int cmain(int argc,char *argv[]) + { efXVG, "-tpi", "tpi", ffOPTWR }, + { efXVG, "-tpid", "tpidist", ffOPTWR }, + { efEDI, "-ei", "sam", ffOPTRD }, +- { efEDO, "-eo", "sam", ffOPTWR }, ++ { efXVG, "-eo", "sam", ffOPTWR }, + { efGCT, "-j", "wham", ffOPTRD }, + { efGCT, "-jo", "bam", ffOPTWR }, + { efXVG, "-ffout", "gct", ffOPTWR }, +@@ -205,6 +205,8 @@ int cmain(int argc,char *argv[]) + { NULL, "interleave", "pp_pme", "cartesian", NULL }; + const char *dddlb_opt[] = + { NULL, "auto", "no", "yes", NULL }; ++ const char *thread_aff_opt[threadaffNR+1] = ++ { NULL, "auto", "no", "yes", NULL }; + const char *nbpu_opt[] = + { NULL, "auto", "cpu", "gpu", "gpu_cpu", NULL }; + real rdd=0.0,rconstr=0.0,dlb_scale=0.8,pforce=-1; +@@ -236,12 +238,12 @@ int cmain(int argc,char *argv[]) + "Number of OpenMP threads per MPI process/thread to start (0 is guess)" }, + { "-ntomp_pme", FALSE, etINT, {&hw_opt.nthreads_omp_pme}, + "Number of OpenMP threads per MPI process/thread to start (0 is -ntomp)" }, +- { "-pin", FALSE, etBOOL, {&hw_opt.bThreadPinning}, ++ { "-pin", FALSE, etBOOL, {thread_aff_opt}, + "Pin OpenMP threads to cores" }, +- { "-pinht", FALSE, etBOOL, {&hw_opt.bPinHyperthreading}, +- "Always pin threads to Hyper-Threading cores" }, + { "-pinoffset", FALSE, etINT, {&hw_opt.core_pinning_offset}, + "Core offset for pinning (for running multiple mdrun processes on a single physical node)" }, ++ { "-pinstride", FALSE, etINT, {&hw_opt.core_pinning_stride}, ++ "Pinning distance in logical cores for threads, use 0 to minimize the number of threads per physical core" }, + { "-gpu_id", FALSE, etSTR, {&hw_opt.gpu_id}, + "List of GPU id's to use" }, + { "-ddcheck", FALSE, etBOOL, {&bDDBondCheck}, +@@ -413,7 +415,7 @@ int cmain(int argc,char *argv[]) + + if (MULTISIM(cr) && MASTER(cr)) + { +- check_multi_int(stdout,cr->ms,sim_part,"simulation part"); ++ check_multi_int(stdout,cr->ms,sim_part,"simulation part", TRUE); + } + } + else +diff --git a/src/contrib/openmm_wrapper.cpp b/src/contrib/openmm_wrapper.cpp +index 07f0eca..05c3210 100644 +--- a/src/contrib/openmm_wrapper.cpp ++++ b/src/contrib/openmm_wrapper.cpp +@@ -63,6 +63,7 @@ using namespace std; + #include "mdrun.h" + #include "physics.h" + #include "string2.h" ++#include "openmm_gpu_utils.h" + #include "gpu_utils.h" + #include "mtop_util.h" + +diff --git a/src/kernel/CMakeLists.txt b/src/kernel/CMakeLists.txt +index 01e290c..3f95d33 100644 +--- a/src/kernel/CMakeLists.txt ++++ b/src/kernel/CMakeLists.txt +@@ -88,7 +88,10 @@ if(GMX_OPENMM) + # Even though the OpenMM build has "moved to contrib", many things + # have be be done from within the scope of the CMakeLists.txt that + # builds its mdrun, and that is here +- include(../contrib/BuildMdrunOpenMM) ++ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/src/contrib) ++ find_package(OpenMM) ++ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) ++ include(${CMAKE_SOURCE_DIR}/src/contrib/BuildMdrunOpenMM.cmake) + endif(GMX_OPENMM) + + if(GMX_GPU OR GMX_FORCE_CXX) +-- +1.8.1.5 + diff --git a/sci-chemistry/gromacs/gromacs-4.6.ebuild b/sci-chemistry/gromacs/gromacs-4.6.1.ebuild index cbf14cd62ed1..226082edf7c4 100644 --- a/sci-chemistry/gromacs/gromacs-4.6.ebuild +++ b/sci-chemistry/gromacs/gromacs-4.6.1.ebuild @@ -1,13 +1,15 @@ # Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/gromacs/gromacs-4.6.ebuild,v 1.4 2013/02/12 04:11:10 ottxor Exp $ +# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/gromacs/gromacs-4.6.1.ebuild,v 1.1 2013/03/06 02:02:01 ottxor Exp $ EAPI=5 -TEST_PV="4.6" -MANUAL_PV="4.6" +TEST_PV="4.6.1" +MANUAL_PV="4.6.1" -inherit bash-completion-r1 cmake-utils eutils multilib readme.gentoo toolchain-funcs +CMAKE_MAKEFILE_GENERATOR="ninja" + +inherit bash-completion-r1 cmake-utils cuda eutils multilib readme.gentoo toolchain-funcs if [[ $PV = *9999* ]]; then EGIT_REPO_URI="git://git.gromacs.org/gromacs.git @@ -16,11 +18,17 @@ if [[ $PV = *9999* ]]; then http://repo.or.cz/r/gromacs.git" EGIT_BRANCH="release-4-6" inherit git-2 - PDEPEND="doc? ( ~app-doc/${PN}-manual-${PV} )" + LIVE_DEPEND="doc? ( + dev-texlive/texlive-latex + media-gfx/imagemagick + sys-apps/coreutils + )" else SRC_URI="ftp://ftp.gromacs.org/pub/${PN}/${P}.tar.gz doc? ( ftp://ftp.gromacs.org/pub/manual/manual-${MANUAL_PV}.pdf -> ${PN}-manual-${MANUAL_PV}.pdf ) test? ( http://${PN}.googlecode.com/files/regressiontests-${TEST_PV}.tar.gz )" + PATCHES=( "${FILESDIR}/${P}-openmm.patch" ) + LIVE_DEPEND="" fi ACCE_IUSE="sse2 sse4_1 avx128fma avx256" @@ -32,9 +40,9 @@ HOMEPAGE="http://www.gromacs.org/" # http://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" +SLOT="0/${PV}" KEYWORDS="~alpha ~amd64 ~arm ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos" -IUSE="X blas cuda doc -double-precision +fftw gsl lapack mkl mpi +offensive openmp +single-precision test +threads zsh-completion ${ACCE_IUSE}" +IUSE="X blas cuda doc -double-precision +fftw gsl lapack mkl mpi +offensive openmm openmp +single-precision test +threads zsh-completion ${ACCE_IUSE}" CDEPEND=" X? ( @@ -43,33 +51,63 @@ CDEPEND=" x11-libs/libICE ) blas? ( virtual/blas ) - cuda? ( dev-util/nvidia-cuda-toolkit ) + cuda? ( >=dev-util/nvidia-cuda-toolkit-4.2.9-r1 ) fftw? ( sci-libs/fftw:3.0 ) gsl? ( sci-libs/gsl ) lapack? ( virtual/lapack ) mkl? ( sci-libs/mkl ) - mpi? ( virtual/mpi )" + mpi? ( virtual/mpi ) + openmm? ( + >=dev-util/nvidia-cuda-toolkit-4.2.9-r1 + sci-libs/openmm[cuda,opencl] + )" DEPEND="${CDEPEND} - virtual/pkgconfig" + virtual/pkgconfig + ${LIVE_DEPEND}" RDEPEND="${CDEPEND}" REQUIRED_USE=" || ( single-precision double-precision ) cuda? ( single-precision ) + openmm? ( single-precision ) mkl? ( !blas !fftw !lapack )" +DOCS=( AUTHORS README ) +HTML_DOCS=( "${ED}"/usr/share/gromacs/html/ ) + 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-2_src_unpack + if use doc; then + EGIT_REPO_URI="git://git.gromacs.org/manual.git" \ + EGIT_BRANCH="release-4-6" EGIT_NOUNPACK="yes" EGIT_COMMIT="release-4-6" \ + EGIT_SOURCEDIR="${WORKDIR}/manual"\ + git-2_src_unpack + fi + if use test; then + EGIT_REPO_URI="git://git.gromacs.org/regressiontests.git" \ + EGIT_BRANCH="master" EGIT_NOUNPACK="yes" EGIT_COMMIT="master" \ + EGIT_SOURCEDIR="${WORKDIR}/regressiontests"\ + git-2_src_unpack + fi + fi +} + src_prepare() { #notes/todos # -on apple: there is framework support - #add user patches from /etc/portage/patches/sci-chemistry/gromacs - epatch_user + cmake-utils_src_prepare + + use cuda && cuda_src_prepare GMX_DIRS="" use single-precision && GMX_DIRS+=" float" @@ -78,7 +116,7 @@ src_prepare() { if use test; then for x in ${GMX_DIRS}; do mkdir -p "${WORKDIR}/${P}_${x}" || die - cp -al "${WORKDIR}/regressiontests-${TEST_PV}" "${WORKDIR}/${P}_${x}/tests" || die + cp -al "${WORKDIR}/regressiontests"* "${WORKDIR}/${P}_${x}/tests" || die done fi @@ -149,6 +187,15 @@ src_configure() { "$(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 + if [[ ${x} = float ]] && use openmm; then + einfo "Configuring for openmm build" + mycmakeargs=( ${mycmakeargs_pre[@]} ${p} -DGMX_MPI=OFF + -DGMX_THREAD_MPI=OFF -DGMX_GPU=OFF -DGMX_OPENMM=ON + -DOpenMM_PLUGIN_DIR="${EPREFIX}/usr/$(get_libdir)/plugins" + -DGMX_BINARY_SUFFIX="_openmm" -DGMX_LIBS_SUFFIX="_openmm" ) + BUILD_DIR="${WORKDIR}/${P}_openmm" \ + OPENMM_ROOT_DIR="${EPREFIX}/usr" cmake-utils_src_configure + fi use mpi || continue einfo "Configuring for ${x} precision with mpi" mycmakeargs=( ${mycmakeargs_pre[@]} ${p} -DGMX_THREAD_MPI=OFF @@ -163,6 +210,11 @@ src_compile() { einfo "Compiling for ${x} precision" BUILD_DIR="${WORKDIR}/${P}_${x}"\ cmake-utils_src_compile + if [[ ${x} = float ]] && use openmm; then + einfo "Compiling for openmm build" + BUILD_DIR="${WORKDIR}/${P}_openmm"\ + cmake-utils_src_compile mdrun + fi use mpi || continue einfo "Compiling for ${x} precision with mpi" BUILD_DIR="${WORKDIR}/${P}_${x}_mpi"\ @@ -181,34 +233,33 @@ src_install() { for x in ${GMX_DIRS}; do BUILD_DIR="${WORKDIR}/${P}_${x}" \ cmake-utils_src_install + if [[ ${x} = float ]] && use openmm; then + BUILD_DIR="${WORKDIR}/${P}_openmm" \ + DESTDIR="${D}" cmake-utils_src_make install-mdrun + fi + #manual can only be build after gromacs was installed once in image + if use doc && [[ $PV = *9999* && ! -d ${WORKDIR}/manual_build ]]; then + mycmakeargs=( -DGMXBIN="${ED}"/usr/bin -DGMXSRC="${WORKDIR}/${P}" ) + BUILD_DIR="${WORKDIR}"/manual_build \ + CMAKE_USE_DIR="${WORKDIR}/manual" cmake-utils_src_configure + BUILD_DIR="${WORKDIR}"/manual_build cmake-utils_src_make + newdoc "${WORKDIR}"/manual_build/gromacs.pdf "${PN}-manual-${PV}.pdf" + fi use mpi || continue BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" \ DESTDIR="${D}" cmake-utils_src_make install-mdrun done - rm -f "${ED}"/usr/bin/GMXRC* - + use doc && [[ $PV != *9999* ]] && dodoc "${DISTDIR}/${PN}-manual-${MANUAL_PV}.pdf" newbashcomp "${ED}"/usr/bin/completion.bash ${PN} if use zsh-completion ; then insinto /usr/share/zsh/site-functions newins "${ED}"/usr/bin/completion.zsh _${PN} fi - rm -f "${ED}"/usr/bin/completion.* - - cd "${S}" - dodoc AUTHORS INSTALL* README* - if use doc; then - dohtml -r "${ED}usr/share/gromacs/html/" - if [[ $PV = *9999* ]]; then - insinto /usr/share/gromacs - doins "admin/programs.txt" - ls -1 "${ED}"/usr/bin | sed -e '/_d$/d' > "${T}"/programs.list - doins "${T}"/programs.list - else - dodoc "${DISTDIR}/${PN}-manual-${MANUAL_PV}.pdf" - fi - fi - rm -rf "${ED}usr/share/gromacs/html/" + rm -f "${ED}"usr/bin/completion.* + rm -rf "${ED}"usr/share/gromacs/html + rm -f "${ED}"usr/bin/g_options* + rm -f "${ED}"usr/bin/GMXRC* readme.gentoo_create_doc } diff --git a/sci-chemistry/gromacs/gromacs-4.6_beta3-r1.ebuild b/sci-chemistry/gromacs/gromacs-4.6_beta3-r1.ebuild deleted file mode 100644 index fe224cb808d4..000000000000 --- a/sci-chemistry/gromacs/gromacs-4.6_beta3-r1.ebuild +++ /dev/null @@ -1,244 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/gromacs/gromacs-4.6_beta3-r1.ebuild,v 1.3 2013/02/12 04:11:10 ottxor Exp $ - -EAPI=5 - -TEST_PV="4.0.4" -MANUAL_PV="4.6-beta1" - -inherit bash-completion-r1 cmake-utils eutils multilib toolchain-funcs - -SRC_URI="test? ( ftp://ftp.gromacs.org/pub/tests/gmxtest-${TEST_PV}.tgz )" - -if [[ $PV = *9999* ]]; then - EGIT_REPO_URI="git://git.gromacs.org/gromacs.git - https://gerrit.gromacs.org/gromacs.git - git://github.com/gromacs/gromacs.git - http://repo.or.cz/r/gromacs.git" - EGIT_BRANCH="release-4-6" - inherit git-2 - PDEPEND="doc? ( ~app-doc/${PN}-manual-${PV} )" -else - S="${WORKDIR}/${P//_/-}" - SRC_URI="${SRC_URI} ftp://ftp.gromacs.org/pub/${PN}/${P//_/-}.tar.gz - doc? ( ftp://ftp.gromacs.org/pub/manual/${PN}-manual-${MANUAL_PV}.pdf )" -fi - -ACCE_IUSE="sse2 sse4_1 avx128fma avx256" - -DESCRIPTION="The ultimate molecular dynamics simulation package" -HOMEPAGE="http://www.gromacs.org/" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos" -IUSE="X blas cuda doc -double-precision +fftw gsl lapack mkl mpi +offensive openmm openmp +single-precision test +threads zsh-completion ${ACCE_IUSE}" - -CDEPEND=" - X? ( - x11-libs/libX11 - x11-libs/libSM - x11-libs/libICE - ) - blas? ( virtual/blas ) - cuda? ( dev-util/nvidia-cuda-toolkit ) - fftw? ( sci-libs/fftw:3.0 ) - gsl? ( sci-libs/gsl ) - lapack? ( virtual/lapack ) - mkl? ( sci-libs/mkl ) - mpi? ( virtual/mpi ) - openmm? ( - dev-util/nvidia-cuda-toolkit - sci-libs/openmm[cuda,opencl] - )" -DEPEND="${CDEPEND} - virtual/pkgconfig" -RDEPEND="${CDEPEND}" - -RESTRICT="test" - -REQUIRED_USE=" - || ( single-precision double-precision ) - cuda? ( single-precision ) - openmm? ( single-precision ) - mkl? ( !blas !fftw !lapack )" - -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_prepare() { - #notes/todos - # -on apple: there is framework support - - #add user patches from /etc/portage/patches/sci-chemistry/gromacs - epatch_user - - GMX_DIRS="" - use single-precision && GMX_DIRS+=" float" - use double-precision && GMX_DIRS+=" double" - - for x in ${GMX_DIRS}; do - mkdir -p "${WORKDIR}/${P}_${x}" || die - use test && cp -r "${WORKDIR}"/gmxtest "${WORKDIR}/${P}_${x}" - done -} - -src_configure() { - local mycmakeargs_pre=( ) extra fft_opts=( ) - - #go from slowest to fastest acceleration - local acce="None" - use sse2 && acce="SSE2" - use sse4_1 && acce="SSE4.1" - use avx128fma && acce="AVX_128_FMA" - use avx256 && acce="AVX_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 - - mycmakeargs_pre+=( - "${fft_opts[@]}" - $(cmake-utils_use X GMX_X11) - $(cmake-utils_use blas GMX_EXTERNAL_BLAS) - $(cmake-utils_use gsl GMX_GSL) - $(cmake-utils_use lapack GMX_EXTERNAL_LAPACK) - $(cmake-utils_use openmp GMX_OPENMP) - $(cmake-utils_use !offensive GMX_NO_QUOTES) - -DGMX_DEFAULT_SUFFIX=off - -DGMX_ACCELERATION="$acce" - -DGMXLIB="$(get_libdir)" - -DGMX_VMD_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/vmd/plugins/*/molfile/" - ${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=$(cmake-utils_use cuda GMX_GPU) - [[ ${x} = "double" ]] && use cuda && cuda="-DGMX_GPU=OFF" - mycmakeargs=( ${mycmakeargs_pre[@]} ${p} -DGMX_MPI=OFF - $(cmake-utils_use threads GMX_THREAD_MPI) ${cuda} - -DGMX_BINARY_SUFFIX="${suffix}" -DGMX_LIBS_SUFFIX="${suffix}" ) - BUILD_DIR="${WORKDIR}/${P}_${x}" cmake-utils_src_configure - if [[ ${x} = float ]] && use openmm; then - einfo "Configuring for openmm build" - mycmakeargs=( ${mycmakeargs_pre[@]} ${p} -DGMX_MPI=OFF - -DGMX_THREAD_MPI=OFF -DGMX_GPU=OFF -DGMX_OPENMM=ON - -DGMX_BINARY_SUFFIX="_openmm" -DGMX_LIBS_SUFFIX="_openmm" ) - BUILD_DIR="${WORKDIR}/${P}_openmm" \ - OPENMM_ROOT_DIR="${EPREFIX}/usr" cmake-utils_src_configure - fi - use mpi || continue - einfo "Configuring for ${x} precision with mpi" - mycmakeargs=( ${mycmakeargs_pre[@]} ${p} -DGMX_THREAD_MPI=OFF - -DGMX_MPI=ON ${cuda} - -DGMX_BINARY_SUFFIX="_mpi${suffix}" -DGMX_LIBS_SUFFIX="_mpi${suffix}" ) - BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" CC="mpicc" cmake-utils_src_configure - done -} - -src_compile() { - for x in ${GMX_DIRS}; do - einfo "Compiling for ${x} precision" - BUILD_DIR="${WORKDIR}/${P}_${x}"\ - cmake-utils_src_compile - if [[ ${x} = float ]] && use openmm; then - einfo "Compiling for openmm build" - BUILD_DIR="${WORKDIR}/${P}_openmm"\ - cmake-utils_src_compile mdrun - fi - use mpi || continue - einfo "Compiling for ${x} precision with mpi" - BUILD_DIR="${WORKDIR}/${P}_${x}_mpi"\ - cmake-utils_src_compile mdrun - done -} - -src_test() { - for x in ${GMX_DIRS}; do - local oldpath="${PATH}" - export PATH="${WORKDIR}/${P}_${x}/src/kernel:${S}-{x}/src/tools:${PATH}" - cd "${WORKDIR}/${P}_${x}" - emake -j1 tests || die "${x} Precision test failed" - export PATH="${oldpath}" - done -} - -src_install() { - for x in ${GMX_DIRS}; do - BUILD_DIR="${WORKDIR}/${P}_${x}" \ - cmake-utils_src_install - if [[ ${x} = float ]] && use openmm; then - BUILD_DIR="${WORKDIR}/${P}_openmm" \ - DESTDIR="${D}" cmake-utils_src_make install-mdrun - fi - use mpi || continue - BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" \ - DESTDIR="${D}" cmake-utils_src_make install-mdrun - done - - rm -f "${ED}"/usr/bin/GMXRC* - - newbashcomp "${ED}"/usr/bin/completion.bash ${PN} - if use zsh-completion ; then - insinto /usr/share/zsh/site-functions - newins "${ED}"/usr/bin/completion.zsh _${PN} - fi - rm -f "${ED}"/usr/bin/completion.* - - cd "${S}" - dodoc AUTHORS INSTALL* README* - if use doc; then - dohtml -r "${ED}usr/share/gromacs/html/" - if [[ $PV = *9999* ]]; then - insinto /usr/share/gromacs - doins "admin/programs.txt" - ls -1 "${ED}"/usr/bin | sed -e '/_d$/d' > "${T}"/programs.list - doins "${T}"/programs.list - else - dodoc "${DISTDIR}/${PN}-manual-${MANUAL_PV}.pdf" - fi - fi - rm -rf "${ED}usr/share/gromacs/html/" -} - -pkg_postinst() { - einfo - einfo "Please read and cite:" - einfo "Gromacs 4, J. Chem. Theory Comput. 4, 435 (2008). " - einfo "http://dx.doi.org/10.1021/ct700301q" - if use offensive; then - einfo - einfo $(g_luck) - einfo "For more Gromacs cool quotes (gcq) add g_luck to your .bashrc" - fi - einfo - elog "Gromacs can use sci-chemistry/vmd to read additional file formats" -} |