From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sci-libs/openblas/files/, sci-libs/openblas/
Date: Thu, 29 Oct 2020 20:16:55 +0000 (UTC) [thread overview]
Message-ID: <1604001779.bb8882671371c6fe665f279a4f41fd0199d28903.sam@gentoo> (raw)
commit: bb8882671371c6fe665f279a4f41fd0199d28903
Author: Aisha Tammy <gentoo <AT> aisha <DOT> cc>
AuthorDate: Wed Oct 21 21:17:02 2020 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Oct 29 20:02:59 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb888267
sci-libs/openblas: version bump to 0.3.12
fix export of toolchain variables
fix using BUILDCC for doing local scripting work
fix building of tests on cross compile
add options to manipulate threading and parallel calls
fix up patch to latest
add building of lapacke library
add option to build relapack extension
Closes: https://bugs.gentoo.org/749921
Package-Manager: Portage-3.0.8, Repoman-3.0.1
Signed-off-by: Aisha Tammy <gentoo <AT> aisha.cc>
Closes: https://github.com/gentoo/gentoo/pull/17993
Signed-off-by: Sam James <sam <AT> gentoo.org>
sci-libs/openblas/Manifest | 1 +
.../files/openblas-0.3.12-shared-blas-lapack.patch | 36 ++++
sci-libs/openblas/metadata.xml | 3 +
sci-libs/openblas/openblas-0.3.12.ebuild | 196 +++++++++++++++++++++
4 files changed, 236 insertions(+)
diff --git a/sci-libs/openblas/Manifest b/sci-libs/openblas/Manifest
index e9163333248..13a601adbee 100644
--- a/sci-libs/openblas/Manifest
+++ b/sci-libs/openblas/Manifest
@@ -1,2 +1,3 @@
DIST openblas-0.3.10.tar.gz 12246979 BLAKE2B 507aa3f058b841f477720cff98480afda5c3e236b688fb1a12ff45ce20c42c6e84c786d62a5db7e6de6d133d40286e58777fcb51d6542b7030629d55ba12086f SHA512 64a5f983b2f6e02cdb6e0f14433498cc5daa1ccfb49246f7a2dcd38f9982fa608f2abea069fe0e35012af8c1441c43d1f6418eaccd40795f5002fed1c36ce05d
+DIST openblas-0.3.12.tar.gz 12325103 BLAKE2B 3d6706e59e83f87dd58b287753bf697de99e83c8a4484453f120d8f8c9c69ea5b481a143db04342a1dcb1779ce548a49618cf4941d08d636e12ed481305e8fb5 SHA512 1ff5a065c41f7e460857f8428fc77900b189f051fa8129eea9ae93237f234d387cc1c6e627c2c95636164f512d4d721d4229729f04a04e8d5f655abbf5463d98
DIST openblas-0.3.9.tar.gz 12189745 BLAKE2B 3cc4c6a403d6a52845cf4ff8cef254f57587e17e3d09bfb6ed7c02ad06a6002e50b340177c73a944c2a621c12b7f494c516025751c194d019662c0b4db17f4dc SHA512 c6b8ee465f1cf53b37f21ec3ff9a28d5cafe20fec59d8c1bff5923a9e1989dfa5ae8c032a5d43988fe7722ed08c64c7957a3d30e6ae917e2e7aa2977a91e67a3
diff --git a/sci-libs/openblas/files/openblas-0.3.12-shared-blas-lapack.patch b/sci-libs/openblas/files/openblas-0.3.12-shared-blas-lapack.patch
new file mode 100644
index 00000000000..68a54cf1505
--- /dev/null
+++ b/sci-libs/openblas/files/openblas-0.3.12-shared-blas-lapack.patch
@@ -0,0 +1,36 @@
+diff --git a/interface/Makefile b/interface/Makefile
+index 6b247b4..1297c73 100644
+--- a/interface/Makefile
++++ b/interface/Makefile
+@@ -330,7 +330,7 @@ CCBLAS3OBJS = \
+ cblas_chemm.$(SUFFIX) cblas_cherk.$(SUFFIX) cblas_cher2k.$(SUFFIX) \
+ cblas_comatcopy.$(SUFFIX) cblas_cimatcopy.$(SUFFIX)\
+ cblas_cgeadd.$(SUFFIX)
+-
++
+ CXERBLAOBJ = \
+ cblas_xerbla.$(SUFFIX)
+
+@@ -2310,3 +2310,22 @@ cblas_zgeadd.$(SUFFIX) cblas_zgeadd.$(PSUFFIX) : zgeadd.c
+ cblas_xerbla.$(SUFFIX) cblas_xerbla.$(PSUFFIX) : xerbla.c
+ $(CC) -c $(CFLAGS) -DCBLAS $< -o $(@F)
+
++#####
++shared-blas-lapack: libblas.so.3 libcblas.so.3 liblapack.so.3 liblapacke.so.3
++
++# The list of prerequisite is created by comparing with NETLIB BLAS public API.
++libblas.so.3: $(SBLAS1OBJS) $(SBLAS2OBJS) $(SBLAS3OBJS) $(DBLAS1OBJS) $(DBLAS2OBJS) $(DBLAS3OBJS) $(CBLAS1OBJS) $(CBLAS2OBJS) $(CBLAS3OBJS) $(ZBLAS1OBJS) $(ZBLAS2OBJS) $(ZBLAS3OBJS) ../kernel/lsame.o ../kernel/scabs1.o ../kernel/dcabs1.o ../driver/others/xerbla.o
++ $(CC) $(LDFLAGS) -shared -o $@ $^ -Wl,-soname,libblas.so.3 -L.. -lopenblas $(EXTRALIB)
++
++libcblas.so.3: $(CSBLAS1OBJS) $(CSBLAS2OBJS) $(CSBLAS3OBJS) $(CDBLAS1OBJS) $(CDBLAS2OBJS) $(CDBLAS3OBJS) $(CCBLAS1OBJS) $(CCBLAS2OBJS) $(CCBLAS3OBJS) $(CZBLAS1OBJS) $(CZBLAS2OBJS) $(CZBLAS3OBJS) ../kernel/lsame.o ../kernel/scabs1.o ../kernel/dcabs1.o ../driver/others/xerbla.o
++ $(CC) $(LDFLAGS) -shared -o $@ $^ -Wl,-soname,libblas.so.3 -L.. -lopenblas $(EXTRALIB)
++
++# The prerequisites must match the symbols deleted in target delete-duplicate-lapack-objects
++liblapack.so.3: $(SLAPACKOBJS) $(DLAPACKOBJS) $(CLAPACKOBJS) $(ZLAPACKOBJS) ../kernel/lsame.o ../driver/others/xerbla.o
++ $(CC) $(LDFLAGS) -shared -o $@ $^ ../lapack-netlib/SRC/*.o -Wl,-soname,liblapack.so.3 -L.. -lopenblas $(EXTRALIB)
++
++liblapacke.so.3: liblapack.so.3
++ $(CC) $(LDFLAGS) -shared -o $@ `find ../lapack-netlib/LAPACKE -name "*.o"` -Wl,-soname,liblapacke.so.3 -L.. -lopenblas $(EXTRALIB)
++
++clean::
++ rm -f libblas.so.3 libcblas.so.3 liblapack.so.3
diff --git a/sci-libs/openblas/metadata.xml b/sci-libs/openblas/metadata.xml
index 0661dad2eee..0f6a98c1f26 100644
--- a/sci-libs/openblas/metadata.xml
+++ b/sci-libs/openblas/metadata.xml
@@ -33,6 +33,9 @@
<flag name="pthread">
Build with pthread threading model
</flag>
+ <flag name="relapack">
+ Build the ReLAPACK extension to OpenBLAS
+ </flag>
</use>
<upstream>
<remote-id type="github">xianyi/OpenBLAS</remote-id>
diff --git a/sci-libs/openblas/openblas-0.3.12.ebuild b/sci-libs/openblas/openblas-0.3.12.ebuild
new file mode 100644
index 00000000000..b9d0d023fb5
--- /dev/null
+++ b/sci-libs/openblas/openblas-0.3.12.ebuild
@@ -0,0 +1,196 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic fortran-2 toolchain-funcs
+
+DESCRIPTION="Optimized BLAS library based on GotoBLAS2"
+HOMEPAGE="http://xianyi.github.com/OpenBLAS/"
+SRC_URI="https://github.com/xianyi/OpenBLAS/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}"/OpenBLAS-${PV}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos"
+IUSE="dynamic eselect-ldso index-64bit openmp pthread +relapack test"
+REQUIRED_USE="?? ( openmp pthread )"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ eselect-ldso? (
+ >=app-eselect/eselect-blas-0.2
+ >=app-eselect/eselect-lapack-0.2
+ )
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.3.12-shared-blas-lapack.patch"
+ "${FILESDIR}/${PN}-0.3.10-dont-clobber-fflags.patch"
+)
+
+pkg_pretend() {
+ elog "This software has a massive number of options that"
+ elog "are configurable and it is *impossible* for all of"
+ elog "those to fit inside any manageable ebuild."
+ elog "The Gentoo provided package has enough to build"
+ elog "a fully optimized library for your targeted CPU."
+ elog "You can set the CPU target using the environment"
+ elog "variable - OPENBLAS_TARGET or it will be detected"
+ elog "automatically from the target toolchain (supports"
+ elog "cross compilation toolchains)."
+ elog "You can control the maximum number of threads"
+ elog "using OPENBLAS_NTHREAD, default=64 and number of "
+ elog "parallel calls to allow before further calls wait"
+ elog "using OPENBLAS_NPARALLEL, default=8."
+}
+
+pkg_setup() {
+ fortran-2_pkg_setup
+
+ # List of most configurable options - Makefile.rule
+
+ # https://github.com/xianyi/OpenBLAS/pull/2663
+ tc-export CC FC LD AR AS RANLIB
+
+ # HOSTCC is used for scripting
+ export HOSTCC=$(tc-getBUILD_CC)
+
+ # threading options
+ use openmp && tc-check-openmp
+ USE_THREAD=0
+ if use openmp; then
+ USE_THREAD=1; USE_OPENMP=1;
+ elif use pthread; then
+ USE_THREAD=1; USE_OPENMP=0;
+ fi
+ export USE_THREAD USE_OPENMP
+
+ # We need to filter these while building the library, and not just
+ # while building the test suite. Will hopefully get fixed upstream:
+ # https://github.com/xianyi/OpenBLAS/issues/2657
+ use test && filter-flags "-fbounds-check" "-fcheck=bounds" "-fcheck=all"
+
+ # disable submake with -j and default optimization flags
+ # in Makefile.system
+ # Makefile.rule says to not modify COMMON_OPT/FCOMMON_OPT...
+ export MAKE_NB_JOBS=-1 \
+ COMMON_OPT=" " \
+ FCOMMON_OPT=" "
+
+ # Target CPU ARCH options
+ # generally detected automatically from cross toolchain
+ use dynamic && \
+ export DYNAMIC_ARCH=1 \
+ NO_AFFINITY=1 \
+ TARGET=GENERIC
+
+ export NUM_PARALLEL=${OPENBLAS_NPARALLEL:-8} \
+ NUM_THREADS=${OPENBLAS_NTHREAD:-64}
+
+ # setting OPENBLAS_TARGET to override auto detection
+ # in case the toolchain is not enough to detect
+ # https://github.com/xianyi/OpenBLAS/blob/develop/TargetList.txt
+ if ! use dynamic && [[ ! -z "${OPENBLAS_TARGET}" ]] ; then
+ export TARGET="${OPENBLAS_TARGET}"
+ fi
+
+ export NO_STATIC=1
+
+ BUILD_RELAPACK=1
+ if ! use relapack; then
+ BUILD_RELAPACK=0
+ fi
+
+ export PREFIX="${EPREFIX}/usr" BUILD_RELAPACK
+}
+
+src_prepare() {
+ default
+ # disable tests by default
+ sed -e "/^all ::/s/tests //" -i Makefile || die
+ # if 64bit-index is needed, create second library
+ # with LIBPREFIX=libopenblas64
+ if use index-64bit; then
+ cp -aL "${S}" "${S}-index-64bit" || die
+ fi
+}
+
+src_compile() {
+ default
+ cd interface
+ emake shared-blas-lapack
+
+ if use index-64bit; then
+ emake -C"${S}-index-64bit" \
+ INTERFACE64=1 \
+ LIBPREFIX=libopenblas64
+ fi
+}
+
+src_test() {
+ emake tests
+}
+
+src_install() {
+ emake install DESTDIR="${D}" \
+ OPENBLAS_INCLUDE_DIR='$(PREFIX)'/include/${PN} \
+ OPENBLAS_LIBRARY_DIR='$(PREFIX)'/$(get_libdir)
+
+ dodoc GotoBLAS_*.txt *.md Changelog.txt
+
+ if use index-64bit; then
+ dolib.so "${S}-index-64bit"/libopenblas64*.so*
+ fi
+
+ if use eselect-ldso; then
+ insinto /usr/$(get_libdir)/blas/openblas/
+ doins interface/libblas.so.3
+ dosym libblas.so.3 usr/$(get_libdir)/blas/openblas/libblas.so
+ doins interface/libcblas.so.3
+ dosym libcblas.so.3 usr/$(get_libdir)/blas/openblas/libcblas.so
+
+ insinto /usr/$(get_libdir)/lapack/openblas/
+ doins interface/liblapack.so.3
+ dosym liblapack.so.3 usr/$(get_libdir)/lapack/openblas/liblapack.so
+ doins interface/liblapacke.so.3
+ dosym liblapacke.so.3 usr/$(get_libdir)/lapack/openblas/liblapacke.so
+ fi
+}
+
+pkg_postinst() {
+ use eselect-ldso || return
+ local libdir=$(get_libdir) me="openblas"
+
+ # check blas
+ eselect blas add ${libdir} "${EROOT}"/usr/${libdir}/blas/${me} ${me}
+ local current_blas=$(eselect blas show ${libdir} | cut -d' ' -f2)
+ if [[ ${current_blas} == "${me}" || -z ${current_blas} ]]; then
+ eselect blas set ${libdir} ${me}
+ elog "Current eselect: BLAS/CBLAS ($libdir) -> [${current_blas}]."
+ else
+ elog "Current eselect: BLAS/CBLAS ($libdir) -> [${current_blas}]."
+ elog "To use blas [${me}] implementation, you have to issue (as root):"
+ elog "\t eselect blas set ${libdir} ${me}"
+ fi
+
+ # check lapack
+ eselect lapack add ${libdir} "${EROOT}"/usr/${libdir}/lapack/${me} ${me}
+ local current_lapack=$(eselect lapack show ${libdir} | cut -d' ' -f2)
+ if [[ ${current_lapack} == "${me}" || -z ${current_lapack} ]]; then
+ eselect lapack set ${libdir} ${me}
+ elog "Current eselect: LAPACK ($libdir) -> [${current_lapack}]."
+ else
+ elog "Current eselect: LAPACK ($libdir) -> [${current_lapack}]."
+ elog "To use lapack [${me}] implementation, you have to issue (as root):"
+ elog "\t eselect lapack set ${libdir} ${me}"
+ fi
+}
+
+pkg_postrm() {
+ if use eselect-ldso; then
+ eselect blas validate
+ eselect lapack validate
+ fi
+}
next reply other threads:[~2020-10-29 20:16 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-29 20:16 Sam James [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-02-06 10:02 [gentoo-commits] repo/gentoo:master commit in: sci-libs/openblas/files/, sci-libs/openblas/ Nowa Ammerlaan
2023-07-13 18:56 Michael Orlitzky
2023-07-07 0:31 Michael Orlitzky
2022-05-13 12:58 WANG Xuerui
2022-04-27 21:18 Jakov Smolić
2020-09-18 23:25 Sam James
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1604001779.bb8882671371c6fe665f279a4f41fd0199d28903.sam@gentoo \
--to=sam@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox