commit:     bb7078923091f3a7e8acddde6a84b3acafd28c5b
Author:     François Bissey <francois.bissey <AT> canterbury <DOT> ac <DOT> nz>
AuthorDate: Thu Apr 27 12:46:26 2017 +0000
Commit:     Justin Lecher <jlec <AT> gentoo <DOT> org>
CommitDate: Thu Apr 27 12:46:26 2017 +0000
URL:        https://gitweb.gentoo.org/proj/sci.git/commit/?id=bb707892

sci-libs/openblas: Bump openblas to 0.2.19 (#779)

* sci-libs/openblas: Bump openblas to latest

Package-Manager: portage-2.3.3

* sci-libs/openblas: add a few upstreamed patches

Package-Manager: portage-2.3.3

 sci-libs/openblas/files/openblas-0.2.19-MAKE.patch |  29 +++
 .../files/openblas-0.2.19-utest_ldflags.patch      |  13 ++
 sci-libs/openblas/openblas-0.2.19.ebuild           | 199 +++++++++++++++++++++
 3 files changed, 241 insertions(+)

diff --git a/sci-libs/openblas/files/openblas-0.2.19-MAKE.patch 
b/sci-libs/openblas/files/openblas-0.2.19-MAKE.patch
new file mode 100644
index 000000000..c77dd0f93
--- /dev/null
+++ b/sci-libs/openblas/files/openblas-0.2.19-MAKE.patch
@@ -0,0 +1,29 @@
+diff --git a/Makefile b/Makefile
+index 2ae0047..2071e10 100644
+--- a/Makefile
++++ b/Makefile
+@@ -278,13 +278,13 @@ lapack-timing : large.tgz timing.tgz
+ ifndef NOFORTRAN
+       (cd $(NETLIB_LAPACK_DIR); $(TAR) zxf ../timing.tgz TIMING)
+       (cd $(NETLIB_LAPACK_DIR)/TIMING; $(TAR) zxf ../../large.tgz )
+-      make -C $(NETLIB_LAPACK_DIR)/TIMING
++      $(MAKE) -C $(NETLIB_LAPACK_DIR)/TIMING
+ endif
+ 
+ 
+ lapack-test :
+       (cd $(NETLIB_LAPACK_DIR)/TESTING && rm -f x* *.out)
+-      make -j 1 -C $(NETLIB_LAPACK_DIR)/TESTING xeigtstc  xeigtstd  xeigtsts  
xeigtstz  xlintstc  xlintstd  xlintstds  xlintstrfd  xlintstrfz  xlintsts  
xlintstz  xlintstzc xlintstrfs xlintstrfc
++      $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR)/TESTING xeigtstc  xeigtstd  
xeigtsts  xeigtstz  xlintstc  xlintstd  xlintstds  xlintstrfd  xlintstrfz  
xlintsts  xlintstz  xlintstzc xlintstrfs xlintstrfc
+ ifneq ($(CROSS), 1)
+       ( cd $(NETLIB_LAPACK_DIR)/INSTALL; ./testlsame; ./testslamch; 
./testdlamch; \
+         ./testsecond; ./testdsecnd; ./testieee; ./testversion )
+@@ -299,7 +299,7 @@ lapack-runtest:
+ 
+ blas-test:
+       (cd $(NETLIB_LAPACK_DIR)/BLAS && rm -f x* *.out)
+-      make -j 1 -C $(NETLIB_LAPACK_DIR) blas_testing
++      $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR) blas_testing
+       (cd $(NETLIB_LAPACK_DIR)/BLAS && cat *.out)
+ 
+ 

