From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 1BB691387B1 for ; Sat, 28 Dec 2013 18:59:25 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 8B665E09DB; Sat, 28 Dec 2013 18:59:24 +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 CE2B0E09DB for ; Sat, 28 Dec 2013 18:59:23 +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 BD07D33F63A for ; Sat, 28 Dec 2013 18:59:22 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 39532E54FB for ; Sat, 28 Dec 2013 18:59:21 +0000 (UTC) From: "Justin Lecher" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Justin Lecher" Message-ID: <1388256992.0d0221742da92ce829e7b6cead68a420619408d3.jlec@gentoo> Subject: [gentoo-commits] proj/sci:master commit in: sci-libs/magma/ X-VCS-Repository: proj/sci X-VCS-Files: sci-libs/magma/ChangeLog sci-libs/magma/magma-1.3.0.ebuild sci-libs/magma/magma-1.4.0.ebuild X-VCS-Directories: sci-libs/magma/ X-VCS-Committer: jlec X-VCS-Committer-Name: Justin Lecher X-VCS-Revision: 0d0221742da92ce829e7b6cead68a420619408d3 X-VCS-Branch: master Date: Sat, 28 Dec 2013 18:59:21 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 6fee4b93-884a-4307-8b9e-7fa4b70d7de5 X-Archives-Hash: 883515dc9f095e0d57dff30d146700a8 commit: 0d0221742da92ce829e7b6cead68a420619408d3 Author: Justin Lecher gentoo org> AuthorDate: Sat Dec 28 18:56:32 2013 +0000 Commit: Justin Lecher gentoo org> CommitDate: Sat Dec 28 18:56:32 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=0d022174 sci-libs/magma: Respect LDFLAGS and set soname, gh#166; use cuda support correctly; use openmp uspport correctly; add missing quotes and die Package-Manager: portage-2.2.7 --- sci-libs/magma/ChangeLog | 10 +++ sci-libs/magma/magma-1.3.0.ebuild | 142 -------------------------------------- sci-libs/magma/magma-1.4.0.ebuild | 62 +++++++++-------- 3 files changed, 43 insertions(+), 171 deletions(-) diff --git a/sci-libs/magma/ChangeLog b/sci-libs/magma/ChangeLog index 1ad76a6..fb815ca 100644 --- a/sci-libs/magma/ChangeLog +++ b/sci-libs/magma/ChangeLog @@ -2,6 +2,16 @@ # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ + 28 Dec 2013; Justin Lecher -magma-1.3.0.ebuild, + magma-1.4.0.ebuild: + Respect LDFLAGS and set soname, gh#166; use cuda support correctly; use + openmp uspport correctly; add missing quotes and die + + 28 Dec 2013; Justin Lecher -magma-1.3.0.ebuild, + magma-1.4.0.ebuild: + Respect LDFLAGS and set soname, gh#166; use cuda support correctly; use + openmp uspport correctly; add missing quotes and die + 22 Feb 2013; Justin Lecher -magma-1.2.1.ebuild, -files/magma-1.2.1-duplicate-symbols.patch, magma-1.3.0.ebuild, metadata.xml: Use tc-getPKG_CONFIG from toolchain-funcs.eclass instead of plain pkg-config; diff --git a/sci-libs/magma/magma-1.3.0.ebuild b/sci-libs/magma/magma-1.3.0.ebuild deleted file mode 100644 index 37e7949..0000000 --- a/sci-libs/magma/magma-1.3.0.ebuild +++ /dev/null @@ -1,142 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: $ - -EAPI=4 - -FORTRAN_STANDARD="77 90" -inherit eutils fortran-2 multilib toolchain-funcs versionator - -DESCRIPTION="Matrix Algebra on GPU and Multicore Architectures" -HOMEPAGE="http://icl.cs.utk.edu/magma/" -SRC_URI="http://icl.cs.utk.edu/projectsfiles/${PN}/pubs/${P}.tar.gz" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" -IUSE="fermi kepler static-libs" - -RDEPEND=" - dev-util/nvidia-cuda-toolkit - virtual/cblas - virtual/fortran - virtual/lapack" -DEPEND="${RDEPEND} - virtual/pkgconfig" - -# We have to have write acccess /dev/nvidia0 and /dev/nvidiactl and the portage -# user is (usually) not in the video group -RESTRICT="userpriv" - -static_to_shared() { - local libstatic=${1}; shift - local libname=$(basename ${libstatic%.a}) - local soname=${libname}$(get_libname $(get_version_component_range 1-2)) - local libdir=$(dirname ${libstatic}) - - einfo "Making ${soname} from ${libstatic}" - if [[ ${CHOST} == *-darwin* ]] ; then - ${LINK:-$(tc-getCC)} ${LDFLAGS} \ - -dynamiclib -install_name "${EPREFIX}"/usr/lib/"${soname}" \ - -Wl,-all_load -Wl,${libstatic} \ - "$@" -o ${libdir}/${soname} || die "${soname} failed" - else - ${LINK:-$(tc-getCC)} ${LDFLAGS} \ - -shared -Wl,-soname=${soname} \ - -Wl,--whole-archive ${libstatic} -Wl,--no-whole-archive \ - "$@" -o ${libdir}/${soname} || die "${soname} failed" - [[ $(get_version_component_count) -gt 1 ]] && \ - ln -s ${soname} ${libdir}/${libname}$(get_libname $(get_major_version)) - ln -s ${soname} ${libdir}/${libname}$(get_libname) - fi -} - -src_prepare() { - epatch "${FILESDIR}"/${PN}-1.2.1-no-cuda-driver.patch - - # http://icl.cs.utk.edu/magma/forum/viewtopic.php?f=2&t=789 - sed -i -e 's/void magmaSetDevice/static void magmaSetDevice/' src/*getrf2_mgpu.cpp - - # distributed pc file not so useful so replace it - cat <<-EOF > ${PN}.pc - prefix=${EPREFIX}/usr - libdir=\${prefix}/$(get_libdir) - includedir=\${prefix}/include/${PN} - Name: ${PN} - Description: ${DESCRIPTION} - Version: ${PV} - URL: ${HOMEPAGE} - Libs: -L\${libdir} -lmagma -lmagmablas - Libs.private: -lm -lpthread -ldl -lcublas -lcudart - Cflags: -I\${includedir} - Requires: cblas lapack - EOF -} - -src_configure() { - cat <<-EOF > make.inc - ARCH = $(tc-getAR) - ARCHFLAGS = cr - RANLIB = $(tc-getRANLIB) - NVCC = nvcc - CC = $(tc-getCXX) - FORT = $(tc-getFC) - INC = -I"${EPREFIX}/opt/cuda/include" -DADD_ -DCUBLAS_GFORTRAN - OPTS = ${CFLAGS} -fPIC - FOPTS = ${FFLAGS} -fPIC -x f95-cpp-input - F77OPTS = ${FFLAGS} -fPIC - NVOPTS = -DADD_ --compiler-options '-fPIC ${CFLAGS}' -DUNIX - LOADER = $(tc-getFC) - LIBBLAS = $($(tc-getPKG_CONFIG) --libs cblas) - LIBLAPACK = $($(tc-getPKG_CONFIG) --libs lapack) - CUDADIR = "${EPREFIX}/opt/cuda" - LIBCUDA = -L\$(CUDADIR)/$(get_libdir) -lcublas -lcudart - LIB = -pthread -lm -ldl \$(LIBCUDA) \$(LIBBLAS) \$(LIBLAPACK) -lstdc++ - EOF - if use kepler; then - echo >> make.inc "GPU_TARGET = Kepler" - elif use fermi; then - echo >> make.inc "GPU_TARGET = Fermi" - else # See http://icl.cs.utk.edu/magma/forum/viewtopic.php?f=2&t=227 - echo >> make.inc "GPU_TARGET = Tesla" - fi - - # see http://icl.cs.utk.edu/magma/forum/viewtopic.php?f=2&t=532 -# sed -i -e 's:[cz]heevd_m.cpp::g' src/Makefile.src src/Makefile - sed -i -e 's:[cz]hegvd_m.cpp::g' src/Makefile.src src/Makefile -} - -src_compile() { - # restrict to -j1 otherwise the static archive is not complete - emake -j1 lib - LINK=$(tc-getFC) static_to_shared lib/libmagmablas.a -lm -lpthread -ldl \ - -lcublas -lcudart -L"${EPREFIX}"/opt/cuda/$(get_libdir) -lstdc++ \ - $($(tc-getPKG_CONFIG) --libs cblas) $($(tc-getPKG_CONFIG) --libs lapack) - static_to_shared lib/libmagma.a -lm -lpthread -ldl -lcublas -lcudart \ - -L"${EPREFIX}"/opt/cuda/$(get_libdir) -lmagmablas \ - -Llib $($(tc-getPKG_CONFIG) --libs cblas) $($(tc-getPKG_CONFIG) --libs lapack) - if use static-libs; then - emake cleanall - sed 's/-fPIC//g' make.inc - emake lib - fi -} - -src_test() { - emake test lapacktest - cd testing/lin - # we need to access this while running the tests - addwrite /dev/nvidiactl - addwrite /dev/nvidia0 - LD_LIBRARY_PATH=${S}/lib python lapack_testing.py || die -} - -src_install() { - dolib.so lib/lib*$(get_libname)* - use static-libs && dolib.a lib/lib*.a - insinto /usr/include/${PN} - doins include/*.h - insinto /usr/$(get_libdir)/pkgconfig - doins ${PN}.pc - dodoc README ReleaseNotes -} diff --git a/sci-libs/magma/magma-1.4.0.ebuild b/sci-libs/magma/magma-1.4.0.ebuild index b17c326..8d1eaf7 100644 --- a/sci-libs/magma/magma-1.4.0.ebuild +++ b/sci-libs/magma/magma-1.4.0.ebuild @@ -2,10 +2,13 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: $ -EAPI=4 +EAPI=5 + +PYTHON_COMPAT=( python{2_6,2_7} ) FORTRAN_STANDARD="77 90" -inherit eutils fortran-2 multilib toolchain-funcs versionator + +inherit cuda eutils flag-o-matic fortran-2 multilib toolchain-funcs versionator python-any-r1 DESCRIPTION="Matrix Algebra on GPU and Multicore Architectures" HOMEPAGE="http://icl.cs.utk.edu/magma/" @@ -14,7 +17,9 @@ SRC_URI="http://icl.cs.utk.edu/projectsfiles/${PN}/downloads/${P}.tar.gz" LICENSE="BSD" SLOT="0" KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" -IUSE="fermi kepler static-libs" +IUSE="fermi kepler static-libs test" + +REQUIRED_USE="?? ( fermi kepler )" RDEPEND=" dev-util/nvidia-cuda-toolkit @@ -22,33 +27,16 @@ RDEPEND=" virtual/fortran virtual/lapack" DEPEND="${RDEPEND} - virtual/pkgconfig" + virtual/pkgconfig + test? ( ${PYTHON_DEPS} )" # We have to have write acccess /dev/nvidia0 and /dev/nvidiactl and the portage # user is (usually) not in the video group RESTRICT="userpriv" -static_to_shared() { - local libstatic=${1}; shift - local libname=$(basename ${libstatic%.a}) - local soname=${libname}$(get_libname $(get_version_component_range 1-2)) - local libdir=$(dirname ${libstatic}) - - einfo "Making ${soname} from ${libstatic}" - if [[ ${CHOST} == *-darwin* ]] ; then - ${LINK:-$(tc-getCC)} ${LDFLAGS} \ - -dynamiclib -install_name "${EPREFIX}"/usr/lib/"${soname}" \ - -Wl,-all_load -Wl,${libstatic} \ - "$@" -o ${libdir}/${soname} || die "${soname} failed" - else - ${LINK:-$(tc-getCC)} ${LDFLAGS} \ - -shared -Wl,-soname=${soname} \ - -Wl,--whole-archive ${libstatic} -Wl,--no-whole-archive \ - "$@" -o ${libdir}/${soname} || die "${soname} failed" - [[ $(get_version_component_count) -gt 1 ]] && \ - ln -s ${soname} ${libdir}/${libname}$(get_libname $(get_major_version)) - ln -s ${soname} ${libdir}/${libname}$(get_libname) - fi +pkg_setup() { + fortran-2_pkg_setup + use test && python-any-r1_pkg_setup } src_prepare() { @@ -61,11 +49,23 @@ src_prepare() { Description: ${DESCRIPTION} Version: ${PV} URL: ${HOMEPAGE} - Libs: -L\${libdir} -lmagma -lmagmablas + Libs: -L\${libdir} -lmagma Libs.private: -lm -lpthread -ldl -lcublas -lcudart Cflags: -I\${includedir} Requires: cblas lapack EOF + + if [[ $(tc-getCC) =~ gcc ]]; then + local eopenmp=-fopenmp + elif [[ $(tc-getCC) =~ icc ]]; then + local eopenmp=-openmp + else + elog "Cannot detect compiler type so not setting openmp support" + fi + append-flags -fPIC ${eopenmp} + append-ldflags -Wl,-soname,lib${PN}.so.1.4 ${eopenmp} + + cuda_src_prepare } src_configure() { @@ -80,7 +80,8 @@ src_configure() { OPTS = ${CFLAGS} -fPIC FOPTS = ${FFLAGS} -fPIC -x f95-cpp-input F77OPTS = ${FFLAGS} -fPIC - NVOPTS = -DADD_ --compiler-options '-fPIC ${CFLAGS}' -DUNIX + NVOPTS = -DADD_ -DUNIX ${NVCCFLAGS} + LDOPTS = ${LDFLAGS} LOADER = $(tc-getFC) LIBBLAS = $($(tc-getPKG_CONFIG) --libs cblas) LIBLAPACK = $($(tc-getPKG_CONFIG) --libs lapack) @@ -100,15 +101,18 @@ src_configure() { src_compile() { emake lib emake shared + mv lib/lib${PN}.so{,.1.4} || die + ln -sf lib${PN}.so.1.4 lib/lib${PN}.so.1 || die + ln -sf lib${PN}.so.1.4 lib/lib${PN}.so || die } src_test() { emake test lapacktest - cd testing/lin + cd testing/lin || die # we need to access this while running the tests addwrite /dev/nvidiactl addwrite /dev/nvidia0 - LD_LIBRARY_PATH=${S}/lib python lapack_testing.py || die + LD_LIBRARY_PATH="${S}"/lib ${EPYTHON} lapack_testing.py || die } src_install() {