# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 EAPI="2" inherit fortran multilib toolchain-funcs DESCRIPTION="Find total energy, charge density and electronic structure using density functional theory" HOMEPAGE="http://www.abinit.org/" SRC_URI="http://ftp.abinit.org/${P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~ppc ~x86" IUSE="mpi test fox gsl fftw" RDEPEND="=sci-libs/bigdft-1.2.0.2-r2 sci-libs/etsf_io >=sci-libs/libxc-1.0_alpha fox? ( sci-libs/fox[dom,sax,wcml,wxml] ) sci-libs/netcdf sci-libs/wannier90 virtual/blas virtual/lapack gsl? ( sci-libs/gsl ) fftw? ( sci-libs/fftw:2.1 ) mpi? ( virtual/mpi )" DEPEND="${RDEPEND}" # F90 code, g77 won't work FORTRAN="gfortran ifc mpif90" S=${WORKDIR}/${P%[a-z]} src_prepare() { epatch "${FILESDIR}"/6.0.3-change-default-directories.patch epatch "${FILESDIR}"/6.0.3-fftw.patch # epatch "${FILESDIR}"/6.0.3-libxc-flags.patch eautoreconf } src_configure() { local libs="-L/usr/$(get_libdir)" local modules="-I/usr/$(get_libdir)/finclude" local FoX_libs="-lFoX_dom -lFoX_sax -lFoX_wcml -lFoX_wxml -lFoX_common -lFoX_utils -lFoX_fsys" if use mpi; then MY_FC="mpif90" MY_CC="mpicc" else MY_FC="${FORTRANC}" MY_CC="$(tc-getCC)" fi econf \ $(use_enable mpi) \ $(use_enable mpi mpi-io) \ $(use_enable fox) \ $(use_enable gsl) \ $(use_enable fftw) \ $(use_enable fftw fftw-threads) \ --enable-etsf-io \ --enable-etsf-io-test \ --with-linalg-libs="$(pkg-config --libs lapack)" \ --with-netcdf-includes="-I/usr/include" \ --with-netcdf-libs="$(pkg-config --libs netcdf) -lnetcdff" \ --with-fox-includes="${modules}" \ --with-fox-libs="${libs} ${FoX_libs}" \ --with-etsf-io-includes="${modules}" \ --with-etsf-io-libs="${libs} -letsf_io -letsf_io_low_level -letsf_io_utils" \ --with-etsf-io-test-includes="${modules}" \ --with-etsf-io-test-libs="${libs} -letsf_io -letsf_io_low_level -letsf_io_utils" \ --with-libxc-includes="${modules}" \ --with-libxc-libs="${libs} -lxc" \ --with-bigdft-includes="${modules}" \ --with-bigdft-libs="${libs} -lpoissonsolver -lbigdft" \ --with-wannier90="/usr/bin/wannier90.x" \ --with-wannier90-includes="${modules}" \ --with-wannier90-libs="${libs} -lwannier" \ --with-cc-optflags="${CFLAGS}" \ --with-fc-optflags="${FCFLAGS:- ${FFLAGS:- -O2}}" \ --with-fc-ld-optlibs='-lpthread' \ --with-fftw-includes="-I/usr/include" \ --with-fftw-libs="-L/usr/lib -lfftw_threads -ldfftw -lrt -lm" \ --with-gsl-includes="$(pkg-config --cflags gsl)" \ --with-gsl-libs="$(pkg-config --libs gsl)" \ FC="${MY_FC}" \ CC="$(MY_CC)" \ LD="$(tc-getLD)" } src_compile() { # if use mpi; then # emake multi || die # else emake || die # fi } src_test() { einfo "The tests take quite a while, on the order of 1-2 hours" einfo "on an Intel Penryn (2.5 GHz)." cd "${S}"/tests emake tests_bench local REPORT for REPORT in $(find . -name report); do REPORT=${REPORT#*/} elog "Parameters and unusual results for ${REPORT%%/*} tests" echo "Parameters and unusual results for ${REPORT%%/*} tests" >>tests_summary.txt while read line; do elog "${line}" echo "${line}" >>tests_summary.txt done \ < <(grep -v -e succeeded -e passed ${REPORT}) done local testdir find . -name ",,test*" -print | \ while read testdir; do if [ -e summary_tests.tar ]; then tar rvf summary_tests.tar ${testdir} else tar cvf summary_tests.tar ${testdir} fi done elog "The full test results will be installed as summary_tests.tar.bz2." elog "Also a concise report tests_summary.txt is installed." } src_install() { emake DESTDIR="${D}" install || die "make install failed" if use test; then dodoc tests/tests_summary.txt || ewarn "Copying tests summary failed" dodoc tests/summary_tests.tar || ewarn "Copying tests results failed" fi dodoc KNOWN_PROBLEMS README || die "Copying doc files failed" } pkg_postinst() { if use test; then elog "The full test results will be installed as summary_tests.tar.bz2." elog "Also a concise report tests_summary.txt is installed." fi }