commit: bc128e8b9afd71ae3716ac4c204cf6458e751c8d
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 17 06:42:38 2026 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jan 17 07:04:52 2026 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bc128e8b
sci-libs/openblas: Bump to 0.3.31
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
sci-libs/openblas/Manifest | 1 +
sci-libs/openblas/openblas-0.3.31.ebuild | 182 +++++++++++++++++++++++++++++++
2 files changed, 183 insertions(+)
diff --git a/sci-libs/openblas/Manifest b/sci-libs/openblas/Manifest
index 11c29351123d..4c558875132b 100644
--- a/sci-libs/openblas/Manifest
+++ b/sci-libs/openblas/Manifest
@@ -1 +1,2 @@
DIST OpenBLAS-0.3.30.tar.gz 24699801 BLAKE2B
8a2fa304a44355bab128fd965054591570bd7fd5877a71a32420bfe6f4fe9bf6e77f3a4c363c91bcbad6862626783734d6e0111311d66a24e56f6175ae6f8799
SHA512
c726ced2d3e6ebd3ddcd0b13c255bb43fae8c12d2aec15e9ef992b0bc7099996c02cd284ccaaa7b5fac3f23f280b098063dd60f521d97a68dc183ab192fcccdb
+DIST OpenBLAS-0.3.31.tar.gz 25232810 BLAKE2B
d4220ebd58a70bb776e310229a85e901869a4669174607ef941ecddd794571f6dc6b3aeffdbe4d219e187cf1def18f5b9e4faea4fe55fc8ca904985ee90f0cb6
SHA512
703b84c476c148a0922a04b1c33c9c4c452f478d608d93e59204b8f0f2c516344301ff0a4dbb3750a2449db0d28cc2df001c295898e859b41ecb8381f9c2eab8
diff --git a/sci-libs/openblas/openblas-0.3.31.ebuild
b/sci-libs/openblas/openblas-0.3.31.ebuild
new file mode 100644
index 000000000000..524b4d5050de
--- /dev/null
+++ b/sci-libs/openblas/openblas-0.3.31.ebuild
@@ -0,0 +1,182 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic fortran-2 toolchain-funcs
+
+MY_P=OpenBLAS-${PV}
+DESCRIPTION="Optimized BLAS library based on GotoBLAS2"
+HOMEPAGE="https://github.com/OpenMathLib/OpenBLAS"
+SRC_URI="https://github.com/OpenMathLib/OpenBLAS/releases/download/v${PV}/${MY_P}.tar.gz"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86 ~x64-macos"
+IUSE="cpudetection index64 openmp pthread relapack test"
+REQUIRED_USE="?? ( openmp pthread )"
+RESTRICT="!cpudetection? ( bindist ) !test? ( test )"
+
+BDEPEND="virtual/pkgconfig"
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+
+ 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() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+
+ fortran-2_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # TODO: Unbundle lapack like Fedora does?
+ #
https://src.fedoraproject.org/rpms/openblas/blob/rawhide/f/openblas-0.2.15-system_lapack.patch
+
+ # Don't build the tests as part of "make all". We'll do
+ # it explicitly later if the test phase is enabled.
+ sed -i -e "/^all :: tests/s: tests::g" Makefile || die
+
+ # If 64bit-index is needed, create second library with
LIBPREFIX=libopenblas64
+ if use index64; then
+ cp -aL "${S}" "${S}-index64" || die
+ fi
+}
+
+src_configure() {
+ # List of most configurable options is in Makefile.rule.
+
+ # Not an easy fix, https://github.com/xianyi/OpenBLAS/issues/4128
+ filter-lto
+
+ tc-export CC FC LD AR AS RANLIB
+
+ # HOSTCC is used for scripting
+ export HOSTCC="$(tc-getBUILD_CC)"
+
+ # Threading options
+ export USE_THREAD=0
+ export USE_OPENMP=0
+ if use openmp; then
+ USE_THREAD=1
+ USE_OPENMP=1
+ elif use pthread; then
+ USE_THREAD=1
+ USE_OPENMP=0
+ fi
+
+ # 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
+ if use cpudetection ; then
+ export DYNAMIC_ARCH=1 NO_AFFINITY=1 TARGET=GENERIC
+ fi
+
+ case $(tc-get-ptr-size) in
+ 4)
+ # NUM_BUFFERS = MAX(50, (2*NUM_PARALLEL*NUM_THREADS)
+ # BUFFER_SIZE = (16 << 20) (on x86)
+ # NUM_BUFFERS * BUFFER_SIZE is allocated and must be
+ # <4GiB on 32-bit arches (bug #967251).
+ #
+ # Scale down to 2*8*(16 << 20) = 256MiB for 32-bit
+ # arches. This avoids spinning in blas_memory_alloc
+ # which doesn't handle ENOMEM.
+ export NUM_PARALLEL=${OPENBLAS_NPARALLEL:-2}
+ export NUM_THREADS=${OPENBLAS_NTHREAD:-8}
+ ;;
+ 8)
+ # XXX: The current values here rely on overcommit
+ # for most systems (bug #967026).
+ export NUM_PARALLEL=${OPENBLAS_NPARALLEL:-8}
+ export NUM_THREADS=${OPENBLAS_NTHREAD:-64}
+ ;;
+ *)
+ die "Unexpected tc-get-ptr-size. Please file a bug."
+ ;;
+ esac
+
+ # Allow 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 cpudetection ; then
+ if [[ -n "${OPENBLAS_TARGET}" ]] ; then
+ export TARGET="${OPENBLAS_TARGET}"
+ elif [[ ${CBUILD} != ${CHOST} ]] ; then
+ case ${CHOST} in
+ aarch64-*)
+ export TARGET="ARMV8"
+ export BINARY="64"
+ ;;
+ powerpc64le-*)
+ export TARGET="POWER8"
+ export BUILD_BFLOAT16=1
+ export BINARY=64
+ ;;
+ esac
+ fi
+ fi
+
+ export NO_STATIC=1
+ export BUILD_RELAPACK=$(usex relapack 1 0)
+ export PREFIX="${EPREFIX}/usr"
+}
+
+emake64() {
+ emake -C "${S}-index64" \
+ INTERFACE64=1 \
+ LIBNAMESUFFIX=64 \
+ "${@}"
+}
+
+src_compile() {
+ emake shared
+
+ if use index64; then
+ emake64 shared
+ fi
+}
+
+src_test() {
+ emake tests
+
+ if use index64; then
+ emake64 tests
+ fi
+}
+
+src_install() {
+ local libdir=$(get_libdir)
+ emake install \
+ DESTDIR="${D}" \
+ OPENBLAS_INCLUDE_DIR='$(PREFIX)'/include/openblas \
+ OPENBLAS_LIBRARY_DIR='$(PREFIX)'/${libdir}
+
+ dodoc GotoBLAS_*.txt *.md Changelog.txt
+
+ if use index64; then
+ emake64 install \
+ DESTDIR="${D}" \
+ OPENBLAS_INCLUDE_DIR='$(PREFIX)'/include/openblas64 \
+ OPENBLAS_LIBRARY_DIR='$(PREFIX)'/${libdir}
+ fi
+}