commit:     7fcc36e404a535776e7d53f1e0bcac3e36a33f38
Author:     Denis Dupeyron <calchan <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 27 20:24:53 2015 +0000
Commit:     Denis Dupeyron <calchan <AT> gentoo <DOT> org>
CommitDate: Fri Mar 27 20:24:53 2015 +0000
URL:        https://gitweb.gentoo.org/proj/sci.git/commit/?id=7fcc36e4

sci-libs/openblas: version bump

 sci-libs/openblas/ChangeLog              |   7 +-
 sci-libs/openblas/openblas-0.2.14.ebuild | 227 +++++++++++++++++++++++++++++++
 2 files changed, 233 insertions(+), 1 deletion(-)

diff --git a/sci-libs/openblas/ChangeLog b/sci-libs/openblas/ChangeLog
index fee0835..1f27f12 100644
--- a/sci-libs/openblas/ChangeLog
+++ b/sci-libs/openblas/ChangeLog
@@ -1,7 +1,12 @@
 # ChangeLog for sci-libs/openblas
-# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
+# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
 # $Header: $
 
+*openblas-0.2.14 (27 Mar 2015)
+
+  27 Mar 2015; Denis Dupeyron <calc...@gentoo.org> +openblas-0.2.14.ebuild:
+  Version bump.
+
   20 Oct 2014; Mark Wright <gie...@gentoo.org> openblas-9999.ebuild:
   Thanks to kiwifb for reporting
   https://github.com/gentoo-science/sci/issues/280 - Fix openblas: discrepancy

