diff options
author | Jeffrey Gardner <je_fro@gentoo.org> | 2008-06-23 01:03:02 +0000 |
---|---|---|
committer | Jeffrey Gardner <je_fro@gentoo.org> | 2008-06-23 01:03:02 +0000 |
commit | 4cccb10f96db69b2462283699eae86943751827c (patch) | |
tree | e1d6a23af2c86a35daed17a168e29dc236cef2ca | |
parent | latest svn (diff) | |
download | je_fro-4cccb10f96db69b2462283699eae86943751827c.tar.gz je_fro-4cccb10f96db69b2462283699eae86943751827c.tar.bz2 je_fro-4cccb10f96db69b2462283699eae86943751827c.zip |
test new gromacs ebuild here before unleashing it on the world
svn path=/; revision=224
-rw-r--r-- | sci-chemistry/gromacs/gromacs-3.3.3.ebuild | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/sci-chemistry/gromacs/gromacs-3.3.3.ebuild b/sci-chemistry/gromacs/gromacs-3.3.3.ebuild new file mode 100644 index 0000000..7459905 --- /dev/null +++ b/sci-chemistry/gromacs/gromacs-3.3.3.ebuild @@ -0,0 +1,198 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +inherit eutils flag-o-matic fortran multilib + +DESCRIPTION="The ultimate molecular dynamics simulation package" +HOMEPAGE="http://www.gromacs.org/" +SRC_URI="ftp://ftp.gromacs.org/pub/${PN}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc64 ~sparc ~x86" +IUSE="3dnow X altivec blas double-precision lapack mpi +single-precision sse sse2 static xml" + +# mopac7 qm/mm is broken until we can get files from +# http://md.chem.rug.nl/~groenhof/qmmm.html +# or somewhere else... + +DEPEND=">=sci-libs/fftw-3.0.1 + mpi? ( virtual/mpi ) + app-shells/tcsh + X? ( x11-libs/libX11 + x11-libs/libXt + x11-libs/libXp + x11-libs/libXext + x11-proto/xproto + virtual/motif ) + blas? ( virtual/blas ) + lapack? ( virtual/lapack ) + xml? ( dev-libs/libxml2 )" + +FORTRAN="g77 gfortran ifc" + +src_unpack() { + + unpack ${A} + cd "${S}" + # Fix typos in a couple of files. + sed -e "s:+0f:-f:" -i share/tutor/gmxdemo/demo \ + || die "Failed to fixup demo script." + + # Fix a sandbox violation that occurs when re-emerging with mpi. + sed "/libdir=\"\$(libdir)\"/ a\ temp_libdir=\"${D}usr/$( get_libdir )\" ; \\\\" \ + -i src/tools/Makefile.am \ + || die "sed tools/Makefile.am failed" + + sed -e "s:\$\$libdir:\$temp_libdir:" \ + -i src/tools/Makefile.am \ + || die "sed tools/Makefile.am failed" + + sed "/libdir=\"\$(libdir)\"/ a\ temp_libdir=\"${D}usr/$( get_libdir )\" ; \\\\" \ + -i src/tools/Makefile.in \ + || die "sed tools/Makefile.in failed" + + sed -e "s:\$\$libdir:\$\$temp_libdir:" \ + -i src/tools/Makefile.in \ + || die "sed tools/Makefile.in failed" + + cd "${WORKDIR}" + if ( use double-precision && use single-precision ) ; then + einfo "Moving sources for Multiprecision Build" + mv "${P}" "${P}-single" + cp -prP "${P}-single" "${P}-double" + fi +} + +src_compile() { + + # static should work but something's broken. + # gcc spec file may be screwed up. + # Static linking should try -lgcc instead of -lgcc_s. + # For more info: + # http://lists.debian.org/debian-gcc/2002/debian-gcc-200201/msg00150.html + + # if we don't set C[XX]FLAGS configure will set: -O3 -finline-functions + # -funroll-all-loops +# append-flags "-O3 -finline-functions -funroll-all-loops" +# use x86 && append-flags "-malign-double" + + # We will compile single precision by default, and suffix double-precision with _d. + # Sparc is the only arch I can test on that needs to use fortran. + local myconf ; + + case "${ARCH}" in + + x86) + if ( use sse || use sse2 ) ; then + myconf="${myconf} --enable-ia32-sse" + fi + myconf="$myconf $(use_enable 3dnow ia32-3dnow)" + + if ( ! use sse && ! use sse2 && ! use 3dnow ) ; then + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="${myconf} --enable-fortran" && fortran_pkg_setup + fi + else + myconf="${myconf} --disable-fortran" + fi + ;; + + amd64) + myconf="$myconf --enable-x86-64-sse --disable-fortran" + ;; + + ppc*) + if use altivec ; then + myconf="${myconf} --enable-ppc-altivec --disable-fortran" + else + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="${myconf} --enable-fortran" && fortran_pkg_setup + fi + fi + ;; + + ia64) + myconf="$myconf --enable-ia64-asm --disable-fortran" + ;; + + alpha) + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="$myconf --enable-fortran" && fortran_pkg_setup + fi + ;; + + sparc) + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="${myconf} --enable-fortran" && fortran_pkg_setup + fi + ;; + esac + + # if we need external blas +# if use blas; then +# export LIBS="${LIBS} -lblas" +# myconf="${myconf} $(use_with blas external-blas)" +# fi + + # if we need external lapack + if use lapack; then + export LIBS="${LIBS} -llapack" + myconf="${myconf} $(use_with lapack external-lapack)" + fi + + myconf="--datadir=/usr/share \ + --bindir=/usr/bin \ + --libdir=/usr/$(get_libdir) \ + --with-fft=fftw3 \ + $(use_enable mpi) \ + $(use_with X x) \ + $(use_with xml) \ + $(use_enable static all-static) \ + ${myconf}" + + if ( use double-precision && use single-precision ); then + einfo "Building Single Precison Gromacs" + cd "${WORKDIR}"/"${P}"-single + myconf="${myconf} --enable-float" + econf ${myconf} || die "Single Precision econf failed" + emake || die "Single Precision emake failed" + + einfo "Building Double Precision Gromacs" + cd "${WORKDIR}"/"${P}"-double + myconf="${myconf} --enable-double --program-suffix=_d" + econf ${myconf} || die "Double Precision econf failed" + emake || die "Double Precision emake failed" + else + einfo "Building..." + cd "${WORKDIR}"/"${P}" + myconf="${myconf} $(use_enable double-precision double) \ + $(use_enable single-precision float)" + econf ${myconf} || die "configure failed" + emake || die "Single Precision emake failed" + fi +} + +src_install() { + if ( use double-precision && use single-precision ); then + einfo "Installing Single Precision" + cd "${WORKDIR}"/"${P}"-single + make DESTDIR="${D}" install || die "Installing Single Precision failed" + einfo "Installing Double Precision" + cd "${WORKDIR}"/"${P}"-double + make DESTDIR="${D}" install || die "Installing Double Precision failed" + fi + + dodoc AUTHORS INSTALL README + # Move html and leave examples and templates under /usr/share/gromacs. + mv "${D}"/usr/share/"${PN}"/html "${D}"/usr/share/doc/"${PF}"/ +} |