diff --git a/sci-libs/openblas/files/openblas-0.2.19-utest_ldflags.patch 
b/sci-libs/openblas/files/openblas-0.2.19-utest_ldflags.patch
new file mode 100644
index 000000000..2ffd5babe
--- /dev/null
+++ b/sci-libs/openblas/files/openblas-0.2.19-utest_ldflags.patch
@@ -0,0 +1,13 @@
+diff --git a/utest/Makefile b/utest/Makefile
+index 3ccc0a0..ce809e3 100644
+--- a/utest/Makefile
++++ b/utest/Makefile
+@@ -18,7 +18,7 @@ endif
+ all : run_test
+ 
+ $(UTESTBIN): $(OBJS)
+-      $(CC) $(CFLAGS) -o $@ $^ ../$(LIBNAME) $(EXTRALIB) $(FEXTRALIB)
++      $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ ../$(LIBNAME) $(EXTRALIB) 
$(FEXTRALIB)
+ 
+ run_test: $(UTESTBIN)
+ ifndef CROSS

diff --git a/sci-libs/openblas/openblas-0.2.19.ebuild 
b/sci-libs/openblas/openblas-0.2.19.ebuild
new file mode 100644
index 000000000..3ff5f8502
--- /dev/null
+++ b/sci-libs/openblas/openblas-0.2.19.ebuild
@@ -0,0 +1,199 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+NUMERIC_MODULE_NAME="openblas"
+
+inherit alternatives-2 eutils multilib numeric numeric-int64-multibuild
+
+DESCRIPTION="Optimized BLAS library based on GotoBLAS2"
+HOMEPAGE="http://xianyi.github.com/OpenBLAS/";
+SRC_URI="http://github.com/xianyi/OpenBLAS/tarball/v${PV} -> ${P}.tar.gz
+       http://sagetrac.lipn.univ-paris13.fr/sage/${PN}-0.2.19-clang-3.9.patch";
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x86-macos ~ppc64 ~x64-macos"
+IUSE="dynamic openmp static-libs threads"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+       virtual/pkgconfig"
+
+MULTILIB_WRAPPED_HEADERS=(
+       /usr/include/openblas/cblas.h
+       /usr/include/openblas/f77blas.h
+       /usr/include/openblas/openblas_config.h
+)
+
+PATCHES=(
+       "${DISTDIR}"/${PN}-0.2.19-clang-3.9.patch
+       "${FILESDIR}"/${PN}-0.2.19-MAKE.patch
+       "${FILESDIR}"/${PN}-0.2.19-utest_ldflags.patch
+       )
+
+get_openblas_flags() {
+       local openblas_flags=()
+       use dynamic && \
+               openblas_flags+=( DYNAMIC_ARCH=1 TARGET=GENERIC NUM_THREADS=64 
NO_AFFINITY=1 )
+       $(numeric-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_OPENMP=1 )
+       fi
+       local profname=$(numeric-int64_get_module_name)
+       local libname="${profname//-/_}"
+       local underscoresuffix="${libname#${PN}}"
+       if [[ "${underscoresuffix}" != "_" ]]; then
+               local libnamesuffix="${underscoresuffix#_}"
+               openblas_flags+=( LIBNAMESUFFIX=${libnamesuffix} )
+       fi
+
+       [[ "${ABI}" == "x86" ]] && openblas_flags+=( BINARY=32 )
+
+       echo "${openblas_flags[@]}"
+}
+
+get_openblas_abi_cflags() {
+       local openblas_abi_cflags=()
+       if [[ "${ABI}" == "x86" ]]; then
+               openblas_abi_cflags=( -DARCH_X86=1 -DOPENBLAS___32BIT__=1 )
+       elif [[ "${ABI}" == "amd64" ]]; then
+               openblas_abi_cflags=( -DARCH_X86_64=1 -DOPENBLAS___64BIT__=1 )
+       elif [[ "${ABI}" == "ppc64" ]]; then
+               openblas_abi_cflags=( -DARCH_POWER=1 -DOPENBLAS___64BIT__=1 )
+       else
+               die "unsupported abi: ${ABI}"
+       fi
+       $(numeric-int64_is_int64_build) && \
+               openblas_abi_cflags+=( -DOPENBLAS_USE64BITINT )
+       use openmp && openblas_abi_cflags+=( -fopenmp )
+       echo "${openblas_abi_cflags[@]}"
+}
+
+src_unpack() {
+       default
+       find "${WORKDIR}" -maxdepth 1 -type d -name \*OpenBLAS\* && \
+               mv "${WORKDIR}"/*OpenBLAS* "${S}" || die
+}
+
+src_prepare() {
+       default
+
+       # 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
+       numeric-int64-multibuild_copy_sources
+}
+
+src_configure() {
+       blas_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
+       }
+       numeric-int64-multibuild_foreach_all_abi_variants run_in_build_dir 
blas_configure
+}
+
+src_compile() {
+       # openblas already does multi-jobs
+       MAKEOPTS+=" -j1"
+       my_src_compile () {
+               local openblas_flags=$(get_openblas_flags)
+               # cflags already defined twice
+               unset CFLAGS || die
+               emake clean && emake libs shared ${openblas_flags}
+               mkdir -p libs && mv libopenblas* libs/ ||??die
+               # 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/ ||??die
+               fi
+               rm -f config.h config_last.h || die
+               # Note: prints this spurious warning: make: Nothing to be done 
for 'config.h'.
+               emake config.h
+               cp config.h config_last.h || die
+
+               mv libs/libopenblas* . || die
+       }
+       numeric-int64-multibuild_foreach_all_abi_variants run_in_build_dir 
my_src_compile
+}
+
+src_test() {
+       my_src_test () {
+               local openblas_flags=$(get_openblas_flags)
+               emake tests ${openblas_flags}
+       }
+       numeric-int64-multibuild_foreach_all_abi_variants run_in_build_dir 
my_src_test
+}
+
+src_install() {
+       my_src_install() {
+               local openblas_flags=$(get_openblas_flags)
+               local profname=$(numeric-int64_get_module_name)
+               local pcfile
+               # 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)
+               if ! use static-libs; then
+                       rm "${ED}"usr/$(get_libdir)/lib*.a || die
+               fi
+
+               local openblas_abi_cflags=$(get_openblas_abi_cflags)
+               local 
openblas_abi_fflags=$(numeric-int64_get_fortran_int64_abi_fflags)
+               local libname="${profname//-/_}"
+
+               create_pkgconfig \
+                       --name "${profname}" \
+                       --libs "-L\${libdir} -l${libname}" \
+                       --libs-private "-lm" \
+                       --cflags "-I\${includedir}/${PN} 
${openblas_abi_cflags}" \
+                       ${profname}
+
+               if [[ ${CHOST} == *-darwin* ]] ; then
+                       cd "${ED}"/usr/$(get_libdir) ||??die
+                       local d
+                       for d in *.dylib; do
+                               ebegin "Correcting install_name of ${d}"
+                               install_name_tool -id 
"${EPREFIX}/usr/$(get_libdir)/${d}" "${d}" || die
+                               eend $?
+                       done
+               fi
+               if [[ ${#MULTIBUILD_VARIANTS[@]} -gt 1 ]]; then
+                       multilib_prepare_wrappers
+                       multilib_check_headers
+               fi
+       }
+       numeric-int64-multibuild_foreach_all_abi_variants run_in_build_dir 
my_src_install
+
+       printf "/usr/include/cblas.h ${PN}/cblas.h" > 
"${T}"/alternative-cblas-generic.sh ||??die
+       numeric-int64-multibuild_install_alternative blas ${NUMERIC_MODULE_NAME}
+       numeric-int64-multibuild_install_alternative cblas 
${NUMERIC_MODULE_NAME}
+
+       multilib_install_wrappers
+
+       dodoc 
GotoBLAS_{01Readme,03FAQ,04FAQ,05LargePage,06WeirdPerformance}.txt *md 
Changelog.txt
+}

Reply via email to