diff --git a/sci-libs/openblas/openblas-0.2.14.ebuild 
b/sci-libs/openblas/openblas-0.2.14.ebuild
new file mode 100644
index 0000000..2b5f76d
--- /dev/null
+++ b/sci-libs/openblas/openblas-0.2.14.ebuild
@@ -0,0 +1,227 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+EBASE_PROFNAME="openblas"
+inherit alternatives-2 eutils fortran-2 multibuild multilib-build 
toolchain-funcs fortran-int64
+
+SRC_URI+="http://dev.gentoo.org/~gienah/distfiles/${PN}-0.2.11-gentoo.patch";
+if [[ ${PV} == "9999" ]] ; then
+       EGIT_REPO_URI="https://github.com/xianyi/OpenBLAS.git";
+       EGIT_BRANCH="develop"
+       inherit git-r3
+       KEYWORDS=""
+else
+       SRC_URI+=" http://github.com/xianyi/OpenBLAS/tarball/v${PV} -> 
${P}.tar.gz"
+       KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x86-macos ~ppc-macos 
~x64-macos"
+fi
+
+DESCRIPTION="Optimized BLAS library based on GotoBLAS2"
+HOMEPAGE="http://xianyi.github.com/OpenBLAS/";
+LICENSE="BSD"
+SLOT="0"
+IUSE="dynamic int64 openmp static-libs threads"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+       virtual/pkgconfig"
+PDEPEND="
+       >=virtual/blas-2.1-r2[int64?]
+       >=virtual/cblas-2.0-r1[int64?]"
+
+MULTILIB_WRAPPED_HEADERS=(
+       /usr/include/openblas/cblas.h
+       /usr/include/openblas/f77blas.h
+       /usr/include/openblas/openblas_config.h
+)
+
+get_openblas_flags() {
+       local openblas_flags=""
+       use dynamic && \
+               openblas_flags+=" DYNAMIC_ARCH=1 TARGET=GENERIC NUM_THREADS=64 
NO_AFFINITY=1"
+       $(fortran-int64_is_int64_build) && \
+               openblas_flags+=" INTERFACE64=1"
+       # choose posix threads over openmp when the two are set
+       # yet to see the need of having the two profiles simultaneously
+       if use threads; then
+               openblas_flags+=" USE_THREAD=1 USE_OPENMP=0"
+       elif use openmp; then
+               openblas_flags+=" USE_THREAD=0 USE_OPENMP=1"
+       fi
+       local profname=$(fortran-int64_get_profname)
+       local libname="${profname//-/_}"
+       local underscoresuffix="${libname#${PN}}"
+       if [[ "${underscoresuffix}" != "_" ]]; then
+               local libnamesuffix="${underscoresuffix#_}"
+               openblas_flags+=" LIBNAMESUFFIX=${libnamesuffix}"
+       fi
+       echo "${openblas_flags}"
+}
+
+get_openblas_abi_cflags() {
+       local openblas_abi_cflags=""
+       if [[ "${ABI}" == "x86" ]]; then
+               openblas_abi_cflags="-DOPENBLAS_ARCH_X86=1 
-DOPENBLAS___32BIT__=1"
+       else
+               openblas_abi_cflags="-DOPENBLAS_ARCH_X86_64=1 
-DOPENBLAS___64BIT__=1"
+       fi
+       $(fortran-int64_is_int64_build) && \
+               openblas_abi_cflags+=" -DOPENBLAS_USE64BITINT"
+       echo "${openblas_abi_cflags}"
+}
+
+src_unpack() {
+       if [[ ${PV} == "9999" ]] ; then
+               git-r3_src_unpack
+       else
+               default
+               if [[ ${PV} != "9999" ]] ; then
+                       find "${WORKDIR}" -maxdepth 1 -type d -name 
\*OpenBLAS\* && \
+                               mv "${WORKDIR}"/*OpenBLAS* "${S}"
+               fi
+       fi
+}
+
+src_prepare() {
+       local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) )
+       epatch "${DISTDIR}/${PN}-0.2.11-gentoo.patch"
+       if [[ ${PV} == "0.2.11" ]] ; then
+               epatch "${FILESDIR}/${PN}-0.2.11-cpuid_x86.patch"
+       fi
+       # lapack and lapacke are not modified from upstream lapack
+       sed \
+               -e "s:^#\s*\(NO_LAPACK\)\s*=.*:\1=1:" \
+               -e "s:^#\s*\(NO_LAPACKE\)\s*=.*:\1=1:" \
+               -i Makefile.rule || die
+       multibuild_copy_sources
+}
+
+src_configure() {
+       local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) )
+       my_configure() {
+               local openblas_abi_cflags="$(get_openblas_abi_cflags)"
+               local 
internal_openblas_abi_cflags="${openblas_abi_cflags//OPENBLAS_}"
+               sed \
+                       -e "s:^#\s*\(CC\)\s*=.*:\1=$(tc-getCC) 
$(get_abi_CFLAGS):" \
+                       -e "s:^#\s*\(FC\)\s*=.*:\1=$(tc-getFC) 
$(get_abi_CFLAGS):" \
+                       -e "s:^#\s*\(COMMON_OPT\)\s*=.*:\1=${CFLAGS} 
${internal_openblas_abi_cflags}:" \
+                       -i Makefile.rule || die
+       }
+       multibuild_foreach_variant run_in_build_dir 
fortran-int64_multilib_multibuild_wrapper my_configure
+}
+
+src_compile() {
+       local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) )
+       # openblas already does multi-jobs
+       MAKEOPTS+=" -j1"
+       my_src_compile () {
+               local openblas_flags=$(get_openblas_flags)
+               local profname=$(fortran-int64_get_profname)
+               local libname="${profname//-/_}"
+               einfo "Compiling profile ${profname}"
+               # cflags already defined twice
+               unset CFLAGS
+               emake clean
+               emake libs shared ${openblas_flags}
+               mkdir -p libs && mv libopenblas* libs/
+               # avoid pic when compiling static libraries, so re-compiling
+               if use static-libs; then
+                       emake clean
+                       emake libs ${openblas_flags} NO_SHARED=1 NEED_PIC=
+                       mv libopenblas* libs/
+               fi
+               # Fix Bug 524612 - [science overlay] sci-libs/openblas-0.2.11 - 
Assembler messages:
+               # ../kernel/x86_64/gemm_kernel_8x4_barcelona.S:451: Error: 
missing ')'
+               # The problem is applying this patch in src_prepare() causes 
build failures on
+               # assembler code as the assembler does not understand 
sizeof(float).  So
+               # delay applying the patch until after building the libraries.
+               epatch 
"${FILESDIR}/${PN}-0.2.11-openblas_config_header_same_between_ABIs.patch"
+               rm -f config.h config_last.h
+               # Note: prints this spurious warning: make: Nothing to be done 
for 'config.h'.
+               emake config.h
+               cp config.h config_last.h || die
+               cat <<-EOF > ${profname}.pc
+                       prefix=${EPREFIX}/usr
+                       libdir=\${prefix}/$(get_libdir)
+                       includedir=\${prefix}/include
+                       Name: ${profname}
+                       Description: ${DESCRIPTION}
+                       Version: ${PV}
+                       URL: ${HOMEPAGE}
+                       Libs: -L\${libdir} -l${libname}
+                       Libs.private: -lm
+               EOF
+               local openblas_abi_cflags=$(get_openblas_abi_cflags)
+               local 
openblas_abi_fflags=$(fortran-int64_get_fortran_int64_abi_fflags)
+               cat <<-EOF >> ${profname}.pc
+                       Cflags: -I\${includedir}/${PN} ${openblas_abi_cflags}
+                       Fflags=${openblas_abi_fflags}
+               EOF
+               mv libs/libopenblas* . || die
+       }
+       multibuild_foreach_variant run_in_build_dir 
fortran-int64_multilib_multibuild_wrapper my_src_compile
+}
+
+src_test() {
+       local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) )
+       my_src_test () {
+               local openblas_flags=$(get_openblas_flags)
+               emake tests ${openblas_flags}
+       }
+       multibuild_foreach_variant run_in_build_dir 
fortran-int64_multilib_multibuild_wrapper my_src_test
+}
+
+src_install() {
+       local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) )
+       my_src_install() {
+               local openblas_flags=$(get_openblas_flags)
+               local profname=$(fortran-int64_get_profname)
+               local pcfile
+               for pcfile in *.pc; do
+                       local profname=${pcfile%.pc}
+                       # The file /usr/include/openblas/openblas_config.h is 
generated during the install.
+                       # The sed on config_last.h removes the #define's 
OPENBLAS_USE64BITINT
+                       # OPENBLASS__32BIT__ OPENBLASS__64BIT__ 
OPENBLAS__ARCH_X86 OPENBLAS__ARCH_X86_64
+                       # from /usr/include/openblas/openblas_config.h.  We 
then specify it in Cflags in
+                       # the 
/usr/lib64/pkg-config/openblas-int64-{threads,openmp}.pc file.
+                       sed -e '/#define USE64BITINT/d' \
+                               -e '/#define ARCH_X86/d' \
+                               -e '/#define __\(32\|64\)BIT__/d' \
+                               -i config_last.h \
+                               || die "Could not ensure there is no definition 
of USE64BITINT in config_last.h"
+                       emake install \
+                               PREFIX="${ED}"usr ${openblas_flags} \
+                               OPENBLAS_INCLUDE_DIR="${ED}"usr/include/${PN} \
+                               OPENBLAS_LIBRARY_DIR="${ED}"usr/$(get_libdir)
+                       use static-libs || rm "${ED}"usr/$(get_libdir)/lib*.a
+                       alternatives_for $(fortran-int64_get_blas_provider) 
${profname} 0 \
+                               
/usr/$(get_libdir)/pkgconfig/$(fortran-int64_get_blas_provider).pc ${pcfile}
+                       alternatives_for $(fortran-int64_get_cblas_provider) 
${profname} 0 \
+                               
/usr/$(get_libdir)/pkgconfig/$(fortran-int64_get_cblas_provider).pc ${pcfile} \
+                               /usr/include/cblas.h ${PN}/cblas.h
+                       insinto /usr/$(get_libdir)/pkgconfig
+                       doins ${pcfile}
+               done
+
+               if [[ ${CHOST} == *-darwin* ]] ; then
+                       cd "${ED}"/usr/$(get_libdir)
+                       local d
+                       for d in *.dylib ; do
+                               ebegin "Correcting install_name of ${d}"
+                               install_name_tool -id 
"${EPREFIX}/usr/$(get_libdir)/${d}" "${d}"
+                               eend $?
+                       done
+               fi
+               if [[ ${#MULTIBUILD_VARIANTS[@]} -gt 1 ]]; then
+                       multilib_prepare_wrappers
+                       multilib_check_headers
+               fi
+       }
+       multibuild_foreach_variant run_in_build_dir 
fortran-int64_multilib_multibuild_wrapper my_src_install
+       multilib_install_wrappers
+
+       dodoc GotoBLAS_{01Readme,03FAQ,04FAQ,05LargePage,06WeirdPerformance}.txt
+       dodoc *md Changelog.txt
+}

Reply via email to