From f32850b70483c21c278afb7ee258ae6c9a384ffc Mon Sep 17 00:00:00 2001 From: Honza Macháček Date: Wed, 20 Feb 2013 11:40:39 +0100 Subject: Added sci-physics/abinit-7.0.5, compilation of GPU support in sci-libs/bigdft-1.7_pre12 improved. --- sci-libs/bigdft/ChangeLog | 4 + sci-libs/bigdft/bigdft-1.7_pre12.ebuild | 11 +- .../bigdft/files/bigdft-1.7-dev.12-GPUlink.patch | 12 + sci-physics/abinit/ChangeLog | 5 + sci-physics/abinit/Manifest | 1 + sci-physics/abinit/abinit-7.0.5.ebuild | 357 +++++++++++++++++++++ 6 files changed, 387 insertions(+), 3 deletions(-) create mode 100644 sci-libs/bigdft/files/bigdft-1.7-dev.12-GPUlink.patch create mode 100644 sci-physics/abinit/abinit-7.0.5.ebuild diff --git a/sci-libs/bigdft/ChangeLog b/sci-libs/bigdft/ChangeLog index 82de595f0..93ecd7e8b 100644 --- a/sci-libs/bigdft/ChangeLog +++ b/sci-libs/bigdft/ChangeLog @@ -4,6 +4,10 @@ <<<<<<< HEAD + 20 Feb 2013; Honza Macháček + bigdft-1.7_pre12.ebuild, +files/bigdft-1.7-dev.12-GPUlink.patch: + Compilation of GPU support in bigdft-1.7_pre12 improved. Yet to be tested. + *bigdft-1.7_pre12 (17 Jan 2013) 17 Jan 2013; Honza Macháček diff --git a/sci-libs/bigdft/bigdft-1.7_pre12.ebuild b/sci-libs/bigdft/bigdft-1.7_pre12.ebuild index de32f986b..7e28cdcf4 100644 --- a/sci-libs/bigdft/bigdft-1.7_pre12.ebuild +++ b/sci-libs/bigdft/bigdft-1.7_pre12.ebuild @@ -2,9 +2,11 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: $ -EAPI=4 +EAPI=5 -inherit autotools-utils eutils flag-o-matic fortran-2 toolchain-funcs +PYTHON_COMPAT=( python2_5 python2_6 python2_7 ) + +inherit autotools-utils eutils flag-o-matic fortran-2 python-r1 toolchain-funcs REAL_P="${P/_pre/-dev.}" @@ -41,8 +43,10 @@ DEPEND="${RDEPEND} dev-util/pkgconfig >=sys-devel/autoconf-2.59 doc? ( virtual/latex-base ) + cuda? ( ${PYTHON_DEPS} ) + opencl? ( ${PYTHON_DEPS} ) app-arch/tar - app-arch/bzip2" + app-arch/gzip" S="${WORKDIR}/${REAL_P}" @@ -70,6 +74,7 @@ pkg_setup() { src_prepare() { epatch \ "${FILESDIR}"/"${REAL_P}"-libxc_dir_include.patch \ + "${FILESDIR}"/"${REAL_P}"-GPUlink.patch \ "${FILESDIR}"/"${REAL_P}"-nolib_mods.patch tar -xjf "${FILESDIR}"/"${REAL_P}"-tests.tar.bz2 -C "${S}"/tests/DFT/postSCF/ eautoreconf diff --git a/sci-libs/bigdft/files/bigdft-1.7-dev.12-GPUlink.patch b/sci-libs/bigdft/files/bigdft-1.7-dev.12-GPUlink.patch new file mode 100644 index 000000000..f4b0e18a9 --- /dev/null +++ b/sci-libs/bigdft/files/bigdft-1.7-dev.12-GPUlink.patch @@ -0,0 +1,12 @@ +diff -Naurp bigdft-1.7-dev.12.orig/S_GPU/src/Makefile.in bigdft-1.7-dev.12/S_GPU/src/Makefile.in +--- bigdft-1.7-dev.12.orig/S_GPU/src/Makefile.in 2012-07-16 08:24:00.000000000 +0000 ++++ bigdft-1.7-dev.12/S_GPU/src/Makefile.in 2013-02-19 15:59:06.142835878 +0000 +@@ -88,7 +88,7 @@ am__objects_1 = libs_gpu_la-s_gpu_C.lo \ + libs_gpu_la-s_gpu_F.lo + am_libs_gpu_la_OBJECTS = $(am__objects_1) + libs_gpu_la_OBJECTS = $(am_libs_gpu_la_OBJECTS) +-libs_gpu_la_LINK = $(LIBTOOL) --tag=CXX $(libs_gpu_la_LIBTOOLFLAGS) \ ++libs_gpu_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libs_gpu_la_LDFLAGS) $(LDFLAGS) -o $@ + DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) diff --git a/sci-physics/abinit/ChangeLog b/sci-physics/abinit/ChangeLog index 08c3872c8..c5fa554e7 100644 --- a/sci-physics/abinit/ChangeLog +++ b/sci-physics/abinit/ChangeLog @@ -2,6 +2,11 @@ # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ +*abinit-7.0.5 (20 Feb 2013) + + 20 Feb 2013; Honza Macháček +abinit-7.0.5.ebuild: + Quick version bump to abinit-7.0.5. + 18 Jan 2013; Honza Macháček +files/6.12.3-gui-makefiles.tbz, abinit-7.0.4.ebuild: Makefile sources for the gui, missing in the 7.0.4, added from the 6.12.3 diff --git a/sci-physics/abinit/Manifest b/sci-physics/abinit/Manifest index 689bd12de..1663924dd 100644 --- a/sci-physics/abinit/Manifest +++ b/sci-physics/abinit/Manifest @@ -1,2 +1,3 @@ DIST abinit-6.12.3.tar.gz 58483889 SHA256 243a3832e258d12998d9d188141cfedeabdbfee9867c1951d7f27b8230dec5e9 SHA512 a14764c7c031890ea9cb64dd8fb439959fae4b50d59985bd2e9d9c12a06f71f92491c015c64c7273b4089cd57934a699f3d4c3c2f377032cbd655aa887241a65 WHIRLPOOL caa5e8159fac7353ee87663f195419acee57246f1a3015941368ed026c3a15a07cf135dbf57fc8a81f0cdd24c042af1ccc1c63e3e20a73042d3462530bd5b904 DIST abinit-7.0.4.tar.gz 61715030 SHA256 b3ad895b75b92b3ff05e873d42d0b26f6e6113b9de4579966f7b6d1b49d6004e SHA512 8edfe4019c968e6f912d0678fe331fc8a6ce2848f1b16973336d4181d010a776ed1ea2c5500499dac895d9d773d72165e20524705cf8928f91ede873272b0417 WHIRLPOOL 35da8681a68e435b460a11112e6cf6990fdf141d53d5849be45225d50e803e2bfc65cb05e5e576c704411be5734e47ed2e4ccca1fd1689311bd4febea937f0f8 +DIST abinit-7.0.5.tar.gz 61711550 SHA256 b16556aa05448781d872ab18f76ca6446a52be9eeed8d22015a0b63f4adf0f54 SHA512 007292cc7cdf459a5d62e907b29009d9496955952b5f491fa9183a5abb86dbf48020eb435b784d74037e381d65d2255a2b9a130322ee9bfecbff8ca075488ecd WHIRLPOOL 74d83a3a05817eaca402ace1b7ec3c3a6db3697a7ca0166549aee8155edfa2a7c8d516e2ae210a6f0e855f72617d704785bbb10e3a3ee262140964913608a307 diff --git a/sci-physics/abinit/abinit-7.0.5.ebuild b/sci-physics/abinit/abinit-7.0.5.ebuild new file mode 100644 index 000000000..a3ab9aede --- /dev/null +++ b/sci-physics/abinit/abinit-7.0.5.ebuild @@ -0,0 +1,357 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=4 + +inherit autotools-utils eutils flag-o-matic fortran-2 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 ~x86" +IUSE="cuda cuda-double -debug +etsf_io +fftw +fftw-threads +fox gsl gui +hdf5 libabinit mpi +netcdf openmp python -test +threads -vdwxc" + +RDEPEND="~sci-libs/bigdft-1.7_pre12 + =sci-libs/libxc-1*[fortran] + sci-physics/atompaw[libxc] + etsf_io? ( sci-libs/etsf_io ) + fox? ( >=sci-libs/fox-4.1.2-r1[sax] ) + netcdf? ( + || ( + sci-libs/netcdf[fortran] + sci-libs/netcdf-fortran + ) + hdf5? ( + sci-libs/netcdf[hdf5] + ) + ) + hdf5? ( sci-libs/hdf5[fortran] ) + sci-libs/wannier90 + virtual/blas + virtual/lapack + gsl? ( sci-libs/gsl ) + fftw? ( + sci-libs/fftw:3.0 + fftw-threads? ( sci-libs/fftw:3.0[threads] ) + ) + mpi? ( virtual/mpi ) + python? ( dev-python/numpy ) + cuda? ( dev-util/nvidia-cuda-sdk )" +DEPEND="${RDEPEND} + dev-util/pkgconfig + gui? ( >=virtual/jdk-1.6.0 + app-arch/sharutils + sys-apps/gawk ) + dev-perl/Text-Markdown" + +S=${WORKDIR}/${P%[a-z]} + +lat1loc="" + +DOCS=( AUTHORS ChangeLog COPYING INSTALL KNOWN_PROBLEMS NEWS PACKAGING + README README.ChangeLog README.GPU README.xlf RELNOTES THANKS ) + +FORTRAN_STANDARD=90 + +pkg_setup() { + # Doesn't compile with gcc-4.0, only >=4.1 + if [[ $(tc-getFC) == *gfortran ]]; then + if [[ $(gcc-major-version) -eq 4 ]] \ + && [[ $(gcc-minor-version) -lt 1 ]]; then + die "Requires gcc-4.1 or newer" + fi + fi + + # fortran-2.eclass does not handle mpi wrappers + if use mpi; then + export FC="mpif90" + export F77="mpif77" + export CC="mpicc" + export CXX="mpic++" + else + tc-export FC F77 CC CXX + fi + + # Preprocesor macross can make some lines really long + append-fflags -ffree-line-length-none + + fortran-2_pkg_setup + if use openmp; then + tc-has-openmp || \ + die "Please select an openmp capable compiler like gcc[openmp]" + fi + + # Sort out some USE options + if use fftw-threads && ! use fftw; then + ewarn "fftw-threads set but fftw not used, ignored" + fi + if use cuda-double && ! use cuda; then + ewarn "cuda-double set but cuda not used, ignored" + fi + if use gui; then + lat1loc="$(locale |awk '/LC_CTYPE="(.*)"/{sub("LC_CTYPE=\"",""); sub("\" *$", ""); print}')" + if locale charmap |grep -i "\"; then + einfo "Good, locale compatible with the GUI build" + else + ewarn "The locale ${lat1loc} incompatible with the GUI build" + if latloc=`locale -a| grep -i "\"`; then + if echo "${latloc}" |grep -q "^fr"; then + lat1loc="$(echo "${latloc}" | grep -im1 "^fr")" + else + lat1loc="$(echo "${latloc}" | grep -im1 "iso88591")" + fi + einfo "Will use ${lat1loc} to build the GUI" + else + ewarn "No ISO-8859-1 nor ISO-8859-15 locale available, the GUI build may crash" + fi + fi + fi +} + +src_unpack() { + default_src_unpack + if use gui; then + pushd "${S}" > /dev/null + tar -xjf "${FILESDIR}"/6.12.3-gui-makefiles.tbz + popd > /dev/null + fi + +} + +src_prepare() { + epatch \ + "${FILESDIR}"/6.2.2-change-default-directories.patch \ + "${FILESDIR}"/6.12.1-autoconf.patch \ + "${FILESDIR}"/6.12.1-xmalloc.patch \ + "${FILESDIR}"/7.0.4-test_dirs.patch + eautoreconf + sed -e"s/\(grep '\^-\)\(\[LloW\]\)'/\1\\\(\2\\\|pthread\\\)'/g" -i configure + + if use gui; then + pushd gui > /dev/null + eautoreconf + popd > /dev/null + fi +} + +src_configure() { + local openmp="" + use openmp && openmp="-fopenmp" + local libs="" + local modules="-I/usr/$(get_libdir)/finclude $(FoX-config --sax --fcflags)" + local FoX_libs="${libs} $(FoX-config --sax --libs)" + local trio_flavor="" + use etsf_io && trio_flavor="${trio_flavor}+etsf_io" + use fox && trio_flavor="${trio_flavor}+fox" + use netcdf && trio_flavor="${trio_flavor}+netcdf" + test "no${trio_flavor}" = "no" && trio_flavor="none" + local netcdff_libs="-lnetcdff" + use hdf5 && netcdff_libs="${netcdff_libs} -lhdf5_fortran" + local fft_flavor="fftw3" + local fft_libs="" + # The fftw threads support is protected by black magick. + # Anybody removes it, dies. + # New USE flag "fftw-threads" was added to control usage + # of the threaded fftw variant. Since fftw-3.3 has expanded + # the paralel options by MPI and OpenMP support, analogical + # USE flags should be added to select them in future; + # unusable with previous FFTW versions, they are postponed + # for now. + if use fftw-threads; then + fft_flavor="fftw3-threads" + if has_version '>=sci-libs/fftw-3.3'; then + # pkg-config files for fftw-3.3 are broken + # All the parallel stuff is separated + # from the main body of common routines, + # and -lfftw3 must be always included alongside. + # Until version 3.3 this used to be masked by + # .la files. + # Bug 384645 + fft_libs="${fft_libs} $(pkg-config --libs fftw3_threads) $(pkg-config --libs fftw3)" + else + fft_libs="${fft_libs} $(pkg-config --libs fftw3_threads)" + fi + else + fft_libs="${fft_libs} $(pkg-config --libs fftw3)" + fi + local gpu_flavor="none" + if use cuda; then + gpu_flavor="cuda-single" + if use cuda-double; then + gpu_flavor="cuda-double" + fi + fi + + local myeconfargs=( + --enable-clib + --enable-exports + $(use_enable gui) + $(use_enable debug debug enhanced) + $(use_enable mpi) + $(use_enable mpi mpi-io) + $(use_enable openmp) + $(use_enable vdwxc) + $(use_enable cuda gpu) + "$(use cuda && echo "--with-gpu-flavor=${gpu_flavor}")" + "$(use cuda && echo "--with-gpu-prefix=/opt/cuda/")" + "$(use gsl && echo "--with-math-flavor=gsl")" + "$(use gsl && echo "--with-math-incs=$(pkg-config --cflags gsl)")" + "$(use gsl && echo "--with-math-libs=$(pkg-config --libs gsl)")" + --with-linalg-flavor="atlas" + --with-linalg-libs="$(pkg-config --libs lapack)" + --with-trio-flavor="${trio_flavor}" + "$(use netcdf && echo "--with-netcdf-incs=-I/usr/include")" + "$(use netcdf && echo "--with-netcdf-libs=$(pkg-config --libs netcdf) ${netcdff_libs}")" + "$(use fox && echo "--with-fox-incs=${modules}")" + "$(use fox && echo "--with-fox-libs=${FoX_libs}")" + "$(use etsf_io && echo "--with-etsf-io-incs=${modules}")" + "$(use etsf_io && echo "--with-etsf-io-libs=${libs} -letsf_io -letsf_io_utils -letsf_io_low_level")" + --with-dft-flavor="libxc+bigdft+atompaw+wannier90" + --with-libxc-incs="${modules}" + --with-libxc-libs="${libs} -lxc" + --with-bigdft-incs="${modules}" + --with-bigdft-libs="$(pkg-config --libs bigdft)" + --with-atompaw-incs="${modules}" + --with-atompaw-libs="${libs} -latompaw" + --with-wannier90-bins="/usr/bin" + --with-wannier90-incs="${modules}" + --with-wannier90-libs="${libs} -lwannier $(pkg-config --libs lapack)" + "$(use fftw && echo "--with-fft-flavor=${fft_flavor}")" + "$(use fftw && echo "--with-fft-incs=-I/usr/include")" + "$(use fftw && echo "--with-fft-libs=${fft_libs}")" + --with-timer-flavor="abinit" + LD="$(tc-getLD)" + FCFLAGS="${FCFLAGS:- ${FFLAGS:- -O2}} ${openmp} ${modules} -I/usr/include" + ) + + MARKDOWN=Markdown.pl autotools-utils_src_configure + + if use gui; then + # autotools-utils_src_configure() part expanded + _check_build_dir + pushd "${AUTOTOOLS_BUILD_DIR}" > /dev/null + mkdir -p gui + cd gui + ECONF_SOURCE="${S}"/gui econf UUDECODE="uudecode" + popd > /dev/null + fi +} + +src_compile() { + autotools-utils_src_compile + + # Apparently libabinit.a is not built by default + # Used by BigDFT. Should probably be built separately, + # as a package of its own: BigDFT used by Abinit. + # Does libabinit.a depend on BigDFT, if used? + # Can Abinit use external libabinit.a? + use libabinit && autotools-utils_src_compile libabinit.a + + if use gui; then + #autotools-utils_src_compile() expanded + # _check_build_dir has already been called + pushd "${AUTOTOOLS_BUILD_DIR}" > /dev/null + # now what the function cannot be called to do + cd gui + LC_CTYPE="${lat1loc}" emake || die "Making GUI failed" + popd > /dev/null + fi + + sed -i -e's/libatlas/lapack/' "${AUTOTOOLS_BUILD_DIR}"/config.pc +} + +src_test() { + einfo "The tests take quite a while, easily several hours" + # autotools-utils_src_test() expanded + _check_build_dir + pushd "${AUTOTOOLS_BUILD_DIR}" > /dev/null + # again something the autotools-utils function cannot be called to do + # now quite a lot of work actually + cd tests + emake tests_acc || ewarn "Accuracy tests failed" + emake tests_paw || ewarn "PAW tests failed" + emake tests_gw || ewarn "GW tests failed" + emake tests_gw_paw || ewarn "GW-PAW tests failed" + emake tests_bs || ewarn "BSE tests failed" + emake tests_tddft || ewarn "TDDFT tests failed" + emake tests_eph || ewarn "Elphon tests failed" + + 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 "tmp-test*" -print | \ + while read testdir; do + if [ -e summary_of_tests.tar ]; then + tar rvf summary_of_tests.tar ${testdir} + else tar cvf summary_of_tests.tar ${testdir} + fi + done + popd > /dev/null + + elog "The full test results will be installed as summary_of_tests.tar.bz2." + elog "Also a concise report tests_summary.txt is installed." +} + +src_install() { + #autotools-utils_src_install() expanded + _check_build_dir + pushd "${AUTOTOOLS_BUILD_DIR}" > /dev/null + emake DESTDIR="${D}" install || die "make install failed" + + use libabinit && dolib libabinit.a + + if use gui; then + pushd gui > /dev/null + emake DESTDIR="${D}" install || die "The GUI install failed" + popd > /dev/null + fi + + if use test; then + for dc in tests_summary.txt summary_of_tests.tar; do + test -e tests/"${dc}" && dodoc tests/"${dc}" || ewarn "Copying tests results failed" + done + fi + + popd > /dev/null + + # XXX: support installing them from builddir as well!!! + if [[ ${DOCS} ]]; then + dodoc "${DOCS[@]}" || die "dodoc failed" + else + local f + # same list as in PMS + for f in README* ChangeLog AUTHORS NEWS TODO CHANGES \ + THANKS BUGS FAQ CREDITS CHANGELOG; do + if [[ -s ${f} ]]; then + dodoc "${f}" || die "(default) dodoc ${f} failed" + fi + done + fi + if [[ ${HTML_DOCS} ]]; then + dohtml -r "${HTML_DOCS[@]}" || die "dohtml failed" + fi + + # Remove libtool files and unnecessary static libs + remove_libtool_files +} + +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 +} -- cgit v1.2.3-65-gdbad