From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-644945-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 98FAA138247 for <garchives@archives.gentoo.org>; Tue, 3 Dec 2013 04:00:08 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5C874E09A7; Tue, 3 Dec 2013 04:00:07 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id D1619E09A7 for <gentoo-commits@lists.gentoo.org>; Tue, 3 Dec 2013 04:00:06 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 9962433EFDC for <gentoo-commits@lists.gentoo.org>; Tue, 3 Dec 2013 04:00:05 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 0B64AE54AB for <gentoo-commits@lists.gentoo.org>; Tue, 3 Dec 2013 04:00:04 +0000 (UTC) From: "Alexey Shvetsov" <alexxy@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Alexey Shvetsov" <alexxy@gentoo.org> Message-ID: <1386043178.ec5a4f359119a8d3bd186f4f3a24481a0089f98c.alexxy@gentoo> Subject: [gentoo-commits] proj/sci:master commit in: sci-chemistry/gromacs/ X-VCS-Repository: proj/sci X-VCS-Files: sci-chemistry/gromacs/ChangeLog sci-chemistry/gromacs/gromacs-9999.ebuild X-VCS-Directories: sci-chemistry/gromacs/ X-VCS-Committer: alexxy X-VCS-Committer-Name: Alexey Shvetsov X-VCS-Revision: ec5a4f359119a8d3bd186f4f3a24481a0089f98c X-VCS-Branch: master Date: Tue, 3 Dec 2013 04:00:04 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 053b48cf-e370-494e-8de6-e53c8f67a5aa X-Archives-Hash: 87544a068423483cb6198ac946871e27 commit: ec5a4f359119a8d3bd186f4f3a24481a0089f98c Author: Alexey Shvetsov <alexxy <AT> gentoo <DOT> org> AuthorDate: Tue Dec 3 03:59:38 2013 +0000 Commit: Alexey Shvetsov <alexxy <AT> gentoo <DOT> org> CommitDate: Tue Dec 3 03:59:38 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=ec5a4f35 Slightly update live ebuild for master branch Package-Manager: portage-2.2.7 --- sci-chemistry/gromacs/ChangeLog | 3 + sci-chemistry/gromacs/gromacs-9999.ebuild | 280 ++++++++++++++++++------------ 2 files changed, 172 insertions(+), 111 deletions(-) diff --git a/sci-chemistry/gromacs/ChangeLog b/sci-chemistry/gromacs/ChangeLog index 9a16c48..fc03b04 100644 --- a/sci-chemistry/gromacs/ChangeLog +++ b/sci-chemistry/gromacs/ChangeLog @@ -2,6 +2,9 @@ # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ + 03 Dec 2013; Alexey Shvetsov <alexxy@gentoo.org> gromacs-9999.ebuild: + Slightly update live ebuild for master branch + 01 Jun 2013; Christoph Junghans <ottxor@gentoo.org> gromacs-4.6.9999.ebuild: sync with gx86 diff --git a/sci-chemistry/gromacs/gromacs-9999.ebuild b/sci-chemistry/gromacs/gromacs-9999.ebuild index 36a6d2d..706734c 100644 --- a/sci-chemistry/gromacs/gromacs-9999.ebuild +++ b/sci-chemistry/gromacs/gromacs-9999.ebuild @@ -2,28 +2,47 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: $ -EAPI="5" +EAPI=5 -TEST_PV="4.0.4" +TEST_PV="5.0-beta1" +MANUAL_PV="5.0-beta1" -EGIT_REPO_URI="git://git.gromacs.org/gromacs http://repo.or.cz/r/gromacs.git" -EGIT_BRANCH="master" +CMAKE_MAKEFILE_GENERATOR="ninja" -ACCE_IUSE="sse2 sse4_1 avx128fma avx256" +inherit bash-completion-r1 cmake-utils cuda eutils multilib readme.gentoo toolchain-funcs -#to find external blas/lapack -CMAKE_MIN_VERSION="2.8.5-r2" +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="master" + inherit git-2 + LIVE_DEPEND="doc? ( + dev-texlive/texlive-latex + dev-texlive/texlive-latexextra + 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 )" + LIVE_DEPEND="" +fi -inherit bash-completion-r1 cmake-utils eutils git-2 multilib toolchain-funcs +ACCE_IUSE="sse2 sse4_1 avx128fma avx256" DESCRIPTION="The ultimate molecular dynamics simulation package" HOMEPAGE="http://www.gromacs.org/" -LICENSE="GPL-2" +# see COPYING for details +# 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/${PV}" -KEYWORDS="~alpha ~amd64 ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux" -IUSE="X blas doc -double-precision +fftw gsl lapack mpi +single-precision test -+threads xml zsh-completion ${ACCE_IUSE}" +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}" CDEPEND=" X? ( @@ -32,99 +51,121 @@ CDEPEND=" x11-libs/libICE ) blas? ( virtual/blas ) + 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 ) - xml? ( dev-libs/libxml2:2 )" + " DEPEND="${CDEPEND} - virtual/pkgconfig" + virtual/pkgconfig + ${LIVE_DEPEND}" RDEPEND="${CDEPEND}" -RESTRICT="test" - -src_prepare() { - #add user patches from /etc/portage/patches/sci-chemistry/gromacs - epatch_user - - if use mpi && use threads; then - elog "mdrun uses only threads OR mpi, and gromacs favours the" - elog "use of mpi over threads, so a mpi-version of mdrun will" - elog "be compiled. If you want to run mdrun on shared memory" - elog "machines only, you can safely disable mpi" - fi +REQUIRED_USE=" + || ( single-precision double-precision ) + cuda? ( single-precision ) + mkl? ( !blas !fftw !lapack )" - GMX_DIRS="" - use single-precision && GMX_DIRS+=" float" - use double-precision && GMX_DIRS+=" double" - #if neither single-precision nor double-precision is enabled - #build at least default (single) - [ -z "$GMX_DIRS" ] && GMX_DIRS+=" float" +DOCS=( AUTHORS README ) +HTML_DOCS=( "${ED}"/usr/share/gromacs/html/ ) - for x in ${GMX_DIRS}; do - mkdir -p "${WORKDIR}/${P}_${x}" || die - use test && cp -r "${WORKDIR}"/gmxtest "${WORKDIR}/${P}_${x}" - done +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_configure() { - local mycmakeargs_pre=( ) - #from gromacs configure - if use fftw; then - mycmakeargs_pre+=("-DGMX_FFT_LIBRARY=fftw3") +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default else - mycmakeargs_pre+=("-DGMX_FFT_LIBRARY=fftpack") - ewarn "WARNING: The built-in FFTPACK routines are slow." - ewarn "Are you sure you don\'t want to use FFTW?" - ewarn "It is free and much faster..." + 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 +} - if [[ $(gcc-version) == "4.1" ]]; then - eerror "gcc 4.1 is not supported by gromacs" - eerror "please run test suite" - die - fi +src_prepare() { + #notes/todos + # -on apple: there is framework support - #note for gentoo-PREFIX on apple: use --enable-apple-64bit - - if use double-precision ; then - #from gromacs manual - elog - elog "For most simulations single precision is accurate enough. In some" - elog "cases double precision is required to get reasonable results:" - elog - elog "-normal mode analysis, for the conjugate gradient or l-bfgs minimization" - elog " and the calculation and diagonalization of the Hessian " - elog "-calculation of the constraint force between two large groups of atoms" - elog "-energy conservation: this can only be done without temperature coupling and" - elog " without cutoffs" - elog - fi + cmake-utils_src_prepare + + use cuda && cuda_src_prepare - if use mpi ; then - elog "You have enabled mpi, only mdrun will make use of mpi, that is why" - elog "we configure/compile gromacs twice (with and without mpi) and only" - elog "install mdrun with mpi support. In addtion you will get libgmx and" - elog "libmd with and without mpi support." + 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 - #go from slowest to fasterest acceleration + DOC_CONTENTS="Gromacs can use sci-chemistry/vmd to read additional file formats" +} + +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 threads GMX_THREADS) - $(cmake-utils_use xml GMX_XML) + $(cmake-utils_use openmp GMX_OPENMP) + $(cmake-utils_use offensive GMX_COOL_QUOTES) -DGMX_DEFAULT_SUFFIX=off -DGMX_ACCELERATION="$acce" -DGMXLIB="$(get_libdir)" + -DGMX_VMD_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/vmd/plugins/*/molfile/" + -DGMX_PREFIX_LIBMD=ON + -DGMX_X86_AVX_GCC_MASKLOAD_BUG=OFF + -DGMX_USE_GCC44_BUG_WORKAROUND=OFF + ${extra} ) for x in ${GMX_DIRS}; do @@ -132,17 +173,32 @@ src_configure() { local suffix="" #if we build single and double - double is suffixed use double-precision && use single-precision && \ - [ "${x}" = "double" ] && suffix="_d" + [[ ${x} = "double" ]] && suffix="_d" local p - [ "${x}" = "double" ] && p="-DGMX_DOUBLE=ON" || p="-DGMX_DOUBLE=OFF" + [[ ${x} = "double" ]] && p="-DGMX_DOUBLE=ON" || p="-DGMX_DOUBLE=OFF" + local cuda=( "-DGMX_GPU=OFF" ) + [[ ${x} = "float" ]] && use cuda && \ + cuda=( -DGMX_GPU=ON ) mycmakeargs=( ${mycmakeargs_pre[@]} ${p} -DGMX_MPI=OFF + $(cmake-utils_use threads GMX_THREAD_MPI) "${cuda[@]}" -DGMX_OPENMM=OFF + "$(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_MPI=ON + mycmakeargs=( ${mycmakeargs_pre[@]} ${p} -DGMX_THREAD_MPI=OFF + -DGMX_MPI=ON ${cuda} -DGMX_OPENMM=OFF -DGMX_BINARY_SUFFIX="_mpi${suffix}" -DGMX_LIBS_SUFFIX="_mpi${suffix}" ) - BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" cmake-utils_src_configure + BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" CC="mpicc" cmake-utils_src_configure done } @@ -151,6 +207,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"\ @@ -160,11 +221,8 @@ src_compile() { 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}" + BUILD_DIR="${WORKDIR}/${P}_${x}"\ + cmake-utils_src_make check done } @@ -172,40 +230,38 @@ 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 + [[ ${CHOST} = *-darwin* ]] && \ + export DYLD_LIBRARY_PATH="${DYLD_LIBRARY_PATH}${DYLD_LIBRARY_PATH:+:}${ED}/usr/$(get_libdir)" + BUILD_DIR="${WORKDIR}"/manual_build cmake-utils_src_make + [[ ${CHOST} = *-darwin* ]] && DYLD_LIBRARY_PATH="${ED}/usr/$(get_libdir)" + newdoc "${WORKDIR}"/manual_build/gromacs.pdf "${PN}-manual-${PV}.pdf" + fi use mpi || continue - #cmake-utils_src_install does not support args - #using cmake-utils_src_compile instead BUILD_DIR="${WORKDIR}/${P}_${x}_mpi" \ - cmake-utils_src_make install-mdrun DESTDIR="${D}" + DESTDIR="${D}" cmake-utils_src_make install-mdrun done - sed -n -e '/^GMXBIN/,/^GMXDATA/p' "${ED}"/usr/bin/GMXRC.bash > "${T}/80gromacs" - echo "VMD_PLUGIN_PATH=${EPREFIX}/usr/$(get_libdir)/vmd/plugins/*/molfile/" >> "${T}/80gromacs" - - doenvd "${T}/80gromacs" - 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.* - - # Fix typos in a couple of files. - sed -e "s:+0f:-f:" -i "${ED}"usr/share/gromacs/tutor/gmxdemo/demo \ - || die "Failed to fixup demo script." - - cd "${S}" - dodoc AUTHORS INSTALL* README* - if use doc; then - dohtml -r "${ED}usr/share/gromacs/html/" - insinto /usr/share/gromacs - doins "admin/programs.txt" - ls -1 "${ED}"/usr/bin | sed -e '/_d$/d' > "${T}"/programs.list - doins "${T}"/programs.list - 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 } pkg_postinst() { @@ -213,9 +269,11 @@ pkg_postinst() { 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 - einfo $(g_luck) - einfo "For more Gromacs cool quotes (gcq) add g_luck to your .bashrc" - einfo - elog "Gromacs can use sci-chemistry/vmd to read additional file formats" + readme.gentoo_print_elog }