From c4b9ecb4783c8af3e34c194bf9db2182ed8fe2ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Tue, 24 Mar 2026 04:13:39 +0100 Subject: [PATCH] sci-libs/openblas: Bump to 0.3.32 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- sci-libs/openblas/Manifest | 1 + sci-libs/openblas/openblas-0.3.32.ebuild | 182 +++++++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 sci-libs/openblas/openblas-0.3.32.ebuild diff --git a/sci-libs/openblas/Manifest b/sci-libs/openblas/Manifest index 4c558875132b3..d4caeaeaef99c 100644 --- a/sci-libs/openblas/Manifest +++ b/sci-libs/openblas/Manifest @@ -1,2 +1,3 @@ DIST OpenBLAS-0.3.30.tar.gz 24699801 BLAKE2B 8a2fa304a44355bab128fd965054591570bd7fd5877a71a32420bfe6f4fe9bf6e77f3a4c363c91bcbad6862626783734d6e0111311d66a24e56f6175ae6f8799 SHA512 c726ced2d3e6ebd3ddcd0b13c255bb43fae8c12d2aec15e9ef992b0bc7099996c02cd284ccaaa7b5fac3f23f280b098063dd60f521d97a68dc183ab192fcccdb DIST OpenBLAS-0.3.31.tar.gz 25232810 BLAKE2B d4220ebd58a70bb776e310229a85e901869a4669174607ef941ecddd794571f6dc6b3aeffdbe4d219e187cf1def18f5b9e4faea4fe55fc8ca904985ee90f0cb6 SHA512 703b84c476c148a0922a04b1c33c9c4c452f478d608d93e59204b8f0f2c516344301ff0a4dbb3750a2449db0d28cc2df001c295898e859b41ecb8381f9c2eab8 +DIST OpenBLAS-0.3.32.tar.gz 25221171 BLAKE2B fa5135a5d0f38bb15e41c9e73bb34193c3497ee4eb1745066845cde46092b4859ab98c1649552ee760571ca84ebbb97984041508e9ab6c7cbab0c77f9c2b55f8 SHA512 5aac0c41a78bca872439bcde67445dd12de27d9efd0d9db51e6e3a31dfa2d0f6a6c5ee1c1de2bf7ad2f89082259e67f27ddaeafb0553bb5f2ca9a90c8a3dde29 diff --git a/sci-libs/openblas/openblas-0.3.32.ebuild b/sci-libs/openblas/openblas-0.3.32.ebuild new file mode 100644 index 0000000000000..524b4d5050de9 --- /dev/null +++ b/sci-libs/openblas/openblas-0.3.32.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 